@wildo-ai/saas-models 1.1.0 → 1.1.2

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 (292) hide show
  1. package/dist/esm/applications/applications-context.schemas.d.ts +2 -0
  2. package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
  3. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts +1 -1
  4. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts.map +1 -1
  5. package/dist/esm/billing/billing-account.shared.resources-config.schemas.js +36 -0
  6. package/dist/esm/billing/billing-account.shared.resources-config.schemas.js.map +1 -1
  7. package/dist/esm/billing/billing-account.shared.schemas.d.ts.map +1 -1
  8. package/dist/esm/billing/billing-account.shared.schemas.js +8 -1
  9. package/dist/esm/billing/billing-account.shared.schemas.js.map +1 -1
  10. package/dist/esm/billing/billing-types.shared.schemas.d.ts +2 -2
  11. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts +1 -1
  12. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts.map +1 -1
  13. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js +39 -0
  14. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js.map +1 -1
  15. package/dist/esm/billing/credit-pool.shared.schemas.d.ts +6 -6
  16. package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
  17. package/dist/esm/billing/credit-pool.shared.schemas.js +8 -4
  18. package/dist/esm/billing/credit-pool.shared.schemas.js.map +1 -1
  19. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts +1 -1
  20. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
  21. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js +35 -0
  22. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js.map +1 -1
  23. package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
  24. package/dist/esm/billing/invoice-ref.shared.schemas.js +8 -3
  25. package/dist/esm/billing/invoice-ref.shared.schemas.js.map +1 -1
  26. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +1 -1
  27. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
  28. package/dist/esm/billing/subscription.shared.resources-config.schemas.js +39 -0
  29. package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
  30. package/dist/esm/billing/subscription.shared.schemas.d.ts +4 -4
  31. package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
  32. package/dist/esm/billing/subscription.shared.schemas.js +6 -2
  33. package/dist/esm/billing/subscription.shared.schemas.js.map +1 -1
  34. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts +1 -1
  35. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.map +1 -1
  36. package/dist/esm/billing/usage-record.shared.resources-config.schemas.js +39 -0
  37. package/dist/esm/billing/usage-record.shared.resources-config.schemas.js.map +1 -1
  38. package/dist/esm/billing/usage-record.shared.schemas.d.ts +4 -4
  39. package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
  40. package/dist/esm/billing/usage-record.shared.schemas.js +7 -3
  41. package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
  42. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
  43. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js +35 -2
  44. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js.map +1 -1
  45. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +61 -0
  46. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
  47. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +58 -0
  48. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
  49. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
  50. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +14 -0
  51. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
  52. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts +49 -0
  53. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
  54. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.js +124 -1
  55. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.js.map +1 -1
  56. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts +11 -3
  57. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
  58. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js +11 -3
  59. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js.map +1 -1
  60. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +93 -0
  61. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -0
  62. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +116 -0
  63. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -0
  64. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts +67 -12
  65. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts.map +1 -1
  66. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js +95 -8
  67. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js.map +1 -1
  68. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts +21 -1
  69. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
  70. package/dist/esm/compliance/privacy/redaction.shared.schemas.js +20 -0
  71. package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
  72. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +2 -0
  73. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
  74. package/dist/esm/config/app-configuration-shared.shared.schemas.js +29 -0
  75. package/dist/esm/config/app-configuration-shared.shared.schemas.js.map +1 -1
  76. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts +33 -0
  77. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
  78. package/dist/esm/config/frontend/navigation.shared.schemas.js +32 -0
  79. package/dist/esm/config/frontend/navigation.shared.schemas.js.map +1 -1
  80. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +12 -1
  81. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
  82. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +12 -1
  83. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
  84. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +13 -0
  85. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
  86. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
  87. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +6 -6
  88. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
  89. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +26 -6
  90. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
  91. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
  92. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +0 -2
  93. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
  94. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +1 -0
  95. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
  96. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +4 -3
  97. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
  98. package/dist/esm/external-providers/provider-capability.shared.schemas.js +4 -3
  99. package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
  100. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts +1 -1
  101. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
  102. package/dist/esm/features/user-features.shared.resources-config.schemas.js +48 -0
  103. package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
  104. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts +144 -0
  105. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -0
  106. package/dist/esm/files/file-upload-grant.shared.schemas.js +136 -0
  107. package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -0
  108. package/dist/esm/files/files.shared.schemas.d.ts +45 -4
  109. package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
  110. package/dist/esm/files/files.shared.schemas.js +48 -4
  111. package/dist/esm/files/files.shared.schemas.js.map +1 -1
  112. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts +1 -1
  113. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  114. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.js +33 -0
  115. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.js.map +1 -1
  116. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
  117. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.js +6 -2
  118. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.js.map +1 -1
  119. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts +1 -1
  120. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
  121. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.js +53 -0
  122. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.js.map +1 -1
  123. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts +1 -1
  124. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts.map +1 -1
  125. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.js +43 -0
  126. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.js.map +1 -1
  127. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
  128. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +8 -3
  129. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
  130. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts +1 -1
  131. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts.map +1 -1
  132. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.js +41 -0
  133. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.js.map +1 -1
  134. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts +0 -7
  135. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.map +1 -1
  136. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.js +23 -13
  137. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.js.map +1 -1
  138. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts +1 -1
  139. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
  140. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.js +51 -0
  141. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.js.map +1 -1
  142. package/dist/esm/guidance/guidance-state.shared.schemas.d.ts.map +1 -1
  143. package/dist/esm/guidance/guidance-state.shared.schemas.js +8 -2
  144. package/dist/esm/guidance/guidance-state.shared.schemas.js.map +1 -1
  145. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts +1 -1
  146. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
  147. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.js +51 -0
  148. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.js.map +1 -1
  149. package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
  150. package/dist/esm/guidance/lifecycle-state.shared.schemas.js +28 -3
  151. package/dist/esm/guidance/lifecycle-state.shared.schemas.js.map +1 -1
  152. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +1 -1
  153. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
  154. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.js +51 -0
  155. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.js.map +1 -1
  156. package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
  157. package/dist/esm/guidance/progression-state.shared.schemas.js +18 -4
  158. package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
  159. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +37 -3
  160. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
  161. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +29 -3
  162. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
  163. package/dist/esm/index.d.ts +6 -0
  164. package/dist/esm/index.d.ts.map +1 -1
  165. package/dist/esm/index.js +6 -0
  166. package/dist/esm/index.js.map +1 -1
  167. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts +70 -0
  168. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts.map +1 -0
  169. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.js +71 -0
  170. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.js.map +1 -0
  171. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts +1 -1
  172. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
  173. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js +36 -0
  174. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js.map +1 -1
  175. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts +1 -1
  176. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
  177. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js +44 -0
  178. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js.map +1 -1
  179. package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
  180. package/dist/esm/organizations/organization-members.shared.schemas.js +15 -4
  181. package/dist/esm/organizations/organization-members.shared.schemas.js.map +1 -1
  182. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
  183. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +18 -10
  184. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
  185. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
  186. package/dist/esm/queue/jobs.shared.resources-config.schemas.js +17 -0
  187. package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
  188. package/dist/esm/requests/websocket.shared.schemas.d.ts +59 -0
  189. package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
  190. package/dist/esm/requests/websocket.shared.schemas.js +103 -0
  191. package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
  192. package/dist/esm/resources/collection-query-parameters.shared.d.ts +22 -0
  193. package/dist/esm/resources/collection-query-parameters.shared.d.ts.map +1 -0
  194. package/dist/esm/resources/collection-query-parameters.shared.js +22 -0
  195. package/dist/esm/resources/collection-query-parameters.shared.js.map +1 -0
  196. package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
  197. package/dist/esm/resources/resources-config.shared.factory.js +86 -13
  198. package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
  199. package/dist/esm/resources/resources-config.shared.schemas.d.ts +162 -41
  200. package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
  201. package/dist/esm/resources/resources-config.shared.schemas.js +109 -20
  202. package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
  203. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
  204. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js +21 -6
  205. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js.map +1 -1
  206. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +57 -0
  207. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
  208. package/dist/esm/security/authentications/authentication.shared.schemas.js +64 -0
  209. package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
  210. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts +17 -1
  211. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
  212. package/dist/esm/security/authentications/consumable-token.shared.schemas.js +16 -0
  213. package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
  214. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.d.ts +28 -0
  215. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.d.ts.map +1 -0
  216. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.js +28 -0
  217. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.js.map +1 -0
  218. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts +21 -0
  219. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -0
  220. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js +21 -0
  221. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -0
  222. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts +1 -1
  223. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  224. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +43 -0
  225. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
  226. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts +0 -8
  227. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
  228. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js +13 -4
  229. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
  230. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts +16 -1
  231. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
  232. package/dist/esm/security/authorizations/roles.shared.schemas.js +16 -1
  233. package/dist/esm/security/authorizations/roles.shared.schemas.js.map +1 -1
  234. package/dist/esm/security/authorizations/roles.shared.utils.d.ts +54 -0
  235. package/dist/esm/security/authorizations/roles.shared.utils.d.ts.map +1 -1
  236. package/dist/esm/security/authorizations/roles.shared.utils.js +59 -0
  237. package/dist/esm/security/authorizations/roles.shared.utils.js.map +1 -1
  238. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +61 -0
  239. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
  240. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js +13 -1
  241. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
  242. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts +1 -1
  243. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts.map +1 -1
  244. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.js +35 -0
  245. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.js.map +1 -1
  246. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
  247. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js +7 -1
  248. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
  249. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts +1 -1
  250. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts.map +1 -1
  251. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js +34 -0
  252. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js.map +1 -1
  253. package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
  254. package/dist/esm/users/inbound-contacts.shared.schemas.js +7 -4
  255. package/dist/esm/users/inbound-contacts.shared.schemas.js.map +1 -1
  256. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts +1 -1
  257. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
  258. package/dist/esm/users/user-credentials.shared.resources-config.schemas.js +37 -0
  259. package/dist/esm/users/user-credentials.shared.resources-config.schemas.js.map +1 -1
  260. package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
  261. package/dist/esm/users/user-credentials.shared.schemas.js +17 -2
  262. package/dist/esm/users/user-credentials.shared.schemas.js.map +1 -1
  263. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts +1 -1
  264. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
  265. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.js +36 -0
  266. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.js.map +1 -1
  267. package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
  268. package/dist/esm/users/user-identity-links.shared.schemas.js +15 -5
  269. package/dist/esm/users/user-identity-links.shared.schemas.js.map +1 -1
  270. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +1 -1
  271. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  272. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js +53 -0
  273. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js.map +1 -1
  274. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts +1 -1
  275. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  276. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js +62 -0
  277. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js.map +1 -1
  278. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +1 -1
  279. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  280. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js +53 -0
  281. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js.map +1 -1
  282. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts +1 -1
  283. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  284. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.js +62 -0
  285. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.js.map +1 -1
  286. package/dist/esm/users/users.shared.schemas.d.ts +19 -0
  287. package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
  288. package/dist/esm/users/users.shared.schemas.js +41 -16
  289. package/dist/esm/users/users.shared.schemas.js.map +1 -1
  290. package/dist/tsconfig.build.tsbuildinfo +1 -1
  291. package/package.json +5 -6
  292. package/dist/esm/.builder.pid +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"organizations.shared.resources-config.schemas.js","sourceRoot":"","sources":["../../../../src/organizations/organizations.shared.resources-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAA8C,MAAM,uCAAuC,CAAC;AAC/H,OAAO,EAAE,gBAAgB,EAAE,kCAAkC,EAAE,MAAM,gDAAgD,CAAC;AACtH,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAExH,OAAO,EAAE,0CAA0C,EAAE,MAAM,8CAA8C,CAAC;AAC1G,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAExF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAGjG;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAN,IAAY,iCAoBX;AApBD,WAAY,iCAAiC;IAC3C,0DAAqB,CAAA;IACrB,wDAAmB,CAAA;IACnB;;;;;;;OAOG;IACH,0EAAqC,CAAA;IACrC;;;;;;OAMG;IACH,wDAAmB,CAAA;AACrB,CAAC,EApBW,iCAAiC,KAAjC,iCAAiC,QAoB5C;AAED,MAAM,8BAA8B,GAAG,CAAC,QAAQ,CAAC,CAAC;AAElD,MAAM,gCAAgC,GAAG;IACvC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;CACnC,CAAC;AAUF;;EAEE;AACF,MAAM,CAAC,MAAM,uDAAuD,GAAG,CAAC,sBAA8C,EAAE,EAAE,CAAC,0CAA0C,CAInK;IACA,UAAU,EAAE,kBAAkB;IAC9B,kBAAkB,EAAE,gBAAgB,CAAC,aAAa;IAClD,uBAAuB,EAAE,kCAAkC,CAAC,gBAAgB,CAAC,aAAa,CAAC;IAC3F,qBAAqB,EAAE,sBAAsB;IAC7C,gBAAgB,EAAE,IAAI,EAAE,2CAA2C;IACnE,4EAA4E;IAC5E,8EAA8E;IAC9E,+EAA+E;IAC/E,uDAAuD;IACvD,kBAAkB,EAAE,EAAE,IAAI,EAAE,wBAAwB,CAAC,OAAO,EAAE;IAE9D,cAAc,EAAE;QACd,qBAAqB,CAAC,IAAI;QAC1B,qBAAqB,CAAC,IAAI;QAC1B,qBAAqB,CAAC,MAAM;QAC5B,qBAAqB,CAAC,MAAM;QAC5B,qBAAqB,CAAC,MAAM;QAC5B,qBAAqB,CAAC,MAAM;KAC7B;IAED,eAAe,EAAE,iCAAiC;IAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,uBAAuB,EAAE;QACvB,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE;YAC9B,QAAQ,EAAE;gBACR;oBACE,wEAAwE;oBACxE,yEAAyE;oBACzE,yEAAyE;oBACzE,yEAAyE;oBACzE,sEAAsE;oBACtE,0DAA0D;oBAC1D,WAAW,EAAE,4BAA4B,CAAC,aAAa;oBACvD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,EAAE;oBACT,SAAS,EAAE,0BAA0B,CAAC,MAAM;iBAC7C;gBACD;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,qHAAqH;oBACvJ,SAAS,EAAE,0BAA0B,CAAC,MAAM;oBAC5C,qFAAqF;oBACrF,qFAAqF;oBACrF,uFAAuF;oBACvF,gEAAgE;iBACjE;gBACD;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,OAAO;oBACnB,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,oFAAoF;oBACnI,SAAS,EAAE,0BAA0B,CAAC,GAAG;oBACzC,qFAAqF;iBACtF;aACF;YACD,iBAAiB,EAAE;gBACjB;oBACE,MAAM,EAAE,0BAA0B,CAAC,SAAS;oBAC5C,OAAO,EAAE,2BAA2B,CAAC,KAAK;iBAC3C;gBACD;oBACE,MAAM,EAAE,0BAA0B,CAAC,SAAS;oBAC5C,OAAO,EAAE,2BAA2B,CAAC,iBAAiB;iBACvD;aACF;SACF;QAED,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;YAC5B,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,0CAA0C;oBAC9E,SAAS,EAAE,0BAA0B,CAAC,GAAG;iBAC1C;gBACD;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,OAAO;oBACnB,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,2FAA2F;oBAC1I,SAAS,EAAE,0BAA0B,CAAC,GAAG;iBAC1C;aACF;SACF;QAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2CG;QACH,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;YAC5B,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,6GAA6G;oBAC5J,SAAS,EAAE,0BAA0B,CAAC,GAAG;oBACzC,YAAY,EAAE,gCAAgC;oBAC9C,UAAU,EAAE,8BAA8B;iBAC3C;aACF;SACF;QAED,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE;YAC9B,QAAQ,EAAE,CAAC;oBACT,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,yCAAyC;oBACxF,SAAS,EAAE,0BAA0B,CAAC,GAAG;oBACzC,YAAY,EAAE,IAAI;oBAClB,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;oBAC3C,iBAAiB,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;oBACjE,YAAY,EAAE,gCAAgC;oBAC9C,UAAU,EAAE,8BAA8B;oBAC1C,8BAA8B,EAAE,GAAG;iBACpC,CAAC;SACH;QAED,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE;YAC9B,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,2CAA2C;oBAC9E,SAAS,EAAE,0BAA0B,CAAC,MAAM;oBAC5C,qEAAqE;oBACrE,6EAA6E;oBAC7E,4EAA4E;oBAC5E,gFAAgF;oBAChF,6DAA6D;iBAC9D;gBACD;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,OAAO;oBACnB,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,qCAAqC;oBACpF,SAAS,EAAE,0BAA0B,CAAC,GAAG;oBACzC,qEAAqE;oBACrE,qEAAqE;oBACrE,kCAAkC;iBACnC;aACF;YACD,iBAAiB,EAAE;gBACjB;oBACE,MAAM,EAAE,0BAA0B,CAAC,2BAA2B;oBAC9D,OAAO,EAAE,2BAA2B,CAAC,KAAK;iBAC3C;aACF;SACF;QAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAwCG;QACH,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE;YAC9B,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,4BAA4B,CAAC,aAAa;oBACvD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,EAAE;oBACT,SAAS,EAAE,0BAA0B,CAAC,QAAQ;iBAC/C;gBACD;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,OAAO;oBACnB,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC;oBAC7C,SAAS,EAAE,0BAA0B,CAAC,IAAI;oBAC1C,EAAE;oBACF,0FAA0F;oBAC1F,wDAAwD;oBACxD,wFAAwF;oBACxF,EAAE;oBACF,2FAA2F;oBAC3F,qFAAqF;oBACrF,2FAA2F;oBAC3F,8CAA8C;oBAC9C,EAAE;oBACF,mFAAmF;oBACnF,qFAAqF;oBACrF,0FAA0F;oBAC1F,2FAA2F;oBAC3F,oFAAoF;oBACpF,EAAE;oBACF,wFAAwF;oBACxF,yFAAyF;oBACzF,0FAA0F;oBAC1F,2FAA2F;oBAC3F,uEAAuE;oBACvE,EAAE;oBACF,2FAA2F;oBAC3F,iFAAiF;oBACjF,yFAAyF;oBACzF,2FAA2F;oBAC3F,uFAAuF;oBACvF,4CAA4C;oBAC5C,EAAE;oBACF,yFAAyF;oBACzF,0FAA0F;oBAC1F,kFAAkF;oBAClF,0FAA0F;oBAC1F,yFAAyF;oBACzF,wFAAwF;oBACxF,mFAAmF;oBACnF,EAAE;oBACF,sFAAsF;oBACtF,kEAAkE;oBAClE,EAAE;oBACF,EAAE;oBACF,2FAA2F;oBAC3F,qFAAqF;oBACrF,sFAAsF;oBACtF,2EAA2E;oBAC3E,EAAE;oBACF,4GAA4G;oBAC5G,4BAA4B,EAAE,IAAI;iBACnC;aACF;SACF;QAED,CAAC,iCAAiC,CAAC,QAAQ,CAAC,EAAE;YAC5C,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC;oBAC7C,SAAS,EAAE,0BAA0B,CAAC,MAAM;oBAC5C,qBAAqB,EAAE,qBAAqB,CAAC,MAAM;oBACnD,0FAA0F;oBAC1F,wFAAwF;oBACxF,0FAA0F;oBAC1F,0FAA0F;oBAC1F,2FAA2F;oBAC3F,0FAA0F;oBAC1F,6DAA6D;oBAC7D,uCAAuC,EAAE,IAAI;oBAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;wBACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;qBACvC,CAAC;oBACF,uEAAuE;oBACvE,sEAAsE;oBACtE,+DAA+D;oBAC/D,kEAAkE;oBAClE,qEAAqE;oBACrE,kDAAkD;oBAClD,wEAAwE;oBACxE,uEAAuE;oBACvE,mCAAmC;oBACnC,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;wBACtC,OAAO,CACL,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,SAAS;4BACrD,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,aAAa,CAC1D,CAAC;oBACJ,CAAC;oBACD,yFAAyF;oBACzF,oFAAoF;oBACpF,sFAAsF;oBACtF,yFAAyF;oBACzF,qFAAqF;oBACrF,wFAAwF;oBACxF,wFAAwF;oBACxF,6EAA6E;oBAC7E,uFAAuF;oBACvF,sFAAsF;iBACvF;aACF;YACD,iBAAiB,EAAE;gBACjB;oBACE,MAAM,EAAE,0BAA0B,CAAC,2BAA2B;oBAC9D,OAAO,EAAE,2BAA2B,CAAC,KAAK;iBAC3C;aACF;SACF;QAED,CAAC,iCAAiC,CAAC,OAAO,CAAC,EAAE;YAC3C,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,8CAA8C;oBAC7F,SAAS,EAAE,0BAA0B,CAAC,QAAQ;oBAC9C,qBAAqB,EAAE,qBAAqB,CAAC,MAAM;oBACnD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;wBACnB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;wBAC5C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;qBACzC,CAAC;oBACF,uEAAuE;oBACvE,qEAAqE;oBACrE,wEAAwE;oBACxE,uEAAuE;oBACvE,kDAAkD;oBAClD,oEAAoE;oBACpE,wEAAwE;oBACxE,2CAA2C;oBAC3C,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;wBACtC,OAAO,CACL,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM;4BAClD,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,KAAK,CAClD,CAAC;oBACJ,CAAC;oBACD,wFAAwF;oBACxF,qFAAqF;iBACtF;aACF;YACD,iBAAiB,EAAE;gBACjB;oBACE,MAAM,EAAE,0BAA0B,CAAC,kBAAkB;oBACrD,OAAO,EAAE,2BAA2B,CAAC,KAAK;oBAC1C,+EAA+E;oBAC/E,EAAE;oBACF,oFAAoF;oBACpF,0FAA0F;oBAC1F,qFAAqF;oBACrF,yFAAyF;oBACzF,kEAAkE;oBAClE,EAAE;oBACF,mFAAmF;oBACnF,mCAAmC;oBACnC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAE,QAAoD,EAAE,aAAa,KAAK,KAAK;iBAC5G;aACF;SACF;QAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAqCG;QACH,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,EAAE;YACpD,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,4DAA4D;oBAC/F,SAAS,EAAE,0BAA0B,CAAC,QAAQ;oBAC9C,qBAAqB,EAAE,qBAAqB,CAAC,MAAM;oBACnD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;wBACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;qBACvC,CAAC;oBACF,4BAA4B,EAAE,IAAI;oBAClC,sFAAsF;oBACtF,oFAAoF;oBACpF,yEAAyE;oBACzE,yFAAyF;oBACzF,sFAAsF;oBACtF,kEAAkE;oBAClE,EAAE;oBACF,oFAAoF;oBACpF,kEAAkE;oBAClE,8EAA8E;oBAC9E,iFAAiF;oBACjF,uFAAuF;oBACvF,4EAA4E;oBAC5E,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;wBACtC,OAAO,CACL,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM;4BAClD,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,KAAK;4BACjD,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,aAAa;4BACzD,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,SAAS,CACtD,CAAC;oBACJ,CAAC;oBACD,sFAAsF;oBACtF,uFAAuF;oBACvF,gFAAgF;iBACjF;gBACD;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,OAAO;oBACnB,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC;oBAC7C,uFAAuF;oBACvF,2FAA2F;oBAC3F,wFAAwF;oBACxF,6DAA6D;oBAC7D,EAAE;oBACF,uFAAuF;oBACvF,wFAAwF;oBACxF,4EAA4E;oBAC5E,EAAE;oBACF,uFAAuF;oBACvF,yFAAyF;oBACzF,0FAA0F;oBAC1F,wBAAwB;oBACxB,uCAAuC,EAAE,IAAI;oBAC7C,SAAS,EAAE,0BAA0B,CAAC,IAAI;oBAC1C,qBAAqB,EAAE,qBAAqB,CAAC,MAAM;oBACnD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;wBACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;qBACvC,CAAC;oBACF,yFAAyF;oBACzF,2EAA2E;oBAC3E,4BAA4B,EAAE,IAAI;oBAClC,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;wBACtC,OAAO,CACL,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM;4BAClD,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,KAAK;4BACjD,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,aAAa;4BACzD,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,SAAS,CACtD,CAAC;oBACJ,CAAC;iBACF;aACF;YACD,iBAAiB,EAAE;gBACjB;oBACE,gFAAgF;oBAChF,sFAAsF;oBACtF,wFAAwF;oBACxF,MAAM,EAAE,0BAA0B,CAAC,kBAAkB;oBACrD,OAAO,EAAE,2BAA2B,CAAC,KAAK;iBAC3C;aACF;SACF;QAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0CG;QACH,CAAC,iCAAiC,CAAC,OAAO,CAAC,EAAE;YAC3C,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,8DAA8D;oBAC7G,SAAS,EAAE,0BAA0B,CAAC,IAAI;oBAC1C,2FAA2F;oBAC3F,2FAA2F;oBAC3F,uFAAuF;oBACvF,uFAAuF;oBACvF,wFAAwF;oBACxF,qFAAqF;oBACrF,EAAE;oBACF,2FAA2F;oBAC3F,0FAA0F;oBAC1F,sDAAsD;oBACtD,uCAAuC,EAAE,IAAI;oBAC7C,qBAAqB,EAAE,qBAAqB,CAAC,MAAM;oBACnD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;wBACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;qBACvC,CAAC;oBACF,sFAAsF;oBACtF,4DAA4D;oBAC5D,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;wBACtC,OAAO,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,OAAO,CAAC;oBAC7D,CAAC;iBACF;aACF;YACD,iBAAiB,EAAE;gBACjB;oBACE,MAAM,EAAE,0BAA0B,CAAC,kBAAkB;oBACrD,OAAO,EAAE,2BAA2B,CAAC,KAAK;iBAC3C;aACF;SACF;KACF;CAEF,CAAC,CAAC","sourcesContent":["/**\n * Organization Shared DTO Schemas\n *\n * Operation schemas for organization management.\n * Separated into App Admin concerns and Organization self-management.\n */\n\nimport { z } from 'zod';\nimport {\n OrganizationSchema,\n OrganizationStatus,\n} from './organizations.shared.schemas';\nimport { CoreResourceOperation } from '../resources/resources.shared.core.definitions';\nimport { ResourceOperationRiskLevel, ResourcePrimaryScope, ResourceRelationship } from '../resources/resources.shared.schemas';\nimport { CoreResourceType, coreResourceShared_FieldIdentifier } from '../resources/resources.shared.core.definitions';\nimport { ResourceOperationVariantType } from '../resources/resources.shared.schemas';\nimport { CoreUserNotificationTarget, CoreUserNotificationChannel } from '../notifications/notifications.shared.schemas';\n\nimport { createResourceConfiguration_Initialization } from '../resources/resources-config.shared.factory';\nimport { ResourceSystemAccessMode } from '../resources/resources-config.shared.schemas';\n\nimport { CORE_APP_ROLES, CORE_ORG_ROLES } from '../security/authorizations/roles.shared.schemas';\n\n\n/**\n * Tenant LIFECYCLE transitions — the operations that own `Organization.status`.\n *\n * Renamed from `Organization_AppAdmin_Operations` on 2026-08-01. The old name described the\n * AUDIENCE of the two members it happened to hold (`ACTIVATE`/`SUSPEND` are super-admin-only) and\n * stopped being true the moment an ORG_ADMIN-facing member joined it. The members share a\n * *concern*, not an audience: each is a guarded transition of the tenant state machine, declared\n * `resourceOperationLike: UPDATE`, gated by an `enabledCondition` on the current status, and the\n * sole authority for the `status` field that generic UPDATE may not write. The frontend already\n * called this concept by its right name — `organizationLifecycleOpViews` in the presets.\n *\n * `status` is `.excludeFromUpdate()`, so every transition here declares `authoritativeFields`\n * naming the fields its prefix owns; without that the repository's strict re-parse silently strips\n * the write and the operation answers success having changed nothing.\n */\nexport enum Organization_Lifecycle_Operations {\n ACTIVATE = 'activate',\n SUSPEND = 'suspend',\n /**\n * Mark the tenant for deletion — the SOFT-DELETE half of tenant teardown.\n *\n * Replaces the tenant-facing `DELETE` door, which now belongs to the purge batch. Writes\n * `status: DELETED` + `deletionRequestedAt` + `purgeScheduledAt`, reconciles every affected user's global\n * `userTypes`, and invalidates their tokens — so the tenant is authorization-dead immediately\n * while remaining fully data-alive and restorable until the window elapses.\n */\n REQUEST_DELETION = 'request_deletion',\n /**\n * Cancel a pending deletion inside the retention window.\n *\n * The inverse of {@link REQUEST_DELETION}. Nothing needs re-creating: authority is re-derived\n * from the membership rows the window deliberately preserved, which is exactly why those rows\n * are not touched at mark time.\n */\n RESTORE = 'restore',\n}\n\nconst ORGANIZATION_ADMIN_SORT_FIELDS = ['status'];\n\nconst ORGANIZATION_ADMIN_FILTER_FIELDS = {\n status: z.enum(OrganizationStatus),\n};\n\ntype OrganizationCoreOperations =\n | CoreResourceOperation.READ\n | CoreResourceOperation.LIST\n | CoreResourceOperation.SEARCH\n | CoreResourceOperation.CREATE\n | CoreResourceOperation.UPDATE\n | CoreResourceOperation.DELETE;\n\n/*\nOrganizations Resource Configuration Factory\n*/\nexport const organizationResourceConfiguration_InitializationFactory = (resourcesRelationships: ResourceRelationship[]) => createResourceConfiguration_Initialization<\n typeof Organization_Lifecycle_Operations,\n OrganizationCoreOperations,\n typeof OrganizationSchema\n>({\n mainSchema: OrganizationSchema,\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n resourceFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.ORGANIZATIONS],\n resourceRelationships: resourcesRelationships,\n isSystemResource: true, // Organizations are a core system resource\n // The invitation-accept auth flow reads the inviting org's display name via\n // `readAsSystem` to render the invite email — the invitee is not yet a member\n // and cannot satisfy the org READ ACL. READ-only; the request is authorized by\n // the consumable invitation token, not org membership.\n systemAccessPolicy: { read: ResourceSystemAccessMode.ALLOWED },\n\n coreOperations: [\n CoreResourceOperation.READ,\n CoreResourceOperation.LIST,\n CoreResourceOperation.SEARCH,\n CoreResourceOperation.CREATE,\n CoreResourceOperation.UPDATE,\n CoreResourceOperation.DELETE\n ],\n\n customOperation: Organization_Lifecycle_Operations,\n\n /**\n * ⚠️ WHAT `APP_ADMIN_SUPER_ADMIN` ACTUALLY BUYS ON THIS RESOURCE (measured 2026-08-05, not inferred)\n *\n * Every super-admin-gated variant below reads as cross-tenant (\"any organization\"). **It is not.**\n * A probe against the real authorization service with real Mongo denied ALL 12 of them to a\n * platform super-administrator who is not scoped to the target tenant; the same 12 allow once the\n * caller's execution context carries `initiatorIds.organizationId` equal to that tenant.\n *\n * The reason is that tenant isolation is enforced at two gates the role table does not reach:\n * `validateParentScopeAccess` (collection calls) and `authorizeOrganizations` (per-instance\n * calls). Both compare the request against the CALLER'S OWN organization. A role key, however\n * privileged, does not supply one.\n *\n * So these variants mean \"a super-admin acting INSIDE an organization\", not \"a super-admin acting\n * on any organization\". Read every `// Super admins can … any organization` comment below with\n * that correction applied — they were written from the role gate alone.\n *\n * Making one genuinely cross-tenant is a deliberate, per-variant act: declare\n * `admitsCrossTenantPlatformAdministration` on it, which admits the crossing at BOTH gates.\n *\n * ## Which variants are crossed, and why the line falls there (decided 2026-08-05)\n *\n * | Variant | Crossed | Reason |\n * |---|---|---|\n * | `restore` | ✅ | A MARKED tenant is `DELETED`, which confers no authority, so NOBODY could restore one. Recuperative. |\n * | `activate` | ✅ | `SUSPENDED` confers no authority and is the only state ACTIVATE runs from. Recuperative. |\n * | `requestDeletion: admin` | ✅ | The operator takedown path — but the REVERSIBLE one: mark + notify + window, undone by `restore`. |\n * | `delete: admin` | ❌ | Irreversible, whole-tenant, cascading, skips the window. See its own block for the full decision. |\n * | everything else | ❌ | No demonstrated operator need. Absence of a use case is a reason to stay shut. |\n *\n * The organising principle: **cross the boundary for actions a later action can undo.** Every\n * crossing above is recoverable, which is what lets the crossing be justified on operator need\n * alone. `delete: admin` is the inverse and is therefore held to a higher bar it does not yet\n * meet. `organizationMembers.grantOwnership` (the owner-floor repair door) follows the same rule\n * on the membership resource.\n *\n * See `.claude/rules/administrative-continuity-floors.md` and\n * `cross-tenant-super-admin-reach.mongo.integration.test.ts`.\n */\n operationsConfiguration: {\n [CoreResourceOperation.CREATE]: {\n variants: [\n {\n // Registration and registration-onboarding create organizations through\n // `ServicesRegistryHandlerBackendService.create()`. INTERNAL_CALL is the\n // service layer's native, route-less transport, so it gives that trusted\n // workflow a distinct operation identity instead of making it masquerade\n // as the public self-service endpoint. The organization CREATE prefix\n // allows creation-policy-managed types only on this path.\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isDefault: true,\n roles: [],\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_USER], // Any authenticated user can create their own organization (ownership is established by the create flow, not a role)\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n // DTOs auto-derived from decorators (excludeFromCreate on _id, createdAt, updatedAt)\n // `status` IS accepted on CREATE (it carries `.default(ACTIVE)`, so an omitted value\n // lands ACTIVE). Only UPDATE excludes it — see the field's JSDoc for why a tenant must\n // not be able to re-set its own lifecycle state after the fact.\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Not crossed — see the banner table; creation has no existing tenant to cross into\n riskLevel: ResourceOperationRiskLevel.LOW,\n // DTOs auto-derived from decorators (excludeFromCreate on _id, createdAt, updatedAt)\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.USER_SELF,\n channel: CoreUserNotificationChannel.EMAIL,\n },\n {\n target: CoreUserNotificationTarget.USER_SELF,\n channel: CoreUserNotificationChannel.FRONT_END_SUCCESS,\n }\n ]\n },\n\n [CoreResourceOperation.READ]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_ORG_ROLES.ORG_MEMBER], // Org members can view their organization\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Not crossed — see the banner table; a super-admin reads organizations they are scoped to\n riskLevel: ResourceOperationRiskLevel.LOW,\n }\n ]\n },\n\n /**\n * ⚠️ THE SCOPE-ROOT COLLECTION OPERATIONS — read this before changing LIST, SEARCH or the roles\n * either declares.\n *\n * `organizations` is the ONLY resource that is both ORGANIZATIONS-scoped and its own scope ROOT,\n * and that makes both of its collection reads special in a way no other resource's are.\n *\n * **Their roles resolve against the APPLICATION table, not the organization one.** There is no\n * `:organizationId` segment on `/organizations`, so `validateParentScopeAccess` cannot ask \"what\n * are your roles inside THIS tenant\" — it takes the scope-root branch and validates the declared\n * roles against the caller's APPLICATION-scope entries. Declaring an ORGANIZATION role on either\n * of these would therefore be unsatisfiable, not merely unusual.\n *\n * **Row confinement is NOT free here, and until 2026-08-11 it did not exist.** Every other\n * org-scoped resource is confined on its `organizationId` COLUMN; the tenant row has no such\n * column, so both persistence adapters lost the axis and a scope-root LIST compiled to the EMPTY\n * filter. The comment that used to sit on this line asserted the opposite — \"still filtered to\n * the caller's own organization\" — and was the reason the gate looked like the only thing\n * broken. Confinement now comes from `assignScopeRootCollectionConfinementToFilter`, which\n * restricts these reads to the tenants the caller holds an organization-WIDE role entry for.\n *\n * So a platform super-administrator sees THEIR OWN organizations here, not every tenant — which\n * is the same correction the banner above records for the other eleven super-admin variants. A\n * genuine cross-tenant directory is NOT available by declaring\n * `admitsCrossTenantPlatformAdministration`: that admission requires a usable platform-access\n * grant for a TARGET tenant, and a collection call has no target. See\n * `.claude/plans/organizations-scope-root-collection-gate-analysis.md`.\n *\n * ## ⚠️ If you are here because an operator \"cannot find the tenant id\", STOP\n *\n * That is the known and DELIBERATE consequence of the confinement, not a bug in it. An operator\n * needs an `organizationId` to request a platform-access grant, and no in-product surface yields\n * the id of a tenant they are not a member of.\n *\n * Widening this operation is the obvious fix and the wrong one: it re-opens the cross-tenant\n * disclosure the confinement closed, and hands the full customer list to every platform\n * administrator as a standing privilege — exactly what the grant mechanism was built to remove.\n *\n * The intended flow is that the id arrives from OUTSIDE the product, with the customer's support\n * ticket (Microsoft Customer Lockbox and Google Access Approval both work this way). The full\n * reasoning, and what a legitimate directory operation would look like instead, is on\n * `platformAccessGrants | requestAccess`'s `organizationId` field and in SEC-SCOPEROOT-5\n * (`.claude/plans/DEFERRED.md`).\n */\n [CoreResourceOperation.LIST]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Not crossed — resolved against the APPLICATION role table; rows confined to the caller's own organizations\n riskLevel: ResourceOperationRiskLevel.LOW,\n filterFields: ORGANIZATION_ADMIN_FILTER_FIELDS,\n sortFields: ORGANIZATION_ADMIN_SORT_FIELDS,\n }\n ]\n },\n\n [CoreResourceOperation.SEARCH]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Same scope-root contract as LIST above\n riskLevel: ResourceOperationRiskLevel.LOW,\n isSearchable: true,\n searchableFields: ['name', 'slug', 'email'],\n searchableOptions: { caseSensitive: false, fullMatchOnly: false },\n filterFields: ORGANIZATION_ADMIN_FILTER_FIELDS,\n sortFields: ORGANIZATION_ADMIN_SORT_FIELDS,\n maxPaginatedResultPerPageLimit: 100,\n }],\n },\n\n [CoreResourceOperation.UPDATE]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_ORG_ROLES.ORG_ADMIN], // Org admins can update their organization\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n // DTOs auto-derived from decorators (excludeFromUpdate on _id, type,\n // slug, status, createdAt, updatedAt). Organization-type transitions require\n // a dedicated dependent-policy migration, not a generic patch, and `status`\n // belongs to the SUSPEND / ACTIVATE verbs — this variant is ORG_ADMIN-gated, so\n // accepting it here let a suspended tenant reinstate itself.\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Not crossed — see the banner table\n riskLevel: ResourceOperationRiskLevel.LOW,\n // DTOs auto-derived from decorators (excludeFromUpdate on _id, type,\n // slug, createdAt, updatedAt). Super-admin scope does not make a raw\n // type rewrite semantically safe.\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.ORGANIZATION_ADMINISTRATIVE,\n channel: CoreUserNotificationChannel.EMAIL,\n }\n ]\n },\n\n /**\n * DELETE is the PURGE — the irreversible half of tenant teardown, reached at the END of the\n * retention window and no longer the tenant-facing door.\n *\n * ## Why the tenant-facing variant is gone\n *\n * Deleting a tenant used to be synchronous and immediate: one `DELETE /organizations/{id}` by\n * an ORG_ADMIN destroyed the tenant and everything the cascade reached. Tenant offboarding is\n * a job-shaped problem, not a request-shaped one, so it is now two phases —\n * {@link Organization_Lifecycle_Operations.REQUEST_DELETION} marks the tenant (and kills its\n * authority immediately), and this operation destroys it once\n * `Organization.purgeScheduledAt` has elapsed. Leaving an ORG_ADMIN-reachable synchronous\n * DELETE in place would have made the retention window optional for exactly the caller it\n * protects, which is the same as not having one.\n *\n * ## The two remaining doors\n *\n * - **INTERNAL_CALL (default)** — the route-less service transport the `organization-purge`\n * batch dispatches through. Route-less is the point: a window that any client can skip is\n * decorative. This mirrors CREATE on this same resource, whose default is likewise an\n * INTERNAL_CALL owned by a trusted workflow.\n * - **API_CALL `admin`** — the super-administrator's deliberate purge-now escape hatch, for a\n * legal-order or abuse takedown that cannot wait out the window. Kept because operators\n * genuinely need it and because forcing them to a database console would be strictly worse\n * for auditability: this door is role-gated, step-up-gated, and emits `ORGANIZATION_DELETED`\n * like any other purge. It SKIPS the retention window by design.\n *\n * ⚠️ Custom implementations resolve by an exact operation-path key that embeds `variantType`.\n * The default door changing from API_CALL to INTERNAL_CALL therefore MOVES the key that\n * `organization-deletion-audit.custom-impl.backend.service.ts` registers on — that file was\n * updated in the same pass. A hook left on the old key silently never runs.\n *\n * Cascading delete is handled via `childOperations.lifecycle.onParentDelete` on relationships.\n *\n * ⚠️ NO `userNotifications` here any more. They moved to `REQUEST_DELETION`, which is where\n * they can still reach anyone: telling an organization's users that it has been deleted, in\n * the same transaction that deletes those users' memberships, is a notification with no\n * audience — and the batch that triggers a purge has no initiating user context to render it\n * from. The members are told when the tenant is MARKED, which is also the only moment the\n * warning is actionable (it can still be restored).\n */\n [CoreResourceOperation.DELETE]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isDefault: true,\n roles: [],\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.HIGH,\n //\n // ⚠️ DELIBERATELY NOT CROSS-TENANT — the one super-admin door on this resource left shut,\n // decided 2026-08-05. Do not \"finish the job\" by adding\n // `admitsCrossTenantPlatformAdministration` here without re-opening the decision below.\n //\n // The tension is real and worth stating rather than hiding: the JSDoc above says this door\n // is kept because operators genuinely need it and because pushing them to a database\n // console would be strictly worse for auditability. Both halves argue for opening it. What\n // outweighs them is asymmetry of consequence.\n //\n // Every other crossing on this resource is recoverable. ACTIVATE un-halts, RESTORE\n // un-marks, REQUEST_DELETION marks-with-a-window. `grantOwnership` on the membership\n // resource is additive and idempotent. Their safety argument is \"one narrow effect that a\n // later action can undo\". This operation is the exact inverse: irreversible, whole-tenant,\n // cascading, and it SKIPS the window on purpose. There is no RESTORE after a purge.\n //\n // The security cost is a change of KIND, not degree. Today a compromised platform-admin\n // credential can destroy only tenants that principal is already scoped into — accidental\n // containment, but real containment. Crossing this one converts that same compromise into\n // \"any tenant, immediately\". `requiresStepUpAuthentication` answers a hijacked session; it\n // does not answer phished credentials with the second factor supplied.\n //\n // And the operational pressure that makes opening it feel urgent is mostly relieved by the\n // three doors that DID open: a legal-order or abuse takedown can now be executed\n // cross-tenant through REQUEST_DELETION (mark + notify + window), with RESTORE available\n // if the order is stayed or the abuse call was wrong. That covers the cited use cases with\n // a recovery path. What remains uncovered is only \"destroy within hours, irreversibly,\n // against a tenant the operator is not in\".\n //\n // If that residue must be covered, the answer is NOT this flag alone. Require, together:\n // a mandatory `justification` on the request DTO (as `organizationMembers.grantOwnership`\n // has), a distinct high-severity audit event separable from routine purges, and a\n // two-person rule. Instant irreversible cross-tenant destruction is the one capability in\n // this product that deserves a second SIGNATURE, not merely a second factor. Until those\n // exist, the honest operator answer is the window — or a database console with a change\n // ticket, which at least leaves a human trail outside the system it is destroying.\n //\n // assurance-control: WILDO.ACCESS.CROSS_TENANT_ADMINISTRATION — deliberate non-grant;\n // the blast radius of this verb is not admitted to platform tier.\n //\n //\n // Irreversible destruction of a whole tenant, and it cascades. A hijacked session must not\n // be able to do this on the strength of a login that happened at some earlier point:\n // `riskLevel` is UI-only, and the per-user-type `stepUpAuth` policy is opt-in, off by\n // default, and satisfied by any authentication newer than `maxAgeSeconds`.\n //\n // assurance-control: WILDO.IDENTITY.STEP_UP_AUTHENTICATION — re-authentication before a high-impact action.\n requiresStepUpAuthentication: true,\n }\n ],\n },\n\n [Organization_Lifecycle_Operations.ACTIVATE]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n // Cross-tenant, because otherwise this door cannot be opened by anyone. `SUSPENDED` is in\n // `ORGANIZATION_STATUSES_WITHOUT_AUTHORITY`, so a suspended tenant's own admins hold no\n // authority — and ACTIVATE is reachable only FROM `SUSPENDED` or `TRIAL_EXPIRED`. Without\n // the crossing, the only principal who could un-suspend a tenant is a super-administrator\n // who happens to already be a member of it, which is an accident of staffing rather than a\n // control. Purely recuperative: it moves a halted tenant back to operational and destroys\n // nothing, so admitting the crossing costs no reversibility.\n admitsCrossTenantPlatformAdministration: true,\n requestDto: z.object({\n reason: z.string().max(500).optional()\n }),\n // Conditional availability by org status. ACTIVATE re-enables a halted\n // or inactive organization, so it is available only from SUSPENDED or\n // TRIAL_EXPIRED — never from ACTIVE (a no-op) nor the terminal\n // CANCELLED / DELETED states. Evaluated on BOTH the frontend (the\n // action renders disabled otherwise, via `useOperationsEnabled`) AND\n // the backend (`services-registry-handler` throws\n // `SERVICE_RESOURCE_OPERATION_DISABLED` → 403 when false), so the guard\n // holds even if the client is bypassed. Keep in sync with the resource\n // spec's ACTIVATE error scenarios.\n enabledCondition: ({ currentObject }) => {\n return (\n currentObject.status === OrganizationStatus.SUSPENDED ||\n currentObject.status === OrganizationStatus.TRIAL_EXPIRED\n );\n },\n // NO `haveBulkOperation`. The generated bulk variant was removed on 2026-08-01: it could\n // never do bulk work. `assertBulkHookObjectContextAvailability` fails a bulk UPDATE\n // closed whenever its `enabledCondition` needs object context and no single persisted\n // `currentObject` is available — and the condition above reads `currentObject.status` by\n // construction, because the whole point is that ACTIVATE is only legal from specific\n // states. So a multi-org selector was refused (403) BY DESIGN and the variant only ever\n // worked with a one-element `_ids` array: a more expensive spelling of this variant, at\n // the cost of a second route and a second custom-implementation registration\n // (`isBulkOperation` is part of the operation-path key). Bulk suspension would require\n // abandoning the per-row state gate, which is not a trade this operation should make.\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.ORGANIZATION_ADMINISTRATIVE,\n channel: CoreUserNotificationChannel.EMAIL,\n }\n ]\n },\n\n [Organization_Lifecycle_Operations.SUSPEND]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Only super admins can suspend organizations\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: z.object({\n suspensionReason: z.string().min(1).max(500),\n notifyMembers: z.boolean().default(true)\n }),\n // Conditional availability by org status. SUSPEND halts an operational\n // organization, so it is available only from ACTIVE or TRIAL — never\n // from SUSPENDED (a no-op) nor the terminal CANCELLED / DELETED states.\n // Enforced on the frontend (the action renders disabled otherwise) AND\n // the backend (`services-registry-handler` throws\n // `SERVICE_RESOURCE_OPERATION_DISABLED` → 403), so re-suspending an\n // already-suspended org fails closed server-side. Keep in sync with the\n // resource spec's SUSPEND error scenarios.\n enabledCondition: ({ currentObject }) => {\n return (\n currentObject.status === OrganizationStatus.ACTIVE ||\n currentObject.status === OrganizationStatus.TRIAL\n );\n },\n // NO `haveBulkOperation` — same reasoning as ACTIVATE above. Suspending many tenants in\n // one request is exactly the operation whose per-row state gate must not be dropped.\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.ORGANIZATION_USERS,\n channel: CoreUserNotificationChannel.EMAIL,\n // Honours the `notifyMembers` flag the request contract has always advertised.\n //\n // Until this operation was implemented the flag was inert in the worst way: the DTO\n // accepted it, the caller could set it to `false`, and the declarative notification fired\n // regardless — a silent contract lie on an operation that emails an entire tenant. A\n // suspension is sometimes deliberately quiet (a fraud hold the operator does not want to\n // tip off), so this is a real capability rather than a formality.\n //\n // `!== false` rather than a truthy test: the field carries `.default(true)`, so an\n // omitted value must still notify.\n condition: ({ inputDto }) => (inputDto as { notifyMembers?: boolean } | undefined)?.notifyMembers !== false,\n }\n ]\n },\n\n /**\n * Mark the tenant for deletion — the SOFT-DELETE phase, and the door that replaced the\n * tenant-facing `DELETE`.\n *\n * ## What fires here, and what deliberately does not\n *\n * Authorization consequences fire NOW; data removal waits for the purge. The split is the\n * load-bearing part of the design:\n *\n * - **now** — `status: DELETED` + `deletionRequestedAt` + `purgeScheduledAt`; every affected user's\n * GLOBAL `user.userTypes` reconciled; their tokens invalidated. A global grant that exists\n * only because of this tenant must not outlive it by the length of the retention window —\n * that grant outliving its justification is the original defect this whole workstream\n * exists to fix, and deferring it to the purge would ship that defect with a longer fuse.\n * - **later (purge)** — membership rows, unit assignments and every other org child.\n *\n * The rule that decides which side a concern lands on: remove at mark time only what is\n * RE-DERIVABLE on restore. Org-scoped roles are re-derivable from the membership rows, so the\n * rows stay and the authority is recomputed per request from `status` (see\n * `isAuthorityConferringOrganizationStatus`). Global `userTypes` are NOT re-derivable that\n * way — they are a denormalized grant on the user row — so they are reconciled here, and\n * `restore` re-grants them.\n *\n * ## Audience limitation inherited from the DELETE door this replaces\n *\n * ⚠️ KNOWN, accepted deliberately. Re-authentication proves identity by PASSWORD only today,\n * and the framework DESTROYS `passwordHash` + passkeys for directory-managed (SCIM) users as a\n * compliance control (`_reconcileLocalCredentialsForDirectoryManaged`). So an ORG_ADMIN of a\n * directory-managed organization cannot satisfy the step-up gate and is refused. That is\n * fail-closed on the most destructive action available to a tenant, and the refusal is\n * diagnosable — the step-up round-trip ends in an explicit \"No password set for this account\".\n * Extending re-authentication to TOTP (which IS preserved for directory-managed users) removes\n * the limitation; until then such a tenant is marked through the `admin` variant below.\n *\n * assurance-control: WILDO.IDENTITY.STEP_UP_AUTHENTICATION — re-authentication before a high-impact\n * action; the tenant loses its access rights at the moment of the decision, not at the moment\n * its data is destroyed.\n */\n [Organization_Lifecycle_Operations.REQUEST_DELETION]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_ORG_ROLES.ORG_ADMIN], // Org admins can schedule their own organization's deletion\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: z.object({\n reason: z.string().max(500).optional()\n }),\n requiresStepUpAuthentication: true,\n // Available only from a state the tenant can still be marked FROM. Never from DELETED\n // (already marked — restore or wait for the purge) nor from the terminal CANCELLED.\n // Enforced on the frontend (the action renders disabled) AND the backend\n // (`services-registry-handler` throws `SERVICE_RESOURCE_OPERATION_DISABLED` → 403), so a\n // double-mark fails closed server-side and cannot silently re-arm the window. Keep in\n // sync with the resource spec's REQUEST_DELETION error scenarios.\n //\n // The condition is shared with the `admin` variant below, and the ROLE gate is what\n // makes them differ in practice: `SUSPENDED` confers no authority\n // (`ORGANIZATION_STATUSES_WITHOUT_AUTHORITY`), so on THIS variant that arm is\n // unreachable — an org admin cannot mark a tenant the platform has halted. It is\n // reachable on the `admin` variant, which is the intended shape: a suspended tenant is\n // under platform control, and the platform can still schedule its deletion.\n enabledCondition: ({ currentObject }) => {\n return (\n currentObject.status === OrganizationStatus.ACTIVE ||\n currentObject.status === OrganizationStatus.TRIAL ||\n currentObject.status === OrganizationStatus.TRIAL_EXPIRED ||\n currentObject.status === OrganizationStatus.SUSPENDED\n );\n },\n // NO `haveBulkOperation` — same reasoning as SUSPEND/ACTIVATE: the per-row state gate\n // above reads `currentObject.status`, and a bulk UPDATE whose `enabledCondition` needs\n // object context is failed closed by `assertBulkHookObjectContextAvailability`.\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n // Cross-tenant: this is the operator's takedown path, and it is the REVERSIBLE one. It\n // MARKS the tenant, notifies its users, and starts the retention window — every effect can\n // be undone by RESTORE (also crossed, immediately above; crossing one without the other\n // would hand operators a one-way door and call it a window).\n //\n // The JSDoc on the sibling org-admin variant already asserts this shape — \"a suspended\n // tenant is under platform control, and the platform can still schedule its deletion\" —\n // which was true of the role gate and false of the runtime until this flag.\n //\n // Deliberately the FIRST destructive door opened, and deliberately not the last one: a\n // legal-order or abuse takedown routed through MARK + window keeps a recovery path open,\n // which is what makes leaving instant purge closed (see DELETE `admin`) affordable rather\n // than merely cautious.\n admitsCrossTenantPlatformAdministration: true,\n riskLevel: ResourceOperationRiskLevel.HIGH,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: z.object({\n reason: z.string().max(500).optional()\n }),\n // The flag is per-VARIANT — nothing is inherited from the variant above. Marking someone\n // else's tenant for destruction is not a lesser act than marking your own.\n requiresStepUpAuthentication: true,\n enabledCondition: ({ currentObject }) => {\n return (\n currentObject.status === OrganizationStatus.ACTIVE ||\n currentObject.status === OrganizationStatus.TRIAL ||\n currentObject.status === OrganizationStatus.TRIAL_EXPIRED ||\n currentObject.status === OrganizationStatus.SUSPENDED\n );\n },\n }\n ],\n userNotifications: [\n {\n // The members ARE the audience here, and this is the only moment the warning is\n // actionable — the tenant can still be restored. This notification moved from DELETE,\n // where by the time it fired its recipients were being deleted in the same transaction.\n target: CoreUserNotificationTarget.ORGANIZATION_USERS,\n channel: CoreUserNotificationChannel.EMAIL,\n }\n ]\n },\n\n /**\n * Cancel a pending deletion — the inverse of\n * {@link Organization_Lifecycle_Operations.REQUEST_DELETION}, available for the whole\n * retention window.\n *\n * Restoring needs no data re-creation, and that is a property of the phase split rather than a\n * happy accident: the mark deliberately removed only what is re-derivable. Membership rows,\n * unit assignments and every other child were never touched, so clearing `status` re-arms\n * org-scoped authority on the next request for free. The one thing that WAS removed — each\n * affected user's global `userTypes` — is re-granted here from the same configuration that\n * granted it originally.\n *\n * ## Why the window is not re-checked here\n *\n * There is no \"too late to restore\" branch. If the purge has run, the row is gone and the\n * operation 404s at addressing; if the row is present, it is restorable. Encoding a second\n * time-based rule would create a state where a row exists but claims to be unrecoverable —\n * an unrecoverable row that still holds every one of its members' data is the worst of both\n * phases.\n *\n * Deliberately NOT step-up gated: restoring is the SAFE direction. Every other lifecycle verb\n * here reduces access or destroys data; this one returns a tenant to the state it was already\n * in. Gating recovery behind the same friction as destruction discourages the correct\n * response to a mistaken deletion.\n *\n * ## ⚠️ Why this is SUPER-ADMIN ONLY — a tenant cannot un-mark itself\n *\n * Not a policy preference: an ORG-scoped variant here would be UNSATISFIABLE. A `DELETED`\n * organization confers no authority at all\n * (`ORGANIZATION_STATUSES_WITHOUT_AUTHORITY`), so its ORG_ADMIN no longer holds `ORG_ADMIN`\n * anywhere and would be refused by the role gate before `enabledCondition` was ever consulted.\n * Declaring the variant anyway would ship a door that renders in the UI, is documented in the\n * spec, and answers 403 forever.\n *\n * That is also the correct product shape, and it is what every comparable system does —\n * Microsoft 365, Google Workspace, Salesforce and AWS all recover a deleted tenant through the\n * PROVIDER's administrator or support, never through the deleted tenant's own credentials.\n * The tenant-facing safety net is the retention window itself; the recovery action is an\n * operator's.\n *\n * assurance-control: WILDO.DATA.SECURE_LIFECYCLE — a reversible deletion decision, with the\n * reversal itself audited and performed by a separately-privileged party.\n */\n [Organization_Lifecycle_Operations.RESTORE]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // See the JSDoc: an org-scoped variant would be unsatisfiable\n riskLevel: ResourceOperationRiskLevel.HIGH,\n // Cross-tenant, and this variant is WHY the gap was worth finding. The JSDoc above rejects\n // an org-scoped variant precisely because it \"would ship a door that renders in the UI, is\n // documented in the spec, and answers 403 forever\" — and then shipped exactly that one\n // tier up: a MARKED tenant is `DELETED`, which confers no authority, so its own admins\n // cannot restore it; and a platform administrator could not reach the row. Nobody could\n // restore a marked tenant, and the purge batch collected it when the window expired.\n //\n // That makes the retention window the load-bearing casualty: a window whose release nobody\n // can pull is not a safety net, it is a delay. Restoring it here is what lets the rest of\n // the teardown lifecycle keep claiming reversibility.\n admitsCrossTenantPlatformAdministration: true,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: z.object({\n reason: z.string().max(500).optional()\n }),\n // Only a MARKED tenant can be restored. From any live state this is a no-op, and from\n // the terminal CANCELLED it is not a deletion being undone.\n enabledCondition: ({ currentObject }) => {\n return currentObject.status === OrganizationStatus.DELETED;\n },\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.ORGANIZATION_USERS,\n channel: CoreUserNotificationChannel.EMAIL,\n }\n ]\n }\n },\n\n});\n\n"]}
1
+ {"version":3,"file":"organizations.shared.resources-config.schemas.js","sourceRoot":"","sources":["../../../../src/organizations/organizations.shared.resources-config.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Organization Shared DTO Schemas\n *\n * Operation schemas for organization management.\n * Separated into App Admin concerns and Organization self-management.\n */\n\nimport { z } from 'zod';\nimport {\n OrganizationSchema,\n OrganizationStatus,\n} from './organizations.shared.schemas';\nimport { CoreResourceOperation } from '../resources/resources.shared.core.definitions';\nimport { ResourceOperationRiskLevel, ResourcePrimaryScope, ResourceRelationship } from '../resources/resources.shared.schemas';\nimport { CoreResourceType, coreResourceShared_FieldIdentifier } from '../resources/resources.shared.core.definitions';\nimport { ResourceOperationVariantType } from '../resources/resources.shared.schemas';\nimport { CoreUserNotificationTarget, CoreUserNotificationChannel } from '../notifications/notifications.shared.schemas';\n\nimport { createResourceConfiguration_Initialization } from '../resources/resources-config.shared.factory';\nimport { ResourceSystemAccessMode } from '../resources/resources-config.shared.schemas';\n\nimport { CORE_APP_ROLES, CORE_ORG_ROLES } from '../security/authorizations/roles.shared.schemas';\n\n\n/**\n * Tenant LIFECYCLE transitions — the operations that own `Organization.status`.\n *\n * Renamed from `Organization_AppAdmin_Operations` on 2026-08-01. The old name described the\n * AUDIENCE of the two members it happened to hold (`ACTIVATE`/`SUSPEND` are super-admin-only) and\n * stopped being true the moment an ORG_ADMIN-facing member joined it. The members share a\n * *concern*, not an audience: each is a guarded transition of the tenant state machine, declared\n * `resourceOperationLike: UPDATE`, gated by an `enabledCondition` on the current status, and the\n * sole authority for the `status` field that generic UPDATE may not write. The frontend already\n * called this concept by its right name — `organizationLifecycleOpViews` in the presets.\n *\n * `status` is `.excludeFromUpdate()`, so every transition here declares `authoritativeFields`\n * naming the fields its prefix owns; without that the repository's strict re-parse silently strips\n * the write and the operation answers success having changed nothing.\n */\nexport enum Organization_Lifecycle_Operations {\n ACTIVATE = 'activate',\n SUSPEND = 'suspend',\n /**\n * Mark the tenant for deletion — the SOFT-DELETE half of tenant teardown.\n *\n * Replaces the tenant-facing `DELETE` door, which now belongs to the purge batch. Writes\n * `status: DELETED` + `deletionRequestedAt` + `purgeScheduledAt`, reconciles every affected user's global\n * `userTypes`, and invalidates their tokens — so the tenant is authorization-dead immediately\n * while remaining fully data-alive and restorable until the window elapses.\n */\n REQUEST_DELETION = 'request_deletion',\n /**\n * Cancel a pending deletion inside the retention window.\n *\n * The inverse of {@link REQUEST_DELETION}. Nothing needs re-creating: authority is re-derived\n * from the membership rows the window deliberately preserved, which is exactly why those rows\n * are not touched at mark time.\n */\n RESTORE = 'restore',\n}\n\nconst ORGANIZATION_ADMIN_SORT_FIELDS = ['status'];\n\nconst ORGANIZATION_ADMIN_FILTER_FIELDS = {\n status: z.enum(OrganizationStatus),\n};\n\ntype OrganizationCoreOperations =\n | CoreResourceOperation.READ\n | CoreResourceOperation.LIST\n | CoreResourceOperation.SEARCH\n | CoreResourceOperation.CREATE\n | CoreResourceOperation.UPDATE\n | CoreResourceOperation.DELETE;\n\n/*\nOrganizations Resource Configuration Factory\n*/\nexport const organizationResourceConfiguration_InitializationFactory = (resourcesRelationships: ResourceRelationship[]) => createResourceConfiguration_Initialization<\n typeof Organization_Lifecycle_Operations,\n OrganizationCoreOperations,\n typeof OrganizationSchema\n>({\n mainSchema: OrganizationSchema,\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n resourceFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.ORGANIZATIONS],\n resourceRelationships: resourcesRelationships,\n isSystemResource: true, // Organizations are a core system resource\n // The invitation-accept auth flow reads the inviting org's display name via\n // `readAsSystem` to render the invite email — the invitee is not yet a member\n // and cannot satisfy the org READ ACL. READ-only; the request is authorized by\n // the consumable invitation token, not org membership.\n systemAccessPolicy: { read: ResourceSystemAccessMode.ALLOWED },\n\n coreOperations: [\n CoreResourceOperation.READ,\n CoreResourceOperation.LIST,\n CoreResourceOperation.SEARCH,\n CoreResourceOperation.CREATE,\n CoreResourceOperation.UPDATE,\n CoreResourceOperation.DELETE\n ],\n\n customOperation: Organization_Lifecycle_Operations,\n\n /**\n * ⚠️ WHAT `APP_ADMIN_SUPER_ADMIN` ACTUALLY BUYS ON THIS RESOURCE (measured 2026-08-05, not inferred)\n *\n * Every super-admin-gated variant below reads as cross-tenant (\"any organization\"). **It is not.**\n * A probe against the real authorization service with real Mongo denied ALL 12 of them to a\n * platform super-administrator who is not scoped to the target tenant; the same 12 allow once the\n * caller's execution context carries `initiatorIds.organizationId` equal to that tenant.\n *\n * The reason is that tenant isolation is enforced at two gates the role table does not reach:\n * `validateParentScopeAccess` (collection calls) and `authorizeOrganizations` (per-instance\n * calls). Both compare the request against the CALLER'S OWN organization. A role key, however\n * privileged, does not supply one.\n *\n * So these variants mean \"a super-admin acting INSIDE an organization\", not \"a super-admin acting\n * on any organization\". Read every `// Super admins can … any organization` comment below with\n * that correction applied — they were written from the role gate alone.\n *\n * Making one genuinely cross-tenant is a deliberate, per-variant act: declare\n * `admitsCrossTenantPlatformAdministration` on it, which admits the crossing at BOTH gates.\n *\n * ## Which variants are crossed, and why the line falls there (decided 2026-08-05)\n *\n * | Variant | Crossed | Reason |\n * |---|---|---|\n * | `restore` | ✅ | A MARKED tenant is `DELETED`, which confers no authority, so NOBODY could restore one. Recuperative. |\n * | `activate` | ✅ | `SUSPENDED` confers no authority and is the only state ACTIVATE runs from. Recuperative. |\n * | `requestDeletion: admin` | ✅ | The operator takedown path — but the REVERSIBLE one: mark + notify + window, undone by `restore`. |\n * | `delete: admin` | ❌ | Irreversible, whole-tenant, cascading, skips the window. See its own block for the full decision. |\n * | everything else | ❌ | No demonstrated operator need. Absence of a use case is a reason to stay shut. |\n *\n * The organising principle: **cross the boundary for actions a later action can undo.** Every\n * crossing above is recoverable, which is what lets the crossing be justified on operator need\n * alone. `delete: admin` is the inverse and is therefore held to a higher bar it does not yet\n * meet. `organizationMembers.grantOwnership` (the owner-floor repair door) follows the same rule\n * on the membership resource.\n *\n * See `.claude/rules/administrative-continuity-floors.md` and\n * `cross-tenant-super-admin-reach.mongo.integration.test.ts`.\n */\n operationsConfiguration: {\n [CoreResourceOperation.CREATE]: {\n variants: [\n {\n // Registration and registration-onboarding create organizations through\n // `ServicesRegistryHandlerBackendService.create()`. INTERNAL_CALL is the\n // service layer's native, route-less transport, so it gives that trusted\n // workflow a distinct operation identity instead of making it masquerade\n // as the public self-service endpoint. The organization CREATE prefix\n // allows creation-policy-managed types only on this path.\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isDefault: true,\n roles: [],\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_USER], // Any authenticated user can create their own organization (ownership is established by the create flow, not a role)\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n // DTOs auto-derived from decorators (excludeFromCreate on _id, createdAt, updatedAt)\n // `status` IS accepted on CREATE (it carries `.default(ACTIVE)`, so an omitted value\n // lands ACTIVE). Only UPDATE excludes it — see the field's JSDoc for why a tenant must\n // not be able to re-set its own lifecycle state after the fact.\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Not crossed — see the banner table; creation has no existing tenant to cross into\n riskLevel: ResourceOperationRiskLevel.LOW,\n // DTOs auto-derived from decorators (excludeFromCreate on _id, createdAt, updatedAt)\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.USER_SELF,\n channel: CoreUserNotificationChannel.EMAIL,\n },\n {\n target: CoreUserNotificationTarget.USER_SELF,\n channel: CoreUserNotificationChannel.FRONT_END_SUCCESS,\n }\n ]\n },\n\n [CoreResourceOperation.READ]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_ORG_ROLES.ORG_MEMBER], // Org members can view their organization\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Not crossed — see the banner table; a super-admin reads organizations they are scoped to\n riskLevel: ResourceOperationRiskLevel.LOW,\n }\n ]\n },\n\n /**\n * ⚠️ THE SCOPE-ROOT COLLECTION OPERATIONS — read this before changing LIST, SEARCH or the roles\n * either declares.\n *\n * `organizations` is the ONLY resource that is both ORGANIZATIONS-scoped and its own scope ROOT,\n * and that makes both of its collection reads special in a way no other resource's are.\n *\n * **Their roles resolve against the APPLICATION table, not the organization one.** There is no\n * `:organizationId` segment on `/organizations`, so `validateParentScopeAccess` cannot ask \"what\n * are your roles inside THIS tenant\" — it takes the scope-root branch and validates the declared\n * roles against the caller's APPLICATION-scope entries. Declaring an ORGANIZATION role on either\n * of these would therefore be unsatisfiable, not merely unusual.\n *\n * **Row confinement is NOT free here, and until 2026-08-11 it did not exist.** Every other\n * org-scoped resource is confined on its `organizationId` COLUMN; the tenant row has no such\n * column, so both persistence adapters lost the axis and a scope-root LIST compiled to the EMPTY\n * filter. The comment that used to sit on this line asserted the opposite — \"still filtered to\n * the caller's own organization\" — and was the reason the gate looked like the only thing\n * broken. Confinement now comes from `assignScopeRootCollectionConfinementToFilter`, which\n * restricts these reads to the tenants the caller holds an organization-WIDE role entry for.\n *\n * So a platform super-administrator sees THEIR OWN organizations here, not every tenant — which\n * is the same correction the banner above records for the other eleven super-admin variants. A\n * genuine cross-tenant directory is NOT available by declaring\n * `admitsCrossTenantPlatformAdministration`: that admission requires a usable platform-access\n * grant for a TARGET tenant, and a collection call has no target. See\n * `.claude/plans/organizations-scope-root-collection-gate-analysis.md`.\n *\n * ## ⚠️ If you are here because an operator \"cannot find the tenant id\", STOP\n *\n * That is the known and DELIBERATE consequence of the confinement, not a bug in it. An operator\n * needs an `organizationId` to request a platform-access grant, and no in-product surface yields\n * the id of a tenant they are not a member of.\n *\n * Widening this operation is the obvious fix and the wrong one: it re-opens the cross-tenant\n * disclosure the confinement closed, and hands the full customer list to every platform\n * administrator as a standing privilege — exactly what the grant mechanism was built to remove.\n *\n * The intended flow is that the id arrives from OUTSIDE the product, with the customer's support\n * ticket (Microsoft Customer Lockbox and Google Access Approval both work this way). The full\n * reasoning, and what a legitimate directory operation would look like instead, is on\n * `platformAccessGrants | requestAccess`'s `organizationId` field and in SEC-SCOPEROOT-5\n * (`.claude/plans/DEFERRED.md`).\n */\n [CoreResourceOperation.LIST]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Not crossed — resolved against the APPLICATION role table; rows confined to the caller's own organizations\n riskLevel: ResourceOperationRiskLevel.LOW,\n filterFields: ORGANIZATION_ADMIN_FILTER_FIELDS,\n sortFields: ORGANIZATION_ADMIN_SORT_FIELDS,\n }\n ]\n },\n\n [CoreResourceOperation.SEARCH]: {\n variants: [{\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Same scope-root contract as LIST above\n riskLevel: ResourceOperationRiskLevel.LOW,\n isSearchable: true,\n searchableFields: ['name', 'slug', 'email'],\n searchableOptions: { caseSensitive: false, fullMatchOnly: false },\n filterFields: ORGANIZATION_ADMIN_FILTER_FIELDS,\n sortFields: ORGANIZATION_ADMIN_SORT_FIELDS,\n maxPaginatedResultPerPageLimit: 100,\n }],\n },\n\n [CoreResourceOperation.UPDATE]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_ORG_ROLES.ORG_ADMIN], // Org admins can update their organization\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n // DTOs auto-derived from decorators (excludeFromUpdate on _id, type,\n // slug, status, createdAt, updatedAt). Organization-type transitions require\n // a dedicated dependent-policy migration, not a generic patch, and `status`\n // belongs to the SUSPEND / ACTIVATE verbs — this variant is ORG_ADMIN-gated, so\n // accepting it here let a suspended tenant reinstate itself.\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Not crossed — see the banner table\n riskLevel: ResourceOperationRiskLevel.LOW,\n // DTOs auto-derived from decorators (excludeFromUpdate on _id, type,\n // slug, createdAt, updatedAt). Super-admin scope does not make a raw\n // type rewrite semantically safe.\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.ORGANIZATION_ADMINISTRATIVE,\n channel: CoreUserNotificationChannel.EMAIL,\n }\n ]\n },\n\n /**\n * DELETE is the PURGE — the irreversible half of tenant teardown, reached at the END of the\n * retention window and no longer the tenant-facing door.\n *\n * ## Why the tenant-facing variant is gone\n *\n * Deleting a tenant used to be synchronous and immediate: one `DELETE /organizations/{id}` by\n * an ORG_ADMIN destroyed the tenant and everything the cascade reached. Tenant offboarding is\n * a job-shaped problem, not a request-shaped one, so it is now two phases —\n * {@link Organization_Lifecycle_Operations.REQUEST_DELETION} marks the tenant (and kills its\n * authority immediately), and this operation destroys it once\n * `Organization.purgeScheduledAt` has elapsed. Leaving an ORG_ADMIN-reachable synchronous\n * DELETE in place would have made the retention window optional for exactly the caller it\n * protects, which is the same as not having one.\n *\n * ## The two remaining doors\n *\n * - **INTERNAL_CALL (default)** — the route-less service transport the `organization-purge`\n * batch dispatches through. Route-less is the point: a window that any client can skip is\n * decorative. This mirrors CREATE on this same resource, whose default is likewise an\n * INTERNAL_CALL owned by a trusted workflow.\n * - **API_CALL `admin`** — the super-administrator's deliberate purge-now escape hatch, for a\n * legal-order or abuse takedown that cannot wait out the window. Kept because operators\n * genuinely need it and because forcing them to a database console would be strictly worse\n * for auditability: this door is role-gated, step-up-gated, and emits `ORGANIZATION_DELETED`\n * like any other purge. It SKIPS the retention window by design.\n *\n * ⚠️ Custom implementations resolve by an exact operation-path key that embeds `variantType`.\n * The default door changing from API_CALL to INTERNAL_CALL therefore MOVES the key that\n * `organization-deletion-audit.custom-impl.backend.service.ts` registers on — that file was\n * updated in the same pass. A hook left on the old key silently never runs.\n *\n * Cascading delete is handled via `childOperations.lifecycle.onParentDelete` on relationships.\n *\n * ⚠️ NO `userNotifications` here any more. They moved to `REQUEST_DELETION`, which is where\n * they can still reach anyone: telling an organization's users that it has been deleted, in\n * the same transaction that deletes those users' memberships, is a notification with no\n * audience — and the batch that triggers a purge has no initiating user context to render it\n * from. The members are told when the tenant is MARKED, which is also the only moment the\n * warning is actionable (it can still be restored).\n */\n [CoreResourceOperation.DELETE]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isDefault: true,\n roles: [],\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.HIGH,\n //\n // ⚠️ DELIBERATELY NOT CROSS-TENANT — the one super-admin door on this resource left shut,\n // decided 2026-08-05. Do not \"finish the job\" by adding\n // `admitsCrossTenantPlatformAdministration` here without re-opening the decision below.\n //\n // The tension is real and worth stating rather than hiding: the JSDoc above says this door\n // is kept because operators genuinely need it and because pushing them to a database\n // console would be strictly worse for auditability. Both halves argue for opening it. What\n // outweighs them is asymmetry of consequence.\n //\n // Every other crossing on this resource is recoverable. ACTIVATE un-halts, RESTORE\n // un-marks, REQUEST_DELETION marks-with-a-window. `grantOwnership` on the membership\n // resource is additive and idempotent. Their safety argument is \"one narrow effect that a\n // later action can undo\". This operation is the exact inverse: irreversible, whole-tenant,\n // cascading, and it SKIPS the window on purpose. There is no RESTORE after a purge.\n //\n // The security cost is a change of KIND, not degree. Today a compromised platform-admin\n // credential can destroy only tenants that principal is already scoped into — accidental\n // containment, but real containment. Crossing this one converts that same compromise into\n // \"any tenant, immediately\". `requiresStepUpAuthentication` answers a hijacked session; it\n // does not answer phished credentials with the second factor supplied.\n //\n // And the operational pressure that makes opening it feel urgent is mostly relieved by the\n // three doors that DID open: a legal-order or abuse takedown can now be executed\n // cross-tenant through REQUEST_DELETION (mark + notify + window), with RESTORE available\n // if the order is stayed or the abuse call was wrong. That covers the cited use cases with\n // a recovery path. What remains uncovered is only \"destroy within hours, irreversibly,\n // against a tenant the operator is not in\".\n //\n // If that residue must be covered, the answer is NOT this flag alone. Require, together:\n // a mandatory `justification` on the request DTO (as `organizationMembers.grantOwnership`\n // has), a distinct high-severity audit event separable from routine purges, and a\n // two-person rule. Instant irreversible cross-tenant destruction is the one capability in\n // this product that deserves a second SIGNATURE, not merely a second factor. Until those\n // exist, the honest operator answer is the window — or a database console with a change\n // ticket, which at least leaves a human trail outside the system it is destroying.\n //\n // assurance-control: WILDO.ACCESS.CROSS_TENANT_ADMINISTRATION — deliberate non-grant;\n // the blast radius of this verb is not admitted to platform tier.\n //\n //\n // Irreversible destruction of a whole tenant, and it cascades. A hijacked session must not\n // be able to do this on the strength of a login that happened at some earlier point:\n // `riskLevel` is UI-only, and the per-user-type `stepUpAuth` policy is opt-in, off by\n // default, and satisfied by any authentication newer than `maxAgeSeconds`.\n //\n // assurance-control: WILDO.IDENTITY.STEP_UP_AUTHENTICATION — re-authentication before a high-impact action.\n requiresStepUpAuthentication: true,\n }\n ],\n },\n\n [Organization_Lifecycle_Operations.ACTIVATE]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n // Cross-tenant, because otherwise this door cannot be opened by anyone. `SUSPENDED` is in\n // `ORGANIZATION_STATUSES_WITHOUT_AUTHORITY`, so a suspended tenant's own admins hold no\n // authority — and ACTIVATE is reachable only FROM `SUSPENDED` or `TRIAL_EXPIRED`. Without\n // the crossing, the only principal who could un-suspend a tenant is a super-administrator\n // who happens to already be a member of it, which is an accident of staffing rather than a\n // control. Purely recuperative: it moves a halted tenant back to operational and destroys\n // nothing, so admitting the crossing costs no reversibility.\n admitsCrossTenantPlatformAdministration: true,\n requestDto: z.object({\n reason: z.string().max(500).optional()\n }),\n // Conditional availability by org status. ACTIVATE re-enables a halted\n // or inactive organization, so it is available only from SUSPENDED or\n // TRIAL_EXPIRED — never from ACTIVE (a no-op) nor the terminal\n // CANCELLED / DELETED states. Evaluated on BOTH the frontend (the\n // action renders disabled otherwise, via `useOperationsEnabled`) AND\n // the backend (`services-registry-handler` throws\n // `SERVICE_RESOURCE_OPERATION_DISABLED` → 403 when false), so the guard\n // holds even if the client is bypassed. Keep in sync with the resource\n // spec's ACTIVATE error scenarios.\n enabledCondition: ({ currentObject }) => {\n return (\n currentObject.status === OrganizationStatus.SUSPENDED ||\n currentObject.status === OrganizationStatus.TRIAL_EXPIRED\n );\n },\n // NO `haveBulkOperation`. The generated bulk variant was removed on 2026-08-01: it could\n // never do bulk work. `assertBulkHookObjectContextAvailability` fails a bulk UPDATE\n // closed whenever its `enabledCondition` needs object context and no single persisted\n // `currentObject` is available — and the condition above reads `currentObject.status` by\n // construction, because the whole point is that ACTIVATE is only legal from specific\n // states. So a multi-org selector was refused (403) BY DESIGN and the variant only ever\n // worked with a one-element `_ids` array: a more expensive spelling of this variant, at\n // the cost of a second route and a second custom-implementation registration\n // (`isBulkOperation` is part of the operation-path key). Bulk suspension would require\n // abandoning the per-row state gate, which is not a trade this operation should make.\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.ORGANIZATION_ADMINISTRATIVE,\n channel: CoreUserNotificationChannel.EMAIL,\n }\n ]\n },\n\n [Organization_Lifecycle_Operations.SUSPEND]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // Only super admins can suspend organizations\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: z.object({\n suspensionReason: z.string().min(1).max(500),\n notifyMembers: z.boolean().default(true)\n }),\n // Conditional availability by org status. SUSPEND halts an operational\n // organization, so it is available only from ACTIVE or TRIAL — never\n // from SUSPENDED (a no-op) nor the terminal CANCELLED / DELETED states.\n // Enforced on the frontend (the action renders disabled otherwise) AND\n // the backend (`services-registry-handler` throws\n // `SERVICE_RESOURCE_OPERATION_DISABLED` → 403), so re-suspending an\n // already-suspended org fails closed server-side. Keep in sync with the\n // resource spec's SUSPEND error scenarios.\n enabledCondition: ({ currentObject }) => {\n return (\n currentObject.status === OrganizationStatus.ACTIVE ||\n currentObject.status === OrganizationStatus.TRIAL\n );\n },\n // NO `haveBulkOperation` — same reasoning as ACTIVATE above. Suspending many tenants in\n // one request is exactly the operation whose per-row state gate must not be dropped.\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.ORGANIZATION_USERS,\n channel: CoreUserNotificationChannel.EMAIL,\n // Honours the `notifyMembers` flag the request contract has always advertised.\n //\n // Until this operation was implemented the flag was inert in the worst way: the DTO\n // accepted it, the caller could set it to `false`, and the declarative notification fired\n // regardless — a silent contract lie on an operation that emails an entire tenant. A\n // suspension is sometimes deliberately quiet (a fraud hold the operator does not want to\n // tip off), so this is a real capability rather than a formality.\n //\n // `!== false` rather than a truthy test: the field carries `.default(true)`, so an\n // omitted value must still notify.\n condition: ({ inputDto }) => (inputDto as { notifyMembers?: boolean } | undefined)?.notifyMembers !== false,\n }\n ]\n },\n\n /**\n * Mark the tenant for deletion — the SOFT-DELETE phase, and the door that replaced the\n * tenant-facing `DELETE`.\n *\n * ## What fires here, and what deliberately does not\n *\n * Authorization consequences fire NOW; data removal waits for the purge. The split is the\n * load-bearing part of the design:\n *\n * - **now** — `status: DELETED` + `deletionRequestedAt` + `purgeScheduledAt`; every affected user's\n * GLOBAL `user.userTypes` reconciled; their tokens invalidated. A global grant that exists\n * only because of this tenant must not outlive it by the length of the retention window —\n * that grant outliving its justification is the original defect this whole workstream\n * exists to fix, and deferring it to the purge would ship that defect with a longer fuse.\n * - **later (purge)** — membership rows, unit assignments and every other org child.\n *\n * The rule that decides which side a concern lands on: remove at mark time only what is\n * RE-DERIVABLE on restore. Org-scoped roles are re-derivable from the membership rows, so the\n * rows stay and the authority is recomputed per request from `status` (see\n * `isAuthorityConferringOrganizationStatus`). Global `userTypes` are NOT re-derivable that\n * way — they are a denormalized grant on the user row — so they are reconciled here, and\n * `restore` re-grants them.\n *\n * ## Audience limitation inherited from the DELETE door this replaces — now CLOSED\n *\n * This used to read: re-authentication proves identity by PASSWORD only, the framework DESTROYS\n * `passwordHash` + passkeys for directory-managed (SCIM) users as a compliance control\n * (`_reconcileLocalCredentialsForDirectoryManaged`), so an ORG_ADMIN of a directory-managed\n * organization could not satisfy the step-up gate and was refused — and it named the fix as\n * future work, routing such a tenant through the `admin` variant below.\n *\n * That fix SHIPPED. `AuthMethodManagementBackendService.reAuthenticate` accepts PASSWORD, TOTP\n * and PASSKEY. `AuthMethod.TOTP` means \"an enrolled second factor\" — a TOTP code or a backup\n * code — verified through `AuthMfaBackendService.verifyEnrolledSecondFactor`, the same single\n * authority the login second-factor step uses, anti-replay included. It was chosen precisely\n * because the SCIM reconciliation PRESERVES it: a second factor sitting on top of the IdP first\n * factor survives deprovisioning by design.\n *\n * So a directory-managed ORG_ADMIN can satisfy this gate itself, and does NOT need the `admin`\n * variant to start a teardown. That variant remains for platform-operator use, not as the\n * workaround for a limitation that no longer exists.\n *\n * assurance-control: WILDO.IDENTITY.STEP_UP_AUTHENTICATION — re-authentication before a high-impact\n * action; the tenant loses its access rights at the moment of the decision, not at the moment\n * its data is destroyed.\n */\n [Organization_Lifecycle_Operations.REQUEST_DELETION]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_ORG_ROLES.ORG_ADMIN], // Org admins can schedule their own organization's deletion\n riskLevel: ResourceOperationRiskLevel.CRITICAL,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: z.object({\n reason: z.string().max(500).optional()\n }),\n requiresStepUpAuthentication: true,\n // Available only from a state the tenant can still be marked FROM. Never from DELETED\n // (already marked — restore or wait for the purge) nor from the terminal CANCELLED.\n // Enforced on the frontend (the action renders disabled) AND the backend\n // (`services-registry-handler` throws `SERVICE_RESOURCE_OPERATION_DISABLED` → 403), so a\n // double-mark fails closed server-side and cannot silently re-arm the window. Keep in\n // sync with the resource spec's REQUEST_DELETION error scenarios.\n //\n // The condition is shared with the `admin` variant below, and the ROLE gate is what\n // makes them differ in practice: `SUSPENDED` confers no authority\n // (`ORGANIZATION_STATUSES_WITHOUT_AUTHORITY`), so on THIS variant that arm is\n // unreachable — an org admin cannot mark a tenant the platform has halted. It is\n // reachable on the `admin` variant, which is the intended shape: a suspended tenant is\n // under platform control, and the platform can still schedule its deletion.\n enabledCondition: ({ currentObject }) => {\n return (\n currentObject.status === OrganizationStatus.ACTIVE ||\n currentObject.status === OrganizationStatus.TRIAL ||\n currentObject.status === OrganizationStatus.TRIAL_EXPIRED ||\n currentObject.status === OrganizationStatus.SUSPENDED\n );\n },\n // NO `haveBulkOperation` — same reasoning as SUSPEND/ACTIVATE: the per-row state gate\n // above reads `currentObject.status`, and a bulk UPDATE whose `enabledCondition` needs\n // object context is failed closed by `assertBulkHookObjectContextAvailability`.\n },\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: false,\n variantKey: \"admin\",\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n // Cross-tenant: this is the operator's takedown path, and it is the REVERSIBLE one. It\n // MARKS the tenant, notifies its users, and starts the retention window — every effect can\n // be undone by RESTORE (also crossed, immediately above; crossing one without the other\n // would hand operators a one-way door and call it a window).\n //\n // The JSDoc on the sibling org-admin variant already asserts this shape — \"a suspended\n // tenant is under platform control, and the platform can still schedule its deletion\" —\n // which was true of the role gate and false of the runtime until this flag.\n //\n // Deliberately the FIRST destructive door opened, and deliberately not the last one: a\n // legal-order or abuse takedown routed through MARK + window keeps a recovery path open,\n // which is what makes leaving instant purge closed (see DELETE `admin`) affordable rather\n // than merely cautious.\n admitsCrossTenantPlatformAdministration: true,\n riskLevel: ResourceOperationRiskLevel.HIGH,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: z.object({\n reason: z.string().max(500).optional()\n }),\n // The flag is per-VARIANT — nothing is inherited from the variant above. Marking someone\n // else's tenant for destruction is not a lesser act than marking your own.\n requiresStepUpAuthentication: true,\n enabledCondition: ({ currentObject }) => {\n return (\n currentObject.status === OrganizationStatus.ACTIVE ||\n currentObject.status === OrganizationStatus.TRIAL ||\n currentObject.status === OrganizationStatus.TRIAL_EXPIRED ||\n currentObject.status === OrganizationStatus.SUSPENDED\n );\n },\n }\n ],\n userNotifications: [\n {\n // The members ARE the audience here, and this is the only moment the warning is\n // actionable — the tenant can still be restored. This notification moved from DELETE,\n // where by the time it fired its recipients were being deleted in the same transaction.\n target: CoreUserNotificationTarget.ORGANIZATION_USERS,\n channel: CoreUserNotificationChannel.EMAIL,\n }\n ]\n },\n\n /**\n * Cancel a pending deletion — the inverse of\n * {@link Organization_Lifecycle_Operations.REQUEST_DELETION}, available for the whole\n * retention window.\n *\n * Restoring needs no data re-creation, and that is a property of the phase split rather than a\n * happy accident: the mark deliberately removed only what is re-derivable. Membership rows,\n * unit assignments and every other child were never touched, so clearing `status` re-arms\n * org-scoped authority on the next request for free. The one thing that WAS removed — each\n * affected user's global `userTypes` — is re-granted here from the same configuration that\n * granted it originally.\n *\n * ## Why the window is not re-checked here\n *\n * There is no \"too late to restore\" branch. If the purge has run, the row is gone and the\n * operation 404s at addressing; if the row is present, it is restorable. Encoding a second\n * time-based rule would create a state where a row exists but claims to be unrecoverable —\n * an unrecoverable row that still holds every one of its members' data is the worst of both\n * phases.\n *\n * Deliberately NOT step-up gated: restoring is the SAFE direction. Every other lifecycle verb\n * here reduces access or destroys data; this one returns a tenant to the state it was already\n * in. Gating recovery behind the same friction as destruction discourages the correct\n * response to a mistaken deletion.\n *\n * ## ⚠️ Why this is SUPER-ADMIN ONLY — a tenant cannot un-mark itself\n *\n * Not a policy preference: an ORG-scoped variant here would be UNSATISFIABLE. A `DELETED`\n * organization confers no authority at all\n * (`ORGANIZATION_STATUSES_WITHOUT_AUTHORITY`), so its ORG_ADMIN no longer holds `ORG_ADMIN`\n * anywhere and would be refused by the role gate before `enabledCondition` was ever consulted.\n * Declaring the variant anyway would ship a door that renders in the UI, is documented in the\n * spec, and answers 403 forever.\n *\n * That is also the correct product shape, and it is what every comparable system does —\n * Microsoft 365, Google Workspace, Salesforce and AWS all recover a deleted tenant through the\n * PROVIDER's administrator or support, never through the deleted tenant's own credentials.\n * The tenant-facing safety net is the retention window itself; the recovery action is an\n * operator's.\n *\n * assurance-control: WILDO.DATA.SECURE_LIFECYCLE — a reversible deletion decision, with the\n * reversal itself audited and performed by a separately-privileged party.\n */\n [Organization_Lifecycle_Operations.RESTORE]: {\n variants: [\n {\n variantType: ResourceOperationVariantType.API_CALL,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN], // See the JSDoc: an org-scoped variant would be unsatisfiable\n riskLevel: ResourceOperationRiskLevel.HIGH,\n // Cross-tenant, and this variant is WHY the gap was worth finding. The JSDoc above rejects\n // an org-scoped variant precisely because it \"would ship a door that renders in the UI, is\n // documented in the spec, and answers 403 forever\" — and then shipped exactly that one\n // tier up: a MARKED tenant is `DELETED`, which confers no authority, so its own admins\n // cannot restore it; and a platform administrator could not reach the row. Nobody could\n // restore a marked tenant, and the purge batch collected it when the window expired.\n //\n // That makes the retention window the load-bearing casualty: a window whose release nobody\n // can pull is not a safety net, it is a delay. Restoring it here is what lets the rest of\n // the teardown lifecycle keep claiming reversibility.\n admitsCrossTenantPlatformAdministration: true,\n resourceOperationLike: CoreResourceOperation.UPDATE,\n requestDto: z.object({\n reason: z.string().max(500).optional()\n }),\n // Only a MARKED tenant can be restored. From any live state this is a no-op, and from\n // the terminal CANCELLED it is not a deletion being undone.\n enabledCondition: ({ currentObject }) => {\n return currentObject.status === OrganizationStatus.DELETED;\n },\n }\n ],\n userNotifications: [\n {\n target: CoreUserNotificationTarget.ORGANIZATION_USERS,\n channel: CoreUserNotificationChannel.EMAIL,\n }\n ]\n }\n },\n\n});\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.shared.resources-config.schemas.d.ts","sourceRoot":"","sources":["../../../../src/queue/jobs.shared.resources-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,qBAAqB,EAAwD,MAAM,gDAAgD,CAAC;AAC7I,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAA4D,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAGvI,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EAKxB,MAAM,uBAAuB,CAAC;AAO/B;;GAEG;AACH,oBAAY,sBAAsB;IAChC,kDAAkD;IAClD,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,KAAK,2BAA2B,GAC5B,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,MAAM,CAAC;AAkBjC;;;;;;;;;GASG;AACH,eAAO,MAAM,wDAAwD,GACnE,wBAAwB,oBAAoB,EAAE,KAC7C,qBAAqB,CAAC,SAAS,EAAE,2BAA2B,EAAE,OAAO,kBAAkB,CAyJzF,CAAC;AAMF;;GAEG;AACH,oBAAY,2BAA2B;IACrC,gEAAgE;IAChE,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,KAAK,gCAAgC,GACjC,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,MAAM,CAAC;AAWjC;;;;;;;;GAQG;AACH,eAAO,MAAM,6DAA6D,GACxE,wBAAwB,oBAAoB,EAAE,KAC7C,qBAAqB,CAAC,SAAS,EAAE,gCAAgC,EAAE,OAAO,uBAAuB,CA2FnG,CAAC"}
1
+ {"version":3,"file":"jobs.shared.resources-config.schemas.d.ts","sourceRoot":"","sources":["../../../../src/queue/jobs.shared.resources-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,qBAAqB,EAAwD,MAAM,gDAAgD,CAAC;AAC7I,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAA4D,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAGvI,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EAKxB,MAAM,uBAAuB,CAAC;AAO/B;;GAEG;AACH,oBAAY,sBAAsB;IAChC,kDAAkD;IAClD,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,KAAK,2BAA2B,GAC5B,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,MAAM,CAAC;AAkBjC;;;;;;;;;GASG;AACH,eAAO,MAAM,wDAAwD,GACnE,wBAAwB,oBAAoB,EAAE,KAC7C,qBAAqB,CAAC,SAAS,EAAE,2BAA2B,EAAE,OAAO,kBAAkB,CA2KzF,CAAC;AAMF;;GAEG;AACH,oBAAY,2BAA2B;IACrC,gEAAgE;IAChE,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,KAAK,gCAAgC,GACjC,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,MAAM,CAAC;AAWjC;;;;;;;;GAQG;AACH,eAAO,MAAM,6DAA6D,GACxE,wBAAwB,oBAAoB,EAAE,KAC7C,qBAAqB,CAAC,SAAS,EAAE,gCAAgC,EAAE,OAAO,uBAAuB,CA2FnG,CAAC"}
@@ -107,6 +107,23 @@ export const jobExecution_ResourceConfiguration_InitializationFactory = (resourc
107
107
  * startup error cannot "fix" it by opting in.
108
108
  */
109
109
  systemAccessPolicy: { exportSubject: ResourceSystemAccessMode.FORBIDDEN },
110
+ /*
111
+ * DELIBERATELY NO `retentionPolicy`, and this comment is the declaration of that.
112
+ *
113
+ * Issue #138 asks that every engine resource declaring `exportSubject` either declare an erasure
114
+ * posture or be deliberately and visibly exempt. This one is exempt, for the same reason the export
115
+ * refusal directly above gives: a job execution is an operational record of the platform doing work,
116
+ * not data about a person. It declares no personal-data category, and no field of it would be scrubbed.
117
+ *
118
+ * Declaring `RETAIN_ONLY` here would be worse than saying nothing. The mode is a positive assertion
119
+ * about a resource that holds personal data of a subject; making it would place this row in the
120
+ * subject-erasure population, inject the `retentionStatus` / `impersonalizedAt` markers and the
121
+ * route-less LIST + UPDATE_MANY plumbing, and require a migration on all three schema planes — all to
122
+ * describe an erasure path that never visits this collection.
123
+ *
124
+ * If a future job payload ever carries subject content, that is a `.dataCategories()` declaration on
125
+ * the payload first, and this exemption is then wrong and must be revisited with it.
126
+ */
110
127
  coreOperations: [
111
128
  CoreResourceOperation.CREATE,
112
129
  CoreResourceOperation.READ,
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.shared.resources-config.schemas.js","sourceRoot":"","sources":["../../../../src/queue/jobs.shared.resources-config.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Job Resource Configurations\n * \n * Defines resource configurations for JobExecution and JobPayloadStorage.\n * \n * Resource Design Principles:\n * - Multiple variants per operation for different access patterns\n * - INTERNAL_CALL / REPOSITORY_ONLY variants for queue services (default)\n * - Proper requestDto schemas for each variant\n * - isBackendOnly fields are automatically filtered in responses\n * \n * Key Resources:\n * - JobExecution: Tracks all job lifecycle events (30-day TTL)\n * - JobPayloadStorage: Stores large payloads >100KB (24-hour TTL)\n */\n\nimport { z } from 'zod';\nimport { createResourceConfiguration_Initialization } from '../resources/resources-config.shared.factory';\nimport { CoreResourceOperation, CoreResourceType, coreResourceShared_FieldIdentifier } from '../resources/resources.shared.core.definitions';\nimport type { ResourceConfiguration } from '../resources/resources-config.shared.schemas';\nimport { ResourceOperationRiskLevel, ResourceOperationVariantType, ResourceRelationship } from '../resources/resources.shared.schemas';\nimport { CORE_APP_ROLES } from '../security/authorizations/roles.shared.schemas';\nimport { ResourceSystemAccessMode } from '../resources/resources-config.shared.schemas';\nimport { \n JobExecutionSchema, \n JobPayloadStorageSchema,\n JobExecutionStatus,\n JobType,\n JobInitiator,\n JobPriority,\n} from './jobs.shared.schemas';\n\n\n// ============================================================================\n// JOB EXECUTION RESOURCE CONFIGURATION\n// ============================================================================\n\n/**\n * Variant keys for JobExecution operations.\n */\nexport enum JobExecutionVariantKey {\n /** Internal queue service operations (default) */\n INTERNAL = 'internal',\n}\n\n/**\n * Core operations available for JobExecution.\n */\ntype JobExecution_CoreOperations = \n | CoreResourceOperation.CREATE \n | CoreResourceOperation.READ \n | CoreResourceOperation.UPDATE\n | CoreResourceOperation.LIST\n | CoreResourceOperation.SEARCH;\n\n// Filter fields for JobExecution LIST/SEARCH\nconst JOB_EXECUTION_FILTER_FIELDS = {\n applicationId: z.string(),\n jobType: z.enum(Object.values(JobType) as [string, ...string[]]),\n status: z.enum(Object.values(JobExecutionStatus) as [string, ...string[]]),\n organizationId: z.string(),\n userId: z.string(),\n queueName: z.string(),\n domainCategory: z.string(),\n initiatedBy: z.enum(Object.values(JobInitiator) as [string, ...string[]]),\n priority: z.enum(Object.values(JobPriority) as [string, ...string[]]),\n};\n\n// Sort fields for JobExecution LIST/SEARCH\nconst JOB_EXECUTION_SORT_FIELDS = ['createdAt', 'completedAt', 'durationMs', 'retryCount'] as const;\n\n/**\n * Factory function for JobExecution resource configuration.\n * \n * JobExecution tracks the lifecycle of all jobs processed by the queue system.\n * It provides visibility into job status, retries, timing, and error information.\n * \n * Variants:\n * - INTERNAL: For queue services (REPOSITORY_ONLY - CREATE, READ, UPDATE, LIST)\n * - ADMIN: For admin operations (API - UPDATE for cancel)\n */\nexport const jobExecution_ResourceConfiguration_InitializationFactory = (\n resourcesRelationships: ResourceRelationship[]\n): ResourceConfiguration<undefined, JobExecution_CoreOperations, typeof JobExecutionSchema> => {\n\n // === CREATE Schemas ===\n // Full create schema for internal use\n const JobExecutionCreateInternalSchema = JobExecutionSchema.omit({\n _id: true,\n retryCount: true, // Starts at 0 (default)\n lastRetryAt: true, // Set on retry\n startedAt: true, // Set when processing starts\n completedAt: true, // Set when completed\n durationMs: true, // Calculated on completion\n outputPayloadStorageId: true, // Set after execution\n error: true, // Set on failure\n workerId: true, // Set by worker\n workerHostname: true, // Set by worker\n });\n\n // === UPDATE Schemas ===\n // Internal service can update most fields (status changes, timing, errors)\n const JobExecutionUpdateInternalSchema = z.object({\n // Status updates\n status: z.enum(Object.values(JobExecutionStatus) as [string, ...string[]]).optional(),\n \n // Timing updates\n queuedAt: z.date().optional(),\n startedAt: z.date().optional(),\n completedAt: z.date().optional(),\n durationMs: z.number().int().optional(),\n lastRetryAt: z.date().optional(),\n \n // Retry tracking\n retryCount: z.number().int().min(0).optional(),\n \n // Worker info\n workerId: z.string().optional(),\n workerHostname: z.string().optional(),\n \n // Payload references\n outputPayloadStorageId: z.uuid().optional(),\n \n // Error info\n error: JobExecutionSchema.shape.error,\n });\n\n return createResourceConfiguration_Initialization<\n undefined,\n JobExecution_CoreOperations,\n typeof JobExecutionSchema\n >({\n mainSchema: JobExecutionSchema,\n resourceIdentifier: CoreResourceType.JOB_EXECUTIONS,\n resourceFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.JOB_EXECUTIONS],\n resourceRelationships: resourcesRelationships,\n isSystemResource: true, // Internal infrastructure component\n\n /**\n * Subject-export disclosure: explicitly FORBIDDEN. A job execution is an OPERATIONAL record of\n * the platform doing work — it references a subject without being data *about* them in any sense\n * a data subject would recognise, and it is already out of Art. 20 scope as controller-generated.\n *\n * FORBIDDEN rather than left undeclared on purpose: this is a decision someone took, not a gap\n * nobody has filled, and the export refusal says so — precisely so a future operator clearing a\n * startup error cannot \"fix\" it by opting in.\n */\n systemAccessPolicy: { exportSubject: ResourceSystemAccessMode.FORBIDDEN },\n\n coreOperations: [\n CoreResourceOperation.CREATE,\n CoreResourceOperation.READ,\n CoreResourceOperation.UPDATE,\n CoreResourceOperation.LIST,\n CoreResourceOperation.SEARCH,\n ],\n \n operationsConfiguration: {\n // === CREATE ===\n [CoreResourceOperation.CREATE]: {\n variants: [\n // Internal: Queue services create job records\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n requestDto: JobExecutionCreateInternalSchema,\n },\n ],\n },\n \n // === READ ===\n [CoreResourceOperation.READ]: {\n variants: [\n // Internal: Queue services read job details\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n ],\n },\n \n // === UPDATE ===\n [CoreResourceOperation.UPDATE]: {\n variants: [\n // Internal: Queue services update job status\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n requestDto: JobExecutionUpdateInternalSchema,\n },\n ],\n },\n \n // === LIST ===\n [CoreResourceOperation.LIST]: {\n variants: [\n // Internal: Queue services list jobs\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n ],\n },\n\n // === SEARCH ===\n [CoreResourceOperation.SEARCH]: {\n variants: [\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n isSearchable: true,\n searchableFields: ['jobId', 'operationPathKey', 'batchRef'],\n searchableOptions: { caseSensitive: false, fullMatchOnly: false },\n filterFields: JOB_EXECUTION_FILTER_FIELDS,\n sortFields: JOB_EXECUTION_SORT_FIELDS,\n maxPaginatedResultPerPageLimit: 100,\n },\n ],\n },\n },\n });\n};\n\n// ============================================================================\n// JOB PAYLOAD STORAGE RESOURCE CONFIGURATION\n// ============================================================================\n\n/**\n * Variant keys for JobPayloadStorage operations.\n */\nexport enum JobPayloadStorageVariantKey {\n /** Internal queue service operations (default, only variant) */\n INTERNAL = 'internal',\n}\n\n/**\n * Core operations available for JobPayloadStorage.\n */\ntype JobPayloadStorage_CoreOperations = \n | CoreResourceOperation.CREATE \n | CoreResourceOperation.READ \n | CoreResourceOperation.DELETE\n | CoreResourceOperation.SEARCH;\n\n// Filter fields for JobPayloadStorage\nconst JOB_PAYLOAD_STORAGE_FILTER_FIELDS = {\n applicationId: z.string(),\n isCompressed: z.boolean(),\n};\n\n// Sort fields for JobPayloadStorage\nconst JOB_PAYLOAD_STORAGE_SORT_FIELDS = ['createdAt', 'expiresAt', 'payloadSizeBytes'] as const;\n\n/**\n * Factory function for JobPayloadStorage resource configuration.\n * \n * JobPayloadStorage stores large job payloads (>100KB) that exceed RabbitMQ\n * message size limits. Referenced by storageId in JobPayload messages.\n * \n * Variants:\n * - INTERNAL only: No API exposure (contains sensitive payload data)\n */\nexport const jobPayloadStorage_ResourceConfiguration_InitializationFactory = (\n resourcesRelationships: ResourceRelationship[]\n): ResourceConfiguration<undefined, JobPayloadStorage_CoreOperations, typeof JobPayloadStorageSchema> => {\n\n // === CREATE Schema ===\n // Internal services provide all data except auto-generated fields\n const JobPayloadStorageCreateInternalSchema = JobPayloadStorageSchema.omit({\n _id: true,\n referenceCount: true, // Starts at 1 (default)\n });\n\n return createResourceConfiguration_Initialization<\n undefined,\n JobPayloadStorage_CoreOperations,\n typeof JobPayloadStorageSchema\n >({\n mainSchema: JobPayloadStorageSchema,\n resourceIdentifier: CoreResourceType.JOB_PAYLOAD_STORAGE,\n resourceFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.JOB_PAYLOAD_STORAGE],\n resourceRelationships: resourcesRelationships,\n isSystemResource: true, // Internal infrastructure component\n\n coreOperations: [\n CoreResourceOperation.CREATE,\n CoreResourceOperation.READ,\n CoreResourceOperation.DELETE,\n CoreResourceOperation.SEARCH,\n ],\n \n operationsConfiguration: {\n // === CREATE ===\n [CoreResourceOperation.CREATE]: {\n variants: [\n // Internal: Queue services store payloads\n {\n variantKey: JobPayloadStorageVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n requestDto: JobPayloadStorageCreateInternalSchema,\n },\n ],\n },\n \n // === READ ===\n [CoreResourceOperation.READ]: {\n variants: [\n // Internal: Queue services retrieve payloads\n {\n variantKey: JobPayloadStorageVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n ],\n },\n \n // === DELETE ===\n [CoreResourceOperation.DELETE]: {\n variants: [\n // Internal: Queue services delete payloads\n {\n variantKey: JobPayloadStorageVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n ],\n },\n\n // === SEARCH ===\n [CoreResourceOperation.SEARCH]: {\n variants: [\n {\n variantKey: JobPayloadStorageVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n isSearchable: true,\n searchableFields: ['storageId'],\n searchableOptions: { caseSensitive: true, fullMatchOnly: true },\n filterFields: JOB_PAYLOAD_STORAGE_FILTER_FIELDS,\n sortFields: JOB_PAYLOAD_STORAGE_SORT_FIELDS,\n maxPaginatedResultPerPageLimit: 100,\n },\n ],\n },\n },\n });\n};\n"]}
1
+ {"version":3,"file":"jobs.shared.resources-config.schemas.js","sourceRoot":"","sources":["../../../../src/queue/jobs.shared.resources-config.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Job Resource Configurations\n * \n * Defines resource configurations for JobExecution and JobPayloadStorage.\n * \n * Resource Design Principles:\n * - Multiple variants per operation for different access patterns\n * - INTERNAL_CALL / REPOSITORY_ONLY variants for queue services (default)\n * - Proper requestDto schemas for each variant\n * - isBackendOnly fields are automatically filtered in responses\n * \n * Key Resources:\n * - JobExecution: Tracks all job lifecycle events (30-day TTL)\n * - JobPayloadStorage: Stores large payloads >100KB (24-hour TTL)\n */\n\nimport { z } from 'zod';\nimport { createResourceConfiguration_Initialization } from '../resources/resources-config.shared.factory';\nimport { CoreResourceOperation, CoreResourceType, coreResourceShared_FieldIdentifier } from '../resources/resources.shared.core.definitions';\nimport type { ResourceConfiguration } from '../resources/resources-config.shared.schemas';\nimport { ResourceOperationRiskLevel, ResourceOperationVariantType, ResourceRelationship } from '../resources/resources.shared.schemas';\nimport { CORE_APP_ROLES } from '../security/authorizations/roles.shared.schemas';\nimport { ResourceSystemAccessMode } from '../resources/resources-config.shared.schemas';\nimport { \n JobExecutionSchema, \n JobPayloadStorageSchema,\n JobExecutionStatus,\n JobType,\n JobInitiator,\n JobPriority,\n} from './jobs.shared.schemas';\n\n\n// ============================================================================\n// JOB EXECUTION RESOURCE CONFIGURATION\n// ============================================================================\n\n/**\n * Variant keys for JobExecution operations.\n */\nexport enum JobExecutionVariantKey {\n /** Internal queue service operations (default) */\n INTERNAL = 'internal',\n}\n\n/**\n * Core operations available for JobExecution.\n */\ntype JobExecution_CoreOperations = \n | CoreResourceOperation.CREATE \n | CoreResourceOperation.READ \n | CoreResourceOperation.UPDATE\n | CoreResourceOperation.LIST\n | CoreResourceOperation.SEARCH;\n\n// Filter fields for JobExecution LIST/SEARCH\nconst JOB_EXECUTION_FILTER_FIELDS = {\n applicationId: z.string(),\n jobType: z.enum(Object.values(JobType) as [string, ...string[]]),\n status: z.enum(Object.values(JobExecutionStatus) as [string, ...string[]]),\n organizationId: z.string(),\n userId: z.string(),\n queueName: z.string(),\n domainCategory: z.string(),\n initiatedBy: z.enum(Object.values(JobInitiator) as [string, ...string[]]),\n priority: z.enum(Object.values(JobPriority) as [string, ...string[]]),\n};\n\n// Sort fields for JobExecution LIST/SEARCH\nconst JOB_EXECUTION_SORT_FIELDS = ['createdAt', 'completedAt', 'durationMs', 'retryCount'] as const;\n\n/**\n * Factory function for JobExecution resource configuration.\n * \n * JobExecution tracks the lifecycle of all jobs processed by the queue system.\n * It provides visibility into job status, retries, timing, and error information.\n * \n * Variants:\n * - INTERNAL: For queue services (REPOSITORY_ONLY - CREATE, READ, UPDATE, LIST)\n * - ADMIN: For admin operations (API - UPDATE for cancel)\n */\nexport const jobExecution_ResourceConfiguration_InitializationFactory = (\n resourcesRelationships: ResourceRelationship[]\n): ResourceConfiguration<undefined, JobExecution_CoreOperations, typeof JobExecutionSchema> => {\n\n // === CREATE Schemas ===\n // Full create schema for internal use\n const JobExecutionCreateInternalSchema = JobExecutionSchema.omit({\n _id: true,\n retryCount: true, // Starts at 0 (default)\n lastRetryAt: true, // Set on retry\n startedAt: true, // Set when processing starts\n completedAt: true, // Set when completed\n durationMs: true, // Calculated on completion\n outputPayloadStorageId: true, // Set after execution\n error: true, // Set on failure\n workerId: true, // Set by worker\n workerHostname: true, // Set by worker\n });\n\n // === UPDATE Schemas ===\n // Internal service can update most fields (status changes, timing, errors)\n const JobExecutionUpdateInternalSchema = z.object({\n // Status updates\n status: z.enum(Object.values(JobExecutionStatus) as [string, ...string[]]).optional(),\n \n // Timing updates\n queuedAt: z.date().optional(),\n startedAt: z.date().optional(),\n completedAt: z.date().optional(),\n durationMs: z.number().int().optional(),\n lastRetryAt: z.date().optional(),\n \n // Retry tracking\n retryCount: z.number().int().min(0).optional(),\n \n // Worker info\n workerId: z.string().optional(),\n workerHostname: z.string().optional(),\n \n // Payload references\n outputPayloadStorageId: z.uuid().optional(),\n \n // Error info\n error: JobExecutionSchema.shape.error,\n });\n\n return createResourceConfiguration_Initialization<\n undefined,\n JobExecution_CoreOperations,\n typeof JobExecutionSchema\n >({\n mainSchema: JobExecutionSchema,\n resourceIdentifier: CoreResourceType.JOB_EXECUTIONS,\n resourceFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.JOB_EXECUTIONS],\n resourceRelationships: resourcesRelationships,\n isSystemResource: true, // Internal infrastructure component\n\n /**\n * Subject-export disclosure: explicitly FORBIDDEN. A job execution is an OPERATIONAL record of\n * the platform doing work — it references a subject without being data *about* them in any sense\n * a data subject would recognise, and it is already out of Art. 20 scope as controller-generated.\n *\n * FORBIDDEN rather than left undeclared on purpose: this is a decision someone took, not a gap\n * nobody has filled, and the export refusal says so — precisely so a future operator clearing a\n * startup error cannot \"fix\" it by opting in.\n */\n systemAccessPolicy: { exportSubject: ResourceSystemAccessMode.FORBIDDEN },\n\n /*\n * DELIBERATELY NO `retentionPolicy`, and this comment is the declaration of that.\n *\n * Issue #138 asks that every engine resource declaring `exportSubject` either declare an erasure\n * posture or be deliberately and visibly exempt. This one is exempt, for the same reason the export\n * refusal directly above gives: a job execution is an operational record of the platform doing work,\n * not data about a person. It declares no personal-data category, and no field of it would be scrubbed.\n *\n * Declaring `RETAIN_ONLY` here would be worse than saying nothing. The mode is a positive assertion\n * about a resource that holds personal data of a subject; making it would place this row in the\n * subject-erasure population, inject the `retentionStatus` / `impersonalizedAt` markers and the\n * route-less LIST + UPDATE_MANY plumbing, and require a migration on all three schema planes — all to\n * describe an erasure path that never visits this collection.\n *\n * If a future job payload ever carries subject content, that is a `.dataCategories()` declaration on\n * the payload first, and this exemption is then wrong and must be revisited with it.\n */\n\n coreOperations: [\n CoreResourceOperation.CREATE,\n CoreResourceOperation.READ,\n CoreResourceOperation.UPDATE,\n CoreResourceOperation.LIST,\n CoreResourceOperation.SEARCH,\n ],\n \n operationsConfiguration: {\n // === CREATE ===\n [CoreResourceOperation.CREATE]: {\n variants: [\n // Internal: Queue services create job records\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n requestDto: JobExecutionCreateInternalSchema,\n },\n ],\n },\n \n // === READ ===\n [CoreResourceOperation.READ]: {\n variants: [\n // Internal: Queue services read job details\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n ],\n },\n \n // === UPDATE ===\n [CoreResourceOperation.UPDATE]: {\n variants: [\n // Internal: Queue services update job status\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n requestDto: JobExecutionUpdateInternalSchema,\n },\n ],\n },\n \n // === LIST ===\n [CoreResourceOperation.LIST]: {\n variants: [\n // Internal: Queue services list jobs\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n ],\n },\n\n // === SEARCH ===\n [CoreResourceOperation.SEARCH]: {\n variants: [\n {\n variantKey: JobExecutionVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n isSearchable: true,\n searchableFields: ['jobId', 'operationPathKey', 'batchRef'],\n searchableOptions: { caseSensitive: false, fullMatchOnly: false },\n filterFields: JOB_EXECUTION_FILTER_FIELDS,\n sortFields: JOB_EXECUTION_SORT_FIELDS,\n maxPaginatedResultPerPageLimit: 100,\n },\n ],\n },\n },\n });\n};\n\n// ============================================================================\n// JOB PAYLOAD STORAGE RESOURCE CONFIGURATION\n// ============================================================================\n\n/**\n * Variant keys for JobPayloadStorage operations.\n */\nexport enum JobPayloadStorageVariantKey {\n /** Internal queue service operations (default, only variant) */\n INTERNAL = 'internal',\n}\n\n/**\n * Core operations available for JobPayloadStorage.\n */\ntype JobPayloadStorage_CoreOperations = \n | CoreResourceOperation.CREATE \n | CoreResourceOperation.READ \n | CoreResourceOperation.DELETE\n | CoreResourceOperation.SEARCH;\n\n// Filter fields for JobPayloadStorage\nconst JOB_PAYLOAD_STORAGE_FILTER_FIELDS = {\n applicationId: z.string(),\n isCompressed: z.boolean(),\n};\n\n// Sort fields for JobPayloadStorage\nconst JOB_PAYLOAD_STORAGE_SORT_FIELDS = ['createdAt', 'expiresAt', 'payloadSizeBytes'] as const;\n\n/**\n * Factory function for JobPayloadStorage resource configuration.\n * \n * JobPayloadStorage stores large job payloads (>100KB) that exceed RabbitMQ\n * message size limits. Referenced by storageId in JobPayload messages.\n * \n * Variants:\n * - INTERNAL only: No API exposure (contains sensitive payload data)\n */\nexport const jobPayloadStorage_ResourceConfiguration_InitializationFactory = (\n resourcesRelationships: ResourceRelationship[]\n): ResourceConfiguration<undefined, JobPayloadStorage_CoreOperations, typeof JobPayloadStorageSchema> => {\n\n // === CREATE Schema ===\n // Internal services provide all data except auto-generated fields\n const JobPayloadStorageCreateInternalSchema = JobPayloadStorageSchema.omit({\n _id: true,\n referenceCount: true, // Starts at 1 (default)\n });\n\n return createResourceConfiguration_Initialization<\n undefined,\n JobPayloadStorage_CoreOperations,\n typeof JobPayloadStorageSchema\n >({\n mainSchema: JobPayloadStorageSchema,\n resourceIdentifier: CoreResourceType.JOB_PAYLOAD_STORAGE,\n resourceFieldIdentifier: coreResourceShared_FieldIdentifier[CoreResourceType.JOB_PAYLOAD_STORAGE],\n resourceRelationships: resourcesRelationships,\n isSystemResource: true, // Internal infrastructure component\n\n coreOperations: [\n CoreResourceOperation.CREATE,\n CoreResourceOperation.READ,\n CoreResourceOperation.DELETE,\n CoreResourceOperation.SEARCH,\n ],\n \n operationsConfiguration: {\n // === CREATE ===\n [CoreResourceOperation.CREATE]: {\n variants: [\n // Internal: Queue services store payloads\n {\n variantKey: JobPayloadStorageVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n requestDto: JobPayloadStorageCreateInternalSchema,\n },\n ],\n },\n \n // === READ ===\n [CoreResourceOperation.READ]: {\n variants: [\n // Internal: Queue services retrieve payloads\n {\n variantKey: JobPayloadStorageVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n ],\n },\n \n // === DELETE ===\n [CoreResourceOperation.DELETE]: {\n variants: [\n // Internal: Queue services delete payloads\n {\n variantKey: JobPayloadStorageVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n },\n ],\n },\n\n // === SEARCH ===\n [CoreResourceOperation.SEARCH]: {\n variants: [\n {\n variantKey: JobPayloadStorageVariantKey.INTERNAL,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isDefault: true,\n roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],\n riskLevel: ResourceOperationRiskLevel.LOW,\n isSearchable: true,\n searchableFields: ['storageId'],\n searchableOptions: { caseSensitive: true, fullMatchOnly: true },\n filterFields: JOB_PAYLOAD_STORAGE_FILTER_FIELDS,\n sortFields: JOB_PAYLOAD_STORAGE_SORT_FIELDS,\n maxPaginatedResultPerPageLimit: 100,\n },\n ],\n },\n },\n });\n};\n"]}
@@ -1211,6 +1211,65 @@ export declare function buildResourceRoomName(resourceType: string, resourceId:
1211
1211
  * Build a scope room name for collection subscriptions
1212
1212
  */
1213
1213
  export declare function buildScopeRoomName(resourceType: string, scopeKey: string, scopeId: string): string;
1214
+ /**
1215
+ * The scope keys a resource room can be qualified by that the FRAMEWORK owns.
1216
+ *
1217
+ * Closed, and named because each member carries a different meaning that a bare string cannot: `app`
1218
+ * scopes a resource to the whole application, `user` to one principal's own rows, `org` to a tenant.
1219
+ * A resource can additionally be scoped by a PARENT RESOURCE, and those keys are genuinely open —
1220
+ * they are derived from the application's own resource names — so they stay strings.
1221
+ */
1222
+ export declare enum ResourceScopeRoomKey {
1223
+ /**
1224
+ * The whole application.
1225
+ *
1226
+ * **`'app'`, while the APPLICATION resource's field identifier is `applicationId`** — and that
1227
+ * mismatch is load-bearing rather than sloppy, so it is stated here instead of being "tidied".
1228
+ *
1229
+ * `mapScopeKeyToResourceType` on the server resolves a scope key by searching the registry for a
1230
+ * resource whose field identifier is `<scopeKey>Id`. Renaming this member to `'application'` would
1231
+ * make that search succeed and route APPLICATION scope through the generic PARENT-scope branch,
1232
+ * which authorizes READ on the `applications` row — a row `ORG_MEMBER` may read, while ten of the
1233
+ * eleven APPLICATION-scoped resource configs require `APP_ADMIN_SUPER_ADMIN`. The rename would
1234
+ * therefore hand every org member notification streams naming rows of SSO connections, SIEM
1235
+ * configuration and webhook configs (issue #247).
1236
+ *
1237
+ * APPLICATION scope has its own branch in `verifyScopeAccess` that authorizes the SUBSCRIBED
1238
+ * resource instead, because a single constant discriminates nothing and so cannot stand in for
1239
+ * authorization the way a tenant or a parent row does.
1240
+ */
1241
+ APPLICATION = "app",
1242
+ /** One principal's own rows. */
1243
+ USER = "user",
1244
+ /** One tenant. */
1245
+ ORGANIZATION = "org"
1246
+ }
1247
+ /** One scope a resource room can be qualified by. */
1248
+ export interface ResourceScopeRoomQualifier {
1249
+ readonly scopeKey: string;
1250
+ readonly scopeId: string;
1251
+ }
1252
+ /**
1253
+ * Which scope rooms a resource operation's rows belong to.
1254
+ *
1255
+ * ## Why this lives in the SHARED models rather than on the backend
1256
+ *
1257
+ * Both ends need the same answer and for opposite reasons: the backend emits a list/cache-refresh
1258
+ * notification INTO these rooms after a mutation, and a client that caches a read has to be IN them
1259
+ * to hear it. Two implementations of one rule would agree only until one side gained a case — the
1260
+ * shape this repository refuses everywhere else — and the failure would be silent, because a client
1261
+ * subscribed to the wrong room does not error, it simply never hears that its cache is stale.
1262
+ *
1263
+ * Ported verbatim from the notifications dispatcher, quirks included, because moving code must not
1264
+ * change which rooms are emitted to. Two of those quirks are worth naming so the next reader does not
1265
+ * "fix" them into a behaviour change:
1266
+ *
1267
+ * - the parent-scope branch tests `key.endsWith('Id') && !key.includes('Parent')` with a CAPITAL P,
1268
+ * so `myParentId` is excluded while `parentTodoListId` is not;
1269
+ * - `organizationId` enters that branch and is then skipped by the inner test, having already been
1270
+ * pushed above.
1271
+ */
1272
+ export declare function deriveResourceScopeRoomQualifiers(contextResourceIdentifiers: Record<string, string>, primaryScope: ResourcePrimaryScope): ResourceScopeRoomQualifier[];
1214
1273
  /**
1215
1274
  * Parse a resource room name into its components
1216
1275
  */
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../src/requests/websocket.shared.schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../src/requests/websocket.shared.schemas.ts"],"names":[],"mappings":"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"}