@wildo-ai/saas-models 1.1.2 → 1.1.3

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 (410) hide show
  1. package/dist/esm/applications/applications-context.schemas.d.ts +14 -10
  2. package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
  3. package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts.map +1 -1
  4. package/dist/esm/applications/applications.shared.resources-config.schemas.js +4 -3
  5. package/dist/esm/applications/applications.shared.resources-config.schemas.js.map +1 -1
  6. package/dist/esm/billing/billing-configuration.shared.schemas.d.ts +0 -4
  7. package/dist/esm/billing/billing-configuration.shared.schemas.d.ts.map +1 -1
  8. package/dist/esm/billing/billing-configuration.shared.schemas.js +59 -17
  9. package/dist/esm/billing/billing-configuration.shared.schemas.js.map +1 -1
  10. package/dist/esm/billing/billing-enums.shared.schemas.d.ts +77 -21
  11. package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
  12. package/dist/esm/billing/billing-enums.shared.schemas.js +85 -23
  13. package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
  14. package/dist/esm/billing/billing-types.shared.schemas.d.ts +3 -3
  15. package/dist/esm/billing/price.shared.schemas.d.ts.map +1 -1
  16. package/dist/esm/billing/price.shared.schemas.js +7 -1
  17. package/dist/esm/billing/price.shared.schemas.js.map +1 -1
  18. package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts.map +1 -1
  19. package/dist/esm/billing/product-behavior-policy.shared.schemas.js +52 -11
  20. package/dist/esm/billing/product-behavior-policy.shared.schemas.js.map +1 -1
  21. package/dist/esm/billing/product-definition.shared.schemas.d.ts +2 -2
  22. package/dist/esm/billing/product.shared.resources-config.schemas.d.ts +2 -2
  23. package/dist/esm/billing/product.shared.schemas.d.ts +2 -2
  24. package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
  25. package/dist/esm/billing/product.shared.schemas.js +7 -3
  26. package/dist/esm/billing/product.shared.schemas.js.map +1 -1
  27. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +1 -1
  28. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
  29. package/dist/esm/billing/subscription.shared.resources-config.schemas.js +15 -1
  30. package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
  31. package/dist/esm/billing/usage-record.shared.schemas.d.ts +7 -3
  32. package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
  33. package/dist/esm/billing/usage-record.shared.schemas.js +22 -3
  34. package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
  35. package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +69 -2
  36. package/dist/esm/companion/provider-discovery.shared.schemas.d.ts.map +1 -1
  37. package/dist/esm/companion/provider-discovery.shared.schemas.js +20 -1
  38. package/dist/esm/companion/provider-discovery.shared.schemas.js.map +1 -1
  39. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +85 -0
  40. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts.map +1 -0
  41. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js +157 -0
  42. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js.map +1 -0
  43. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts +23 -0
  44. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts.map +1 -1
  45. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js +56 -0
  46. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js.map +1 -1
  47. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +480 -20
  48. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
  49. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +547 -23
  50. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
  51. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
  52. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +82 -3
  53. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
  54. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +31 -30
  55. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -1
  56. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +98 -3
  57. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -1
  58. package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts +17 -0
  59. package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts.map +1 -1
  60. package/dist/esm/compliance/privacy/privacy.shared.schemas.js +27 -4
  61. package/dist/esm/compliance/privacy/privacy.shared.schemas.js.map +1 -1
  62. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts +82 -29
  63. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
  64. package/dist/esm/compliance/privacy/redaction.shared.schemas.js +95 -29
  65. package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
  66. package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts.map +1 -1
  67. package/dist/esm/compliance/privacy/subject-export.shared.schemas.js +12 -5
  68. package/dist/esm/compliance/privacy/subject-export.shared.schemas.js.map +1 -1
  69. package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts +21 -0
  70. package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts.map +1 -1
  71. package/dist/esm/config/analytics-value-moments.shared.schemas.js +20 -0
  72. package/dist/esm/config/analytics-value-moments.shared.schemas.js.map +1 -1
  73. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +7 -5
  74. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
  75. package/dist/esm/config/auth-config-resolution.shared.utils.d.ts +8 -1
  76. package/dist/esm/config/auth-config-resolution.shared.utils.d.ts.map +1 -1
  77. package/dist/esm/config/auth-config-resolution.shared.utils.js +29 -0
  78. package/dist/esm/config/auth-config-resolution.shared.utils.js.map +1 -1
  79. package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +95 -17
  80. package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
  81. package/dist/esm/config/entity-identity-config.shared.schemas.js +86 -8
  82. package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
  83. package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +12 -12
  84. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +28 -0
  85. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
  86. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +28 -0
  87. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
  88. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +45 -12
  89. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
  90. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
  91. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +103 -58
  92. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
  93. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +176 -15
  94. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
  95. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts +15 -3
  96. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
  97. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +32 -5
  98. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
  99. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +83 -7
  100. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
  101. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts +59 -0
  102. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts.map +1 -0
  103. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js +61 -0
  104. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js.map +1 -0
  105. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts +97 -0
  106. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts.map +1 -0
  107. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js +41 -0
  108. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js.map +1 -0
  109. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts +148 -2
  110. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts.map +1 -1
  111. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js +56 -1
  112. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
  113. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +5 -28
  114. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
  115. package/dist/esm/external-providers/provider-capability.shared.schemas.js +4 -2
  116. package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
  117. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts +18 -8
  118. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts.map +1 -1
  119. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js +9 -4
  120. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
  121. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts +338 -0
  122. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts.map +1 -0
  123. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js +332 -0
  124. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js.map +1 -0
  125. package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts +178 -9
  126. package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts.map +1 -1
  127. package/dist/esm/external-providers/provider-metadata.shared.schemas.js +181 -9
  128. package/dist/esm/external-providers/provider-metadata.shared.schemas.js.map +1 -1
  129. package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts +7 -5
  130. package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts.map +1 -1
  131. package/dist/esm/external-providers/provider-protocol.shared.schemas.js +7 -5
  132. package/dist/esm/external-providers/provider-protocol.shared.schemas.js.map +1 -1
  133. package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts +40 -0
  134. package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts.map +1 -0
  135. package/dist/esm/external-providers/provider-tier-rule.shared.utils.js +80 -0
  136. package/dist/esm/external-providers/provider-tier-rule.shared.utils.js.map +1 -0
  137. package/dist/esm/features/core-feature-definitions.shared.d.ts.map +1 -1
  138. package/dist/esm/features/core-feature-definitions.shared.js +7 -1
  139. package/dist/esm/features/core-feature-definitions.shared.js.map +1 -1
  140. package/dist/esm/features/feature-builders.shared.d.ts +32 -0
  141. package/dist/esm/features/feature-builders.shared.d.ts.map +1 -1
  142. package/dist/esm/features/feature-builders.shared.js +32 -0
  143. package/dist/esm/features/feature-builders.shared.js.map +1 -1
  144. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts +14 -2
  145. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -1
  146. package/dist/esm/files/file-upload-grant.shared.schemas.js +44 -5
  147. package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -1
  148. package/dist/esm/files/files.shared.schemas.d.ts +15 -8
  149. package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
  150. package/dist/esm/files/files.shared.schemas.js +15 -8
  151. package/dist/esm/files/files.shared.schemas.js.map +1 -1
  152. package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
  153. package/dist/esm/flows-actors/actors.shared.schemas.js +3 -2
  154. package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
  155. package/dist/esm/flows-actors/agents.shared.schemas.d.ts +54 -5
  156. package/dist/esm/flows-actors/agents.shared.schemas.d.ts.map +1 -1
  157. package/dist/esm/flows-actors/agents.shared.schemas.js.map +1 -1
  158. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts +6 -6
  159. package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts +0 -3
  160. package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts.map +1 -1
  161. package/dist/esm/flows-actors/deliberation.shared.schemas.js +0 -5
  162. package/dist/esm/flows-actors/deliberation.shared.schemas.js.map +1 -1
  163. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts +14 -0
  164. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
  165. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +40 -3
  166. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
  167. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +19 -0
  168. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts.map +1 -1
  169. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js +33 -0
  170. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js.map +1 -1
  171. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts +14 -9
  172. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts.map +1 -1
  173. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js +14 -9
  174. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js.map +1 -1
  175. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts.map +1 -1
  176. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js +3 -2
  177. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js.map +1 -1
  178. package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
  179. package/dist/esm/flows-actors/flows.shared.schemas.js +3 -2
  180. package/dist/esm/flows-actors/flows.shared.schemas.js.map +1 -1
  181. package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts +128 -0
  182. package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts.map +1 -0
  183. package/dist/esm/flows-actors/mcp-servers.shared.schemas.js +142 -0
  184. package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -0
  185. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts +0 -3
  186. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts.map +1 -1
  187. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js +1 -4
  188. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js.map +1 -1
  189. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts +0 -16
  190. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +1 -1
  191. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js +1 -17
  192. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +1 -1
  193. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts +3 -3
  194. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js +3 -3
  195. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -1
  196. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts +2 -8
  197. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts.map +1 -1
  198. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js +4 -15
  199. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js.map +1 -1
  200. package/dist/esm/guidance/guidance-state.shared.utils.d.ts.map +1 -1
  201. package/dist/esm/guidance/guidance-state.shared.utils.js +1 -0
  202. package/dist/esm/guidance/guidance-state.shared.utils.js.map +1 -1
  203. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +8 -0
  204. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
  205. package/dist/esm/guidance/progression-state.shared.schemas.d.ts +46 -0
  206. package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
  207. package/dist/esm/guidance/progression-state.shared.schemas.js +49 -0
  208. package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
  209. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +320 -50
  210. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
  211. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +137 -36
  212. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
  213. package/dist/esm/index.d.ts +9 -0
  214. package/dist/esm/index.d.ts.map +1 -1
  215. package/dist/esm/index.js +9 -0
  216. package/dist/esm/index.js.map +1 -1
  217. package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +11 -2
  218. package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts.map +1 -1
  219. package/dist/esm/notifications/email/email-template-registry.shared.schemas.js.map +1 -1
  220. package/dist/esm/notifications/email/email-template.shared.enums.d.ts +15 -0
  221. package/dist/esm/notifications/email/email-template.shared.enums.d.ts.map +1 -1
  222. package/dist/esm/notifications/email/email-template.shared.enums.js +15 -0
  223. package/dist/esm/notifications/email/email-template.shared.enums.js.map +1 -1
  224. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts +1 -0
  225. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts.map +1 -1
  226. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js +19 -0
  227. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js.map +1 -1
  228. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts +30 -0
  229. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts.map +1 -1
  230. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js +65 -1
  231. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js.map +1 -1
  232. package/dist/esm/notifications/notification-badges.core.definitions.d.ts +6 -4
  233. package/dist/esm/notifications/notification-badges.core.definitions.d.ts.map +1 -1
  234. package/dist/esm/notifications/notification-badges.core.definitions.js +6 -4
  235. package/dist/esm/notifications/notification-badges.core.definitions.js.map +1 -1
  236. package/dist/esm/notifications/notification-badges.schemas.d.ts +167 -5
  237. package/dist/esm/notifications/notification-badges.schemas.d.ts.map +1 -1
  238. package/dist/esm/notifications/notification-badges.schemas.js +191 -6
  239. package/dist/esm/notifications/notification-badges.schemas.js.map +1 -1
  240. package/dist/esm/notifications/notifications.shared.schemas.d.ts +107 -0
  241. package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
  242. package/dist/esm/notifications/notifications.shared.schemas.js +149 -1
  243. package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
  244. package/dist/esm/organizations/organization-notifications.shared.schemas.d.ts.map +1 -1
  245. package/dist/esm/organizations/organization-notifications.shared.schemas.js +22 -1
  246. package/dist/esm/organizations/organization-notifications.shared.schemas.js.map +1 -1
  247. package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts +26 -0
  248. package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts.map +1 -1
  249. package/dist/esm/organizations/organization-preferences.shared.schemas.js +25 -0
  250. package/dist/esm/organizations/organization-preferences.shared.schemas.js.map +1 -1
  251. package/dist/esm/organizations/organization-profile.shared.schemas.d.ts +25 -0
  252. package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
  253. package/dist/esm/organizations/organization-profile.shared.schemas.js +42 -17
  254. package/dist/esm/organizations/organization-profile.shared.schemas.js.map +1 -1
  255. package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts +3 -2
  256. package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts.map +1 -1
  257. package/dist/esm/organizations/organization-unit-narrowing.shared.js +9 -2
  258. package/dist/esm/organizations/organization-unit-narrowing.shared.js.map +1 -1
  259. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
  260. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +18 -3
  261. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
  262. package/dist/esm/public-runtime/index.d.ts +49 -2
  263. package/dist/esm/public-runtime/index.d.ts.map +1 -1
  264. package/dist/esm/public-runtime/index.js +48 -1
  265. package/dist/esm/public-runtime/index.js.map +1 -1
  266. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts +6 -5
  267. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
  268. package/dist/esm/queue/jobs.shared.resources-config.schemas.js +6 -5
  269. package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
  270. package/dist/esm/queue/jobs.shared.schemas.d.ts +16 -3
  271. package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
  272. package/dist/esm/queue/jobs.shared.schemas.js +16 -3
  273. package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
  274. package/dist/esm/requests/manual-controllers-routes-documentation.d.ts +137 -0
  275. package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -0
  276. package/dist/esm/requests/manual-controllers-routes-documentation.js +1201 -0
  277. package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -0
  278. package/dist/esm/requests/manual-controllers-routes-urls.d.ts +67 -0
  279. package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
  280. package/dist/esm/requests/manual-controllers-routes-urls.js +78 -0
  281. package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
  282. package/dist/esm/requests/rate-limits.shared.schemas.d.ts +11 -1
  283. package/dist/esm/requests/rate-limits.shared.schemas.d.ts.map +1 -1
  284. package/dist/esm/requests/rate-limits.shared.schemas.js +11 -1
  285. package/dist/esm/requests/rate-limits.shared.schemas.js.map +1 -1
  286. package/dist/esm/requests/websocket.shared.schemas.d.ts +27 -4
  287. package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
  288. package/dist/esm/requests/websocket.shared.schemas.js +35 -0
  289. package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
  290. package/dist/esm/resources/resources-config.shared.factory.d.ts +1 -0
  291. package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
  292. package/dist/esm/resources/resources-config.shared.factory.js +105 -20
  293. package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
  294. package/dist/esm/resources/resources-config.shared.schemas.d.ts +254 -72
  295. package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
  296. package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
  297. package/dist/esm/resources/resources-registry.shared.core.definitions.d.ts.map +1 -1
  298. package/dist/esm/resources/resources-registry.shared.core.definitions.js +97 -5
  299. package/dist/esm/resources/resources-registry.shared.core.definitions.js.map +1 -1
  300. package/dist/esm/resources/resources-relationships.shared.factory.d.ts.map +1 -1
  301. package/dist/esm/resources/resources-relationships.shared.factory.js +15 -0
  302. package/dist/esm/resources/resources-relationships.shared.factory.js.map +1 -1
  303. package/dist/esm/resources/resources.shared.core.definitions.d.ts +37 -0
  304. package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
  305. package/dist/esm/resources/resources.shared.core.definitions.js +51 -0
  306. package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
  307. package/dist/esm/resources/resources.shared.schemas.d.ts +11 -2
  308. package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
  309. package/dist/esm/resources/resources.shared.schemas.js +34 -3
  310. package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
  311. package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts +51 -0
  312. package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts.map +1 -0
  313. package/dist/esm/resources/utils/field-value-disclosure.utils.js +53 -0
  314. package/dist/esm/resources/utils/field-value-disclosure.utils.js.map +1 -0
  315. package/dist/esm/resources/utils/resources-summary.utils.d.ts +16 -2
  316. package/dist/esm/resources/utils/resources-summary.utils.d.ts.map +1 -1
  317. package/dist/esm/resources/utils/resources-summary.utils.js +19 -5
  318. package/dist/esm/resources/utils/resources-summary.utils.js.map +1 -1
  319. package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts.map +1 -1
  320. package/dist/esm/resources/utils/shared-persistence-collection.utils.js +11 -0
  321. package/dist/esm/resources/utils/shared-persistence-collection.utils.js.map +1 -1
  322. package/dist/esm/runtime/domain-module.shared.definitions.d.ts +25 -0
  323. package/dist/esm/runtime/domain-module.shared.definitions.d.ts.map +1 -1
  324. package/dist/esm/runtime/domain-module.shared.definitions.js.map +1 -1
  325. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts +1 -0
  326. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts.map +1 -1
  327. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js +38 -0
  328. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js.map +1 -1
  329. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts +1 -0
  330. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts.map +1 -1
  331. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js +38 -0
  332. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js.map +1 -1
  333. package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +4 -11
  334. package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
  335. package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +0 -1
  336. package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
  337. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +84 -5
  338. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
  339. package/dist/esm/security/authentications/authentication.shared.schemas.js +83 -3
  340. package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
  341. package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts +1 -0
  342. package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts.map +1 -1
  343. package/dist/esm/security/authentications/registration.shared.dto.schemas.js +11 -0
  344. package/dist/esm/security/authentications/registration.shared.dto.schemas.js.map +1 -1
  345. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts +15 -0
  346. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts.map +1 -1
  347. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js +21 -4
  348. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js.map +1 -1
  349. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts +61 -1
  350. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts.map +1 -1
  351. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js +208 -6
  352. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js.map +1 -1
  353. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts +37 -27
  354. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts.map +1 -1
  355. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js +134 -12
  356. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js.map +1 -1
  357. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +0 -6
  358. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts.map +1 -1
  359. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js +17 -8
  360. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
  361. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  362. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +27 -0
  363. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
  364. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts +52 -7
  365. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
  366. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js +45 -8
  367. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
  368. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts +31 -0
  369. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts.map +1 -0
  370. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js +198 -0
  371. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js.map +1 -0
  372. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts +31 -0
  373. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts.map +1 -0
  374. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js +191 -0
  375. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js.map +1 -0
  376. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts +250 -0
  377. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts.map +1 -0
  378. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js +486 -0
  379. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js.map +1 -0
  380. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts +4 -1
  381. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts.map +1 -1
  382. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js +29 -0
  383. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js.map +1 -1
  384. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts +4 -1
  385. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts.map +1 -1
  386. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js +29 -0
  387. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js.map +1 -1
  388. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +6 -0
  389. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
  390. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js +31 -0
  391. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
  392. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts +13 -0
  393. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
  394. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js +24 -3
  395. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
  396. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +4 -4
  397. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +4 -4
  398. package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts.map +1 -1
  399. package/dist/esm/users/user-self.shared.resources-config.schemas.js +33 -3
  400. package/dist/esm/users/user-self.shared.resources-config.schemas.js.map +1 -1
  401. package/dist/esm/users/users.shared.resources-config.schemas.d.ts +17 -1
  402. package/dist/esm/users/users.shared.resources-config.schemas.d.ts.map +1 -1
  403. package/dist/esm/users/users.shared.resources-config.schemas.js +136 -5
  404. package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
  405. package/dist/esm/users/users.shared.schemas.d.ts +43 -12
  406. package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
  407. package/dist/esm/users/users.shared.schemas.js +38 -7
  408. package/dist/esm/users/users.shared.schemas.js.map +1 -1
  409. package/dist/tsconfig.build.tsbuildinfo +1 -1
  410. package/package.json +4 -4
@@ -6,6 +6,7 @@ import { PlatformAccessGrantAutoApprovalReason, PlatformAccessGrantLifecycleTran
6
6
  import { ExecutionContext_ExecutionType } from "../../runtime/execution-context.shared.schemas.js";
7
7
  import { AuthScopeType, SsoConnectionType, } from "../../security/authentications/authentication.shared.schemas.js";
8
8
  import { WebhookEndpointProbeOutcome } from "../../notifications/m2m/webhook-config.shared.schemas.js";
9
+ import { ProviderCredentialDeletionReason, ProviderCredentialResolutionSource, } from "../../security/connected-accounts/provider-credentials.shared.schemas.js";
9
10
  export var CoreAuditableEventType;
10
11
  (function (CoreAuditableEventType) {
11
12
  // Authentication Events
@@ -172,6 +173,55 @@ export var CoreAuditableEventType;
172
173
  // Organization Security Management Events
173
174
  CoreAuditableEventType["ORGANIZATION_SSO_CONFIGURATION_CHANGED"] = "organization_sso_configuration_changed";
174
175
  CoreAuditableEventType["ORGANIZATION_SIEM_EXPORT_CONFIGURED"] = "organization_siem_export_configured";
176
+ // Organization Provider Credential Events
177
+ //
178
+ // An organization's OWN credential toward a third party. The four verbs are separate members
179
+ // rather than one event with a `changeType`, because they answer four different questions a
180
+ // credential incident asks in a different order — when did this tenant grant us authority, when
181
+ // did the value last change, when was it last SPENT, and when did the grant end — and a SIEM
182
+ // rule that alerts on a spend cannot be written against a payload discriminator that also
183
+ // matches configuration edits.
184
+ //
185
+ // NONE of the four payloads carries the credential value. That is a structural property of the
186
+ // schemas below, not a redaction step somebody has to remember: there is no field to put it in.
187
+ //
188
+ // assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — an organization authorizes this
189
+ // application to act as it toward a named third party.
190
+ CoreAuditableEventType["ORGANIZATION_PROVIDER_CREDENTIAL_SET"] = "organization_provider_credential_set";
191
+ CoreAuditableEventType["ORGANIZATION_PROVIDER_CREDENTIAL_ROTATED"] = "organization_provider_credential_rotated";
192
+ CoreAuditableEventType["ORGANIZATION_PROVIDER_CREDENTIAL_USED"] = "organization_provider_credential_used";
193
+ CoreAuditableEventType["ORGANIZATION_PROVIDER_CREDENTIAL_DELETED"] = "organization_provider_credential_deleted";
194
+ // A PERSON's own credential toward a third party. Four members mirroring the organization's,
195
+ // and deliberately NOT the same members with a nullable organization: the subject differs, the
196
+ // SIEM routing differs (there is no tenant to route to), and the data-protection reading differs
197
+ // — a person's connection to a vendor is that person's, and an event saying so must not be
198
+ // indistinguishable from one about a tenant's shared integration.
199
+ CoreAuditableEventType["USER_PROVIDER_CREDENTIAL_SET"] = "user_provider_credential_set";
200
+ CoreAuditableEventType["USER_PROVIDER_CREDENTIAL_ROTATED"] = "user_provider_credential_rotated";
201
+ CoreAuditableEventType["USER_PROVIDER_CREDENTIAL_USED"] = "user_provider_credential_used";
202
+ CoreAuditableEventType["USER_PROVIDER_CREDENTIAL_DELETED"] = "user_provider_credential_deleted";
203
+ // A delegated authorization GRANTED at a vendor, for each owner scope.
204
+ //
205
+ // Distinct from `_SET` rather than a flag on it, on the same three grounds the vocabulary already
206
+ // uses to separate its members. The ACT differs: `_SET` is a value arriving in a row, and this is
207
+ // a principal completing a consent ceremony at a third party — the only event in this family that
208
+ // records somebody deciding something. The DATA differs: a grant carries the scopes that were
209
+ // authorized and the vendor account they were authorized for, neither of which exists for a pasted
210
+ // secret. And the EMISSION POINT differs, which is what makes a flag impractical as well as wrong:
211
+ // `_SET` is emitted by the resource's write hook, which sees the row after the value is sealed,
212
+ // while the scopes are known only to the store that received the grant, before sealing.
213
+ //
214
+ // The distinction is the one an auditor asks for first. "Which of our people granted a third party
215
+ // access, to what, and when" is a different question from "which credentials were configured", and
216
+ // a trail that answers them with the same event answers neither well.
217
+ //
218
+ // Neither payload carries a token, and as with the four above that is structural rather than a
219
+ // redaction step: there is no field to put one in.
220
+ //
221
+ // assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — the act of authorizing is recorded
222
+ // as itself, with what was authorized.
223
+ CoreAuditableEventType["ORGANIZATION_PROVIDER_CONNECTION_GRANTED"] = "organization_provider_connection_granted";
224
+ CoreAuditableEventType["USER_PROVIDER_CONNECTION_GRANTED"] = "user_provider_connection_granted";
175
225
  // Application Security Configuration Events
176
226
  // The per-user-type authentication policy (`userTypes.<type>.auth` — MFA, password, and lockout
177
227
  // requirements) is STATIC application configuration authored in code and taken into effect at
@@ -232,6 +282,7 @@ export var CoreAuditableEventType;
232
282
  CoreAuditableEventType["USER_PASSKEY_AUTHENTICATION_SUCCESS"] = "user_passkey_authentication_success";
233
283
  CoreAuditableEventType["USER_PASSKEY_AUTHENTICATION_FAILURE"] = "user_passkey_authentication_failure";
234
284
  CoreAuditableEventType["USER_PASSKEY_REMOVED"] = "user_passkey_removed";
285
+ CoreAuditableEventType["USER_PASSKEY_CLONE_SUSPECTED"] = "user_passkey_clone_suspected";
235
286
  // Magic Link Events (Phase G2)
236
287
  CoreAuditableEventType["USER_MAGIC_LINK_SENT"] = "user_magic_link_sent";
237
288
  CoreAuditableEventType["USER_MAGIC_LINK_VERIFIED"] = "user_magic_link_verified";
@@ -267,6 +318,37 @@ export var CoreAuditableEventType;
267
318
  CoreAuditableEventType["FILE_UPLOAD_GRANT_ISSUED"] = "file_upload_grant_issued";
268
319
  CoreAuditableEventType["FILE_UPLOAD_GRANT_REDEEMED"] = "file_upload_grant_redeemed";
269
320
  CoreAuditableEventType["FILE_UPLOAD_GRANT_REVOKED"] = "file_upload_grant_revoked";
321
+ // File content-inspection outcomes (#506)
322
+ /**
323
+ * A scanner concluded that an uploaded file is INFECTED, and the file was quarantined.
324
+ *
325
+ * Until this existed, the scanner emitted no audit row of any kind: an infection produced a
326
+ * `SCANNING → INFECTED → QUARANTINED` status transition on the file record and nothing else, so
327
+ * the only way to learn that malware had reached the application's storage was to NOTICE a row
328
+ * sitting at `QUARANTINED` — a poll, not a signal. Malware arriving is one of the few things an
329
+ * operator wants to be alerted on, and one of the few a customer security questionnaire asks about
330
+ * by name.
331
+ *
332
+ * `CRITICAL`, on the same argument as `USER_PASSKEY_CLONE_SUSPECTED`: a conclusion the security
333
+ * mechanism reached about a real threat, not a routine outcome.
334
+ *
335
+ * assurance-control: WILDO.SECURITY.INGESTED_CONTENT_INSPECTION — a detected infection is
336
+ * attributable and monitorable, not only visible as a row status. This event is the RECORD half of
337
+ * that objective; the mechanism half is the fail-closed scan gate itself.
338
+ */
339
+ CoreAuditableEventType["FILE_MALWARE_DETECTED"] = "file_malware_detected";
340
+ /**
341
+ * A scan could NOT be completed — the scanner was unreachable, or the pipeline errored.
342
+ *
343
+ * Its own event rather than a lower severity on the one above, because the operational stories are
344
+ * opposite: an infection means the control WORKED, a failure means it DID NOT RUN. From outside
345
+ * they are indistinguishable today — the file is non-downloadable either way — which is precisely
346
+ * why the trail has to tell them apart. A run of these means files are arriving unscanned.
347
+ *
348
+ * `WARNING`, not `CRITICAL`: nothing was found and nothing was exposed, because the file fails
349
+ * closed to `FAILED` and stays undownloadable. What is wrong is the control's availability.
350
+ */
351
+ CoreAuditableEventType["FILE_MALWARE_SCAN_FAILED"] = "file_malware_scan_failed";
270
352
  CoreAuditableEventType["ONE_OFF_TOKEN_CREATED"] = "one_off_token_created";
271
353
  CoreAuditableEventType["ONE_OFF_TOKEN_EXCHANGED"] = "one_off_token_exchanged";
272
354
  /** revocation-B1: a super-admin cancelled an un-exchanged one-off (impersonation) session token. */
@@ -354,6 +436,13 @@ export var CoreAuditableEventType;
354
436
  * crossing is NAMED in the trail". Before this event, an operator could enumerate every user's
355
437
  * email across every tenant and leave nothing behind.
356
438
  *
439
+ * ⚠️ "Structurally unavailable" above is exact about the EXISTING grant mechanism — it needs a
440
+ * target tenant and a collection call names none — and must not be read as "prevention is
441
+ * impossible". An application-wide grant kind is buildable; what blocks it is the question of who
442
+ * approves an elevation that names no tenant. See
443
+ * `ScopeRootConfinementDisposition.UNCONFINED_APPLICATION_TIER_DIRECTORY`, which owns that
444
+ * reasoning beside the declaration that makes this read unconfined.
445
+ *
357
446
  * INFO, not WARNING: unlike its cross-tenant sibling this is an ordinary, expected administrative
358
447
  * read on a surface built for it. The subset worth escalating is selected by a SIEM rule on
359
448
  * `resourceType` + `returnedCount`, both of which ride the payload.
@@ -384,7 +473,8 @@ export var CoreAuditableEventType;
384
473
  // Retained-Data (Impersonalization) Access Events
385
474
  // Emitted when a privileged SEE-THROUGH read reveals RETAINED (impersonalized-and-retained) records
386
475
  // that the default retention hide-predicate keeps hidden. SYSTEM_CONTEXT_READ names only the RUNTIME
387
- // that acted; this read is HUMAN-ATTRIBUTED (a super-admin / COMPLIANCE_AUDITOR) and carries a REQUIRED reason —
476
+ // that acted; this read is HUMAN-ATTRIBUTED (an application super-administrator, the only role the
477
+ // see-through gate admits today) and carries a REQUIRED reason —
388
478
  // a compliance-grade access record over scrubbed personal data. Strictly read-only. Classified
389
479
  // DATA_ACCESS / WARNING (an authorized-but-elevated privileged access, not an anomaly ⇒ not CRITICAL).
390
480
  CoreAuditableEventType["RETAINED_DATA_ACCESS"] = "retained_data_access";
@@ -527,6 +617,38 @@ export var AuditEventSeverity;
527
617
  AuditEventSeverity["WARNING"] = "warning";
528
618
  AuditEventSeverity["CRITICAL"] = "critical";
529
619
  })(AuditEventSeverity || (AuditEventSeverity = {}));
620
+ /**
621
+ * What each audit category and severity MEANS to whoever reads the trail.
622
+ *
623
+ * The words were authored, correctly, in the technical-documentation catalog that renders the
624
+ * audit-trail page — and lived only there, so the same vocabularies reached every other surface as
625
+ * bare tokens. Moved here, beside the enums, because a vocabulary's words belong with the
626
+ * vocabulary: the catalog now imports them, the schemas describe their own fields from them, and
627
+ * there is one account of what `data_access` selects rather than two that can disagree.
628
+ *
629
+ * `name` is what a reader is shown; `meaning` is what selecting it actually gets them. Exhaustive by
630
+ * type, so a sixth category cannot ship as a bare value.
631
+ */
632
+ export const AUDIT_EVENT_CATEGORY_MEANINGS = {
633
+ [AuditEventCategory.AUTHENTICATION]: { name: 'Authentication', meaning: 'Signing in, signing out, second factors and failed attempts.' },
634
+ [AuditEventCategory.AUTHORIZATION]: { name: 'Authorization', meaning: 'Access decisions: what an identity was allowed or refused.' },
635
+ [AuditEventCategory.USER_LIFECYCLE]: { name: 'User lifecycle', meaning: 'Accounts created, changed, suspended, restored or removed.' },
636
+ [AuditEventCategory.ORG_MANAGEMENT]: { name: 'Organization management', meaning: 'Membership, roles, units and organization settings.' },
637
+ [AuditEventCategory.DATA_ACCESS]: { name: 'Data access', meaning: 'Reads and changes of application data that are recorded for review.' },
638
+ };
639
+ export const AUDIT_EVENT_SEVERITY_MEANINGS = {
640
+ [AuditEventSeverity.INFO]: { name: 'Information', meaning: 'Expected activity. Useful as evidence, not a signal on its own.' },
641
+ [AuditEventSeverity.WARNING]: { name: 'Warning', meaning: 'Unusual or refused activity worth reviewing in context.' },
642
+ [AuditEventSeverity.CRITICAL]: { name: 'Critical', meaning: 'Activity that should reach whoever handles security incidents.' },
643
+ };
644
+ /**
645
+ * A `Values:` legend in the shape the generated API reference already uses, so a field described
646
+ * here reads exactly like one described from a resource specification.
647
+ */
648
+ export function describeAuditVocabulary(lead, meanings) {
649
+ const legend = Object.entries(meanings).map(([value, words]) => `- \`${value}\`: ${words.meaning}`).join('\n');
650
+ return `${lead}\n\nValues:\n${legend}`;
651
+ }
530
652
  /**
531
653
  * Why the authorizer refused an operation. A CLOSED vocabulary — the authorizer resolves exactly
532
654
  * one of these per refusal, and a SOC dashboard groups by it.
@@ -912,20 +1034,66 @@ export const AuditableEvent_Application_SuperAdminFloorBreachedEventDataSchema =
912
1034
  * recorded rather than assumed zero: the floor's minimum is configurable, and an event that hard-codes
913
1035
  * the consequence cannot be re-read against a changed policy.
914
1036
  */
1037
+ /**
1038
+ * HOW a tenant's owner-floor breach came to be known.
1039
+ *
1040
+ * The two answers mean genuinely different things to whoever reads the record, and a reader cannot
1041
+ * tell them apart from the rest of the payload — which is why this is a named member rather than an
1042
+ * inference from whether the action fields happen to be present.
1043
+ *
1044
+ * The event type stays SINGLE across both, deliberately. The fact recorded is "this tenant has no
1045
+ * administratively usable owner", and that is the query an operator needs to be one query: splitting
1046
+ * it in two would mean a breach is missed by whichever half somebody alerts on.
1047
+ */
1048
+ export var AdministrativeContinuityBreachDetection;
1049
+ (function (AdministrativeContinuityBreachDetection) {
1050
+ /**
1051
+ * A guarded lifecycle write was ALLOWED through and stranded the tenant.
1052
+ *
1053
+ * The permissive branch is deliberate — refusing a suspension would mean an operator cannot lock
1054
+ * out a compromised owner without first transferring ownership using the tenant the attacker
1055
+ * controls — so this record IS the control that makes the trade acceptable. The action fields are
1056
+ * populated here, because there is an action to name.
1057
+ */
1058
+ AdministrativeContinuityBreachDetection["ALLOWED_LIFECYCLE_ACTION"] = "allowed_lifecycle_action";
1059
+ /**
1060
+ * The boot report found the tenant ALREADY stranded, by a route no guard ever saw: a direct
1061
+ * database edit, a restore from a backup taken mid-erasure, a seed that authored no owner, or a
1062
+ * role-table change that redefined which roles confer ownership.
1063
+ *
1064
+ * There is no action to name, so the action fields are absent rather than filled with placeholders
1065
+ * — the same reading `logApplicationSuperAdminFloorBreached` takes for its missing `userId`.
1066
+ */
1067
+ AdministrativeContinuityBreachDetection["BOOT_REPORT"] = "boot_report";
1068
+ })(AdministrativeContinuityBreachDetection || (AdministrativeContinuityBreachDetection = {}));
915
1069
  export const AuditableEvent_Organization_OwnerFloorBreachedEventDataSchema = z.object({
916
1070
  eventType: z.literal(CoreAuditableEventType.ORGANIZATION_OWNER_FLOOR_BREACHED),
917
1071
  /** The tenant left with no administratively usable owner. */
918
1072
  organizationId: z.string(),
919
- /** The owner-conferring memberships this action removed from the population. */
920
- reducedMemberIds: z.array(z.string()),
1073
+ /**
1074
+ * WHICH observation produced this record. Required, so the compiler forces every emitter — present
1075
+ * and future — to say which; a reader cannot recover it from the payload, and guessing it from the
1076
+ * presence of the action fields would make an emitter's omission look like a boot observation.
1077
+ */
1078
+ detectedBy: z.enum(AdministrativeContinuityBreachDetection),
921
1079
  /** How many usable owners remain (expected: 0 when emitted). */
922
1080
  remainingUsableOwners: z.number(),
923
- /** The lifecycle verb that caused it — the operator-facing "what did this". */
924
- operationIdentifier: z.string(),
925
- /** The subject whose deactivation triggered it. */
926
- subjectUserId: z.string(),
927
- /** The status the subject moved to, so a reader need not infer usability from the verb alone. */
928
- subjectNextStatus: z.string(),
1081
+ /**
1082
+ * The owner-conferring memberships the action removed from the population.
1083
+ *
1084
+ * Absent under `BOOT_REPORT`: nothing was removed within sight of a guard, which is the whole
1085
+ * reason the boot report has to look.
1086
+ */
1087
+ reducedMemberIds: z.array(z.string()).optional(),
1088
+ /** The lifecycle verb that caused it — the operator-facing "what did this". Absent under `BOOT_REPORT`. */
1089
+ operationIdentifier: z.string().optional(),
1090
+ /** The subject whose deactivation triggered it. Absent under `BOOT_REPORT`. */
1091
+ subjectUserId: z.string().optional(),
1092
+ /**
1093
+ * The status the subject moved to, so a reader need not infer usability from the verb alone. Absent
1094
+ * under `BOOT_REPORT`.
1095
+ */
1096
+ subjectNextStatus: z.string().optional(),
929
1097
  });
930
1098
  // Organization Member Event Data Schemas
931
1099
  export const AuditableEvent_OrganizationMember_InvitedEventDataSchema = z.object({
@@ -1547,6 +1715,239 @@ export const AuditableEvent_Organization_SIEMExportConfiguredEventDataSchema = z
1547
1715
  webhookUrlDomain: z.string().optional(),
1548
1716
  eventFormatConfigured: z.string().optional(),
1549
1717
  });
1718
+ // Organization Provider Credential Event Data Schemas
1719
+ //
1720
+ // ## The value is absent by CONSTRUCTION
1721
+ //
1722
+ // Every field below is an identifier, a timestamp, a closed vocabulary or a count. There is no
1723
+ // free-text field an implementation could put a secret in by accident, and no `changes` /
1724
+ // `metadata` record — the shape the SSO event uses (`z.record(z.string(), z.any())`) is exactly
1725
+ // what a credential event must not have, because an audit row is replicated to the organization's
1726
+ // SIEM and to the immutable store, and neither can be edited afterwards.
1727
+ //
1728
+ // ## Why a provider ref and a slug, and nothing about the value
1729
+ //
1730
+ // A reader needs to know WHICH authority moved. `providerRef` + `secretSlug` say that completely.
1731
+ // A fingerprint of the value was considered and rejected: it is a stable oracle for confirming a
1732
+ // guessed secret, so it would put a verification oracle into the one store designed never to
1733
+ // forget.
1734
+ /**
1735
+ * A tenant granted this application authority to act as it toward a third party.
1736
+ *
1737
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — organization authorizes delegated
1738
+ * access to a named third party.
1739
+ */
1740
+ export const AuditableEvent_OrganizationProviderCredential_SetEventDataSchema = z.object({
1741
+ eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_SET),
1742
+ organizationId: z.string(),
1743
+ providerRef: z.string(),
1744
+ secretSlug: z.string(),
1745
+ /** The acting administrator. Absent only on a system-initiated write, which none exists today. */
1746
+ setBy: z.string().optional(),
1747
+ credentialId: z.string(),
1748
+ });
1749
+ /**
1750
+ * The stored VALUE changed for a credential that already existed.
1751
+ *
1752
+ * Separate from `_SET` because rotation is the response to a suspected compromise, and "was this
1753
+ * rotated after the incident?" must be answerable without reading every configuration edit.
1754
+ *
1755
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — the delegated authority's secret is
1756
+ * replaced.
1757
+ */
1758
+ export const AuditableEvent_OrganizationProviderCredential_RotatedEventDataSchema = z.object({
1759
+ eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_ROTATED),
1760
+ organizationId: z.string(),
1761
+ providerRef: z.string(),
1762
+ secretSlug: z.string(),
1763
+ rotatedBy: z.string().optional(),
1764
+ credentialId: z.string(),
1765
+ /** When the value it replaced was set — how long the retired secret was live. */
1766
+ previousSecretSetAt: z.string().optional(),
1767
+ });
1768
+ /**
1769
+ * The credential was RESOLVED for an outbound call — the application acted as the tenant.
1770
+ *
1771
+ * The highest-volume of the four and the one that makes the other three worth having: without a
1772
+ * use event, a leaked credential's exploitation is invisible and only its configuration is
1773
+ * recorded. `resolvedFrom` distinguishes a tenant's own credential from the deployment-wide
1774
+ * environment fallback, which is precisely the distinction this whole resource exists to make
1775
+ * visible — a tenant silently acting as the shared principal is the defect, and here it is a
1776
+ * value in a field rather than something nobody can see.
1777
+ *
1778
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — delegated authority is exercised.
1779
+ */
1780
+ export const AuditableEvent_OrganizationProviderCredential_UsedEventDataSchema = z.object({
1781
+ eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_USED),
1782
+ organizationId: z.string(),
1783
+ providerRef: z.string(),
1784
+ secretSlug: z.string(),
1785
+ resolvedFrom: z.enum(ProviderCredentialResolutionSource),
1786
+ /** Absent when `resolvedFrom` is the deployment environment — there is no row to name. */
1787
+ credentialId: z.string().optional(),
1788
+ });
1789
+ /**
1790
+ * The grant ended — by the tenant removing it, or by the tenant itself being purged.
1791
+ *
1792
+ * `reason` separates the two, because "the credential is gone" means different things to an
1793
+ * incident reviewer depending on whether a human revoked it or a cascade removed it.
1794
+ *
1795
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — evidence that delegated authority
1796
+ * was withdrawn.
1797
+ */
1798
+ export const AuditableEvent_OrganizationProviderCredential_DeletedEventDataSchema = z.object({
1799
+ eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_DELETED),
1800
+ organizationId: z.string(),
1801
+ providerRef: z.string(),
1802
+ secretSlug: z.string(),
1803
+ deletedBy: z.string().optional(),
1804
+ credentialId: z.string(),
1805
+ reason: z.enum(ProviderCredentialDeletionReason),
1806
+ });
1807
+ /**
1808
+ * A PERSON connected their own account at a third party to this application.
1809
+ *
1810
+ * The organization's four events say "this tenant authorized the application". These four say "this
1811
+ * individual did", and the difference is not cosmetic: the vendor will attribute every resulting act
1812
+ * to that person's account, so the trail that answers "who authorized this" has to name them.
1813
+ *
1814
+ * `userId` is the subject, not the actor, and the two are the same here BY CONSTRUCTION — the
1815
+ * resource admits no administrative variant, so nobody but the holder can write one of these rows.
1816
+ * That is why there is no `setBy`: an organization credential needs one because several
1817
+ * administrators can write the tenant's row, and a person's own credential has exactly one possible
1818
+ * author. A `setBy` that could only ever repeat `userId` would invite a future reader to believe the
1819
+ * two can differ.
1820
+ *
1821
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — a user authorizes third-party
1822
+ * delegated access.
1823
+ */
1824
+ export const AuditableEvent_UserProviderCredential_SetEventDataSchema = z.object({
1825
+ eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_SET),
1826
+ userId: z.string(),
1827
+ providerRef: z.string(),
1828
+ secretSlug: z.string(),
1829
+ credentialId: z.string(),
1830
+ });
1831
+ /**
1832
+ * A PERSON completed a consent ceremony at a vendor and this application now holds their grant.
1833
+ *
1834
+ * The subject and the actor are the same by construction — the resource admits no administrative
1835
+ * variant, and the connect leg refuses any owner but the caller — so there is no `grantedBy`.
1836
+ *
1837
+ * `grantedScopes` is what the VENDOR said it issued, not what was asked for. The two differ often
1838
+ * enough to matter: a vendor may narrow a request against what the account is permitted, and the
1839
+ * answer to "what could this application actually do as them" is the granted set. Optional because
1840
+ * several vendors return no scope at all on a token response, and an empty array would assert
1841
+ * something stronger than silence.
1842
+ *
1843
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — a user authorizes third-party
1844
+ * delegated access, and the authorization's extent is recorded with it.
1845
+ */
1846
+ export const AuditableEvent_UserProviderConnection_GrantedEventDataSchema = z.object({
1847
+ eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CONNECTION_GRANTED),
1848
+ userId: z.string(),
1849
+ providerRef: z.string(),
1850
+ secretSlug: z.string(),
1851
+ credentialId: z.string(),
1852
+ grantedScopes: z.array(z.string()).optional(),
1853
+ /**
1854
+ * WHICH account at the vendor — a workspace, a tenant, a directory. Never a secret, and the answer
1855
+ * to a question the row alone cannot settle: two people connecting the same provider may be
1856
+ * granting access to entirely different organizations of that vendor.
1857
+ */
1858
+ accountRef: z.string().optional(),
1859
+ /**
1860
+ * Whether this replaced a connection that already existed.
1861
+ *
1862
+ * A first connection and a re-authorization look identical in the row afterwards, and they are not
1863
+ * the same event to an auditor: a re-authorization frequently follows a revocation at the vendor,
1864
+ * which is exactly the sequence worth being able to see.
1865
+ */
1866
+ replacedExistingConnection: z.boolean(),
1867
+ });
1868
+ /**
1869
+ * An ORGANIZATION's delegated authorization toward a vendor was granted.
1870
+ *
1871
+ * Mirrors the person's event and is deliberately not the same event with a nullable user: the
1872
+ * subject is a tenant, the SIEM routing is the tenant's, and the data-protection reading differs —
1873
+ * a tenant's shared integration is not anybody's personal connection.
1874
+ *
1875
+ * `grantedByUserId` exists here and not on the user's, for the reason the `_SET` pair already
1876
+ * records: several administrators can authorize on a tenant's behalf, so WHO did is a real question.
1877
+ *
1878
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — an organization authorizes this
1879
+ * application to act as it toward a named third party.
1880
+ */
1881
+ export const AuditableEvent_OrganizationProviderConnection_GrantedEventDataSchema = z.object({
1882
+ eventType: z.literal(CoreAuditableEventType.ORGANIZATION_PROVIDER_CONNECTION_GRANTED),
1883
+ organizationId: z.string(),
1884
+ providerRef: z.string(),
1885
+ secretSlug: z.string(),
1886
+ credentialId: z.string(),
1887
+ grantedByUserId: z.string().optional(),
1888
+ grantedScopes: z.array(z.string()).optional(),
1889
+ accountRef: z.string().optional(),
1890
+ replacedExistingConnection: z.boolean(),
1891
+ });
1892
+ /**
1893
+ * The stored VALUE changed for a person's credential that already existed.
1894
+ *
1895
+ * Separate from `_SET` for the organization's reason — rotation answers "was this replaced after the
1896
+ * incident?" — and for one that is specific to a person: a credential someone rotates on their own
1897
+ * initiative is often the first evidence that they believe their vendor account was compromised.
1898
+ *
1899
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — the delegated authority's secret is
1900
+ * replaced.
1901
+ */
1902
+ export const AuditableEvent_UserProviderCredential_RotatedEventDataSchema = z.object({
1903
+ eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_ROTATED),
1904
+ userId: z.string(),
1905
+ providerRef: z.string(),
1906
+ secretSlug: z.string(),
1907
+ credentialId: z.string(),
1908
+ /** When the value it replaced was set — how long the retired secret was live. */
1909
+ previousSecretSetAt: z.string().optional(),
1910
+ });
1911
+ /**
1912
+ * The credential was RESOLVED for an outbound call — the application acted as that person.
1913
+ *
1914
+ * `resolvedFrom` is present for symmetry with the organization event but carries a narrower range:
1915
+ * a person's credential has NO fallback, because substituting the deployment's shared principal for
1916
+ * someone's own account would attribute the act to the wrong party at the vendor — the very
1917
+ * substitution the whole scope triangle exists to forbid. So this field reads
1918
+ * `USER_CREDENTIAL` on every event, and a reviewer seeing anything else is looking at a defect.
1919
+ *
1920
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — delegated authority is exercised.
1921
+ */
1922
+ export const AuditableEvent_UserProviderCredential_UsedEventDataSchema = z.object({
1923
+ eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_USED),
1924
+ userId: z.string(),
1925
+ providerRef: z.string(),
1926
+ secretSlug: z.string(),
1927
+ resolvedFrom: z.enum(ProviderCredentialResolutionSource),
1928
+ credentialId: z.string(),
1929
+ });
1930
+ /**
1931
+ * The person's grant ended — by them removing it, or by their own erasure.
1932
+ *
1933
+ * `reason` matters more here than on the organization sibling. A credential removed by a cascade
1934
+ * from a subject-erasure request is EVIDENCE that the erasure reached this store, and it is the
1935
+ * evidence an operator produces when asked whether a person's third-party keys were destroyed. The
1936
+ * row itself is gone by then, so the event is all that remains.
1937
+ *
1938
+ * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — evidence that delegated authority
1939
+ * was withdrawn.
1940
+ * assurance-control: WILDO.PRIVACY.ERASURE — evidence that erasure destroyed the subject's
1941
+ * third-party credentials.
1942
+ */
1943
+ export const AuditableEvent_UserProviderCredential_DeletedEventDataSchema = z.object({
1944
+ eventType: z.literal(CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_DELETED),
1945
+ userId: z.string(),
1946
+ providerRef: z.string(),
1947
+ secretSlug: z.string(),
1948
+ credentialId: z.string(),
1949
+ reason: z.enum(ProviderCredentialDeletionReason),
1950
+ });
1550
1951
  // Outbound M2M Webhook Event Data Schemas
1551
1952
  /**
1552
1953
  * One `webhookConfig.testEndpoint` attempt — an admin causing the platform to open an
@@ -1736,6 +2137,91 @@ export const AuditableEvent_User_PasskeyAuthFailureEventDataSchema = z.object({
1736
2137
  userAgent: z.string(),
1737
2138
  sessionId: z.string(),
1738
2139
  });
2140
+ /**
2141
+ * A passkey assertion whose SIGNATURE VERIFIED and whose signature counter did not advance.
2142
+ *
2143
+ * This is the WebAuthn cloned-authenticator signal (W3C WebAuthn L3 §6.1.1: "The signature
2144
+ * counter's purpose is to aid Relying Parties in detecting cloned authenticators"). It is emitted
2145
+ * on the spec's own predicate — either counter non-zero AND the received value not greater than
2146
+ * the stored one — so a credential that reports 0 permanently, which every synced passkey does,
2147
+ * compares 0-against-0 and never reaches here.
2148
+ *
2149
+ * spec-cite: W3C Web Authentication Level 3, §6.1.1 Signature Counter Considerations
2150
+ * (https://www.w3.org/TR/webauthn-3/#sctn-sign-counter). The spec declines to mandate an outcome
2151
+ * (§7.2 step 22: "whether the Relying Party ... fails the authentication ceremony or not, is
2152
+ * Relying Party-specific"); Wildo refuses, matching what every major implementation does.
2153
+ *
2154
+ * SEPARATE from `USER_PASSKEY_AUTHENTICATION_FAILURE` deliberately. A wrong credential, an absent
2155
+ * challenge and a bad signature are routine noise; this one means a private key may exist in two
2156
+ * places. Recorded as its own type at CRITICAL so it is alertable rather than buried among ordinary
2157
+ * failed logins — which is exactly where it lived until 2026-09-08.
2158
+ *
2159
+ * The device-type, backup and AAGUID fields are carried for TRIAGE, never for a decision: nothing
2160
+ * branches on them. A synced credential that once reported a non-zero counter and then regresses is
2161
+ * still a signal, and exempting by device type would silently disable clone detection for the
2162
+ * growing majority of credentials.
2163
+ */
2164
+ /**
2165
+ * One file that a scanner concluded is infected (#506).
2166
+ *
2167
+ * `threatName` is the scanner's own signature or rule name (`Eicar-Test-Signature`, a YARA rule id).
2168
+ * It is carried because it is the first thing a responder needs and it names a THREAT, not a person
2169
+ * — unlike a file name, which is user-supplied content and is deliberately absent: audit rows are
2170
+ * replicated to the organisation's SIEM and to the immutable store, and an uploaded file's name
2171
+ * routinely carries personal data ("Invoice - Jane Doe.pdf"). The file id resolves to the row for
2172
+ * anyone authorised to look.
2173
+ */
2174
+ export const AuditableEvent_File_MalwareDetectedEventDataSchema = z.object({
2175
+ eventType: z.literal(CoreAuditableEventType.FILE_MALWARE_DETECTED),
2176
+ fileId: z.string(),
2177
+ /** Which scanner concluded it — ClamAV signature matching and YARA pattern matching are different evidence. */
2178
+ scannerRef: z.string(),
2179
+ /** The signature or rule the scanner matched, when it reports one. */
2180
+ threatName: z.string().optional(),
2181
+ /** The resource the file belongs to, when the scan context carries it. */
2182
+ resourceType: z.string().optional(),
2183
+ resourceId: z.string().optional(),
2184
+ organizationId: z.string().optional(),
2185
+ /** Terminal status the file was moved to. Recorded so the row cannot claim a state the record does not hold. */
2186
+ fileStatus: z.string(),
2187
+ });
2188
+ /**
2189
+ * One scan that could not be completed (#506).
2190
+ *
2191
+ * Distinct from a detection: the control did not run. `failureReason` is TRUNCATED because a scanner
2192
+ * error routinely embeds a host, a socket path or a temporary file path, and this row reaches the
2193
+ * organisation's SIEM.
2194
+ */
2195
+ export const AuditableEvent_File_MalwareScanFailedEventDataSchema = z.object({
2196
+ eventType: z.literal(CoreAuditableEventType.FILE_MALWARE_SCAN_FAILED),
2197
+ fileId: z.string(),
2198
+ scannerRef: z.string(),
2199
+ /** Truncated scanner/pipeline error — enough to triage, bounded so a path cannot ride into the SIEM whole. */
2200
+ failureReason: z.string().optional(),
2201
+ resourceType: z.string().optional(),
2202
+ resourceId: z.string().optional(),
2203
+ organizationId: z.string().optional(),
2204
+ fileStatus: z.string(),
2205
+ });
2206
+ export const AuditableEvent_User_PasskeyCloneSuspectedEventDataSchema = z.object({
2207
+ eventType: z.literal(CoreAuditableEventType.USER_PASSKEY_CLONE_SUSPECTED),
2208
+ userId: z.string(),
2209
+ credentialId: z.string(),
2210
+ /** The counter Wildo held for this credential before the assertion. */
2211
+ storedCounter: z.number().int().min(0),
2212
+ /** The counter the authenticator reported. Not greater than `storedCounter`, which is the signal. */
2213
+ receivedCounter: z.number().int().min(0),
2214
+ /** Triage only: `singleDevice` or `multiDevice`, as captured at registration. */
2215
+ credentialDeviceType: z.string(),
2216
+ /** Triage only: whether the credential is backed up (synced), as captured at registration. */
2217
+ credentialBackedUp: z.boolean(),
2218
+ /** Triage only: the authenticator model identifier, when the registration reported one. */
2219
+ aaguid: z.string().optional(),
2220
+ /** Which door the assertion arrived at — a step-up regression is not the same story as a login. */
2221
+ ceremony: z.string(),
2222
+ ipAddress: z.string(),
2223
+ userAgent: z.string(),
2224
+ });
1739
2225
  export const AuditableEvent_User_PasskeyRemovedEventDataSchema = z.object({
1740
2226
  eventType: z.literal(CoreAuditableEventType.USER_PASSKEY_REMOVED),
1741
2227
  userId: z.string(),
@@ -1836,15 +2322,41 @@ export const AuditableEvent_OAuth2ProviderBlockedEventDataSchema = z.object({
1836
2322
  }
1837
2323
  });
1838
2324
  // Emergency Access Event Data Schema
2325
+ /**
2326
+ * A named break-glass account signed in past its tenant's own SSO requirement (#423).
2327
+ *
2328
+ * `organizationId` was REQUIRED here and is now one of two scopes, because `emergencyAccess` lives
2329
+ * on the POLYMORPHIC SSO config: an application-scope policy carries break-glass accounts for the
2330
+ * application itself, and requiring an organization id would have made the one event that matters
2331
+ * unemittable for exactly that case — a privileged sign-in with no record, which is the opposite of
2332
+ * what this event is for. The exactly-one-scope refinement follows the OAuth2-provider-blocked
2333
+ * event above rather than inventing a second shape.
2334
+ */
1839
2335
  export const AuditableEvent_EmergencyAccess_UsedEventDataSchema = z.object({
1840
2336
  eventType: z.literal(CoreAuditableEventType.EMERGENCY_ACCESS_USED),
1841
2337
  userId: z.string(),
1842
2338
  email: z.email(),
1843
- organizationId: z.string(),
2339
+ scopeType: z.enum(AuthScopeType),
2340
+ organizationId: z.string().optional(),
2341
+ applicationId: z.string().optional(),
1844
2342
  reason: z.string().optional(),
1845
2343
  ipAddress: z.string(),
1846
2344
  userAgent: z.string(),
1847
2345
  sessionId: z.string(),
2346
+ }).superRefine((event, ctx) => {
2347
+ const hasOrganizationScope = event.scopeType === AuthScopeType.ORGANIZATION
2348
+ && event.organizationId !== undefined
2349
+ && event.applicationId === undefined;
2350
+ const hasApplicationScope = event.scopeType === AuthScopeType.APPLICATION
2351
+ && event.applicationId !== undefined
2352
+ && event.organizationId === undefined;
2353
+ if (!hasOrganizationScope && !hasApplicationScope) {
2354
+ ctx.addIssue({
2355
+ code: 'custom',
2356
+ path: ['scopeType'],
2357
+ message: 'Emergency-access events require exactly one explicit tenant scope',
2358
+ });
2359
+ }
1848
2360
  });
1849
2361
  export const AuditableEvent_FieldAccess_EventDataSchema = z.object({
1850
2362
  eventType: z.literal(CoreAuditableEventType.FIELD_ACCESS),
@@ -2034,17 +2546,21 @@ export const AuditableEvent_ResourceOperationPerformed_EventDataSchema = z.objec
2034
2546
  * `organization-ownership-grant-hostile.e2e.ts` probe F-1a, which deleted a membership row in
2035
2547
  * another tenant and got a 200.
2036
2548
  *
2037
- * This event is the visibility half. It does NOT refuse refusing is a separate, much larger change
2038
- * with a measured blast radius (see the plan) and is a policy decision in its own right. Emission is
2549
+ * This event is the visibility half, and it is NOT the refusal. The refusal shipped separately and
2550
+ * lives in `authorizeOrganizations`: an undeclared crossing is no longer admitted, and the caller is
2551
+ * answered as not-found so the response cannot be used as an existence oracle. Emission here stays
2039
2552
  * best-effort and never blocks the request: an operator action must not fail because the audit sink
2040
2553
  * is down, and a fail-closed variant would let anyone disable operator support by breaking the sink.
2554
+ * The observation is taken BEFORE the admission decision, on purpose, so a sanctioned crossing is
2555
+ * recorded too.
2041
2556
  *
2042
2557
  * ## Reading the event
2043
2558
  *
2044
2559
  * {@link admissionDeclared} is the field that matters most. `true` means the operation VARIANT
2045
2560
  * declared `admitsCrossTenantPlatformAdministration` — an intended, reviewed crossing such as
2046
- * `organizationMembers.grantOwnership`. `false` means the reach came from the structural gap above:
2047
- * nobody declared it, no spec documents it, and it is the population to watch.
2561
+ * `organizationMembers.grantOwnership`, which additionally requires a usable platform access grant.
2562
+ * `false` now means an ATTEMPTED undeclared crossing, which was refused: still the population to
2563
+ * watch, because it is reach nobody declared and no specification describes.
2048
2564
  *
2049
2565
  * assurance-control: WILDO.ACCESS.CROSS_TENANT_ADMINISTRATION — platform-tier access to a tenant the
2050
2566
  * principal does not belong to.
@@ -2122,8 +2638,9 @@ export const AuditableEvent_CrossTenantAdministrativeAccess_EventDataSchema = z.
2122
2638
  /**
2123
2639
  * Did the operation variant DECLARE this crossing (`admitsCrossTenantPlatformAdministration`)?
2124
2640
  *
2125
- * `false` is the signal worth alerting on: reach that no variant asked for and no specification
2126
- * describes. See this schema's JSDoc.
2641
+ * `false` is the signal worth alerting on: an ATTEMPTED crossing that no variant asked for and no
2642
+ * specification describes. It was refused, so the row records an attempt rather than a completed
2643
+ * access. See this schema's JSDoc.
2127
2644
  */
2128
2645
  admissionDeclared: z.boolean(),
2129
2646
  /** The caller's roles as they were at decision time. */
@@ -2236,22 +2753,24 @@ export const AuditableEvent_ResourceOperationDenied_EventDataSchema = z.object({
2236
2753
  * that scrubbed data, and its two defining properties (vs `SYSTEM_CONTEXT_READ`, which names only the
2237
2754
  * RUNTIME that acted, never a human) are:
2238
2755
  *
2239
- * 1. **Human attribution** — `accessingUserId` names the actual super-admin / `COMPLIANCE_AUDITOR`
2240
- * who exercised the see-through, so a retained-data reveal is never anonymous. Non-empty
2241
- * (`.trim().min(1)`) a blank id cannot stand in for a human.
2756
+ * 1. **Human attribution** — `accessingUserId` names the actual human who exercised the see-through,
2757
+ * so a retained-data reveal is never anonymous. Non-empty (`.trim().min(1)`) — a blank id cannot
2758
+ * stand in for a human. The gate admits `APP_ADMIN_SUPER_ADMIN` and nothing else; a dedicated
2759
+ * auditor role does not exist yet, and adding one is a purely additive change to that gate.
2242
2760
  * 2. **A required reason** — `reason` is the mandatory justification for revealing scrubbed PII.
2243
2761
  * Non-empty (`.trim().min(1)`): a blank OR whitespace-only reason fails validation, so the audit
2244
2762
  * trail cannot record a reveal without a real "why". The see-through primitives ALSO fail-closed on
2245
2763
  * blank attribution before the read (the schema `.min(1)` is the contract; the primitive guard is
2246
2764
  * the enforcement point, since the audit store persists `eventData` as an unparsed record).
2247
2765
  *
2248
- * Strictly read-only (the see-through primitive never mutates). Emitted by the see-through read
2249
- * primitive (`readRetainedAsSystem` / `listRetainedAsSystem`) wired in a later phase; this is the
2250
- * contract only.
2766
+ * Strictly read-only (the see-through primitive never mutates). Emitted TODAY by both see-through
2767
+ * read primitives, `readRetainedAsSystem` and `listRetainedAsSystem`: each calls
2768
+ * `logRetainedDataAccess` after its gates pass, so this is a live event, not a contract awaiting a
2769
+ * producer.
2251
2770
  */
2252
2771
  export const AuditableEvent_RetainedDataAccess_EventDataSchema = z.object({
2253
2772
  eventType: z.literal(CoreAuditableEventType.RETAINED_DATA_ACCESS),
2254
- /** The HUMAN principal who performed the see-through read (super-admin / COMPLIANCE_AUDITOR). Non-empty. */
2773
+ /** The HUMAN principal who performed the see-through read (an application super-administrator). Non-empty. */
2255
2774
  accessingUserId: z.string().trim().min(1),
2256
2775
  /** REQUIRED non-empty compliance justification for revealing the retained (scrubbed) records — the "why". */
2257
2776
  reason: z.string().trim().min(1),
@@ -2861,6 +3380,10 @@ export const AuditableEvent_TypedDataSchema = z.discriminatedUnion('eventType',
2861
3380
  AuditableEvent_User_TokenRefreshedEventDataSchema,
2862
3381
  AuditableEvent_Organization_SSOConfigurationChangedEventDataSchema,
2863
3382
  AuditableEvent_Organization_SIEMExportConfiguredEventDataSchema,
3383
+ AuditableEvent_OrganizationProviderCredential_SetEventDataSchema,
3384
+ AuditableEvent_OrganizationProviderCredential_RotatedEventDataSchema,
3385
+ AuditableEvent_OrganizationProviderCredential_UsedEventDataSchema,
3386
+ AuditableEvent_OrganizationProviderCredential_DeletedEventDataSchema,
2864
3387
  AuditableEvent_ApplicationAuthPolicyChanged_EventDataSchema,
2865
3388
  AuditableEvent_Webhook_EndpointTestDispatchedEventDataSchema,
2866
3389
  AuditableEvent_SCIM_TokenCreatedEventDataSchema,
@@ -2881,6 +3404,7 @@ export const AuditableEvent_TypedDataSchema = z.discriminatedUnion('eventType',
2881
3404
  AuditableEvent_User_PasskeyAuthSuccessEventDataSchema,
2882
3405
  AuditableEvent_User_PasskeyAuthFailureEventDataSchema,
2883
3406
  AuditableEvent_User_PasskeyRemovedEventDataSchema,
3407
+ AuditableEvent_User_PasskeyCloneSuspectedEventDataSchema,
2884
3408
  AuditableEvent_User_MagicLinkSentEventDataSchema,
2885
3409
  AuditableEvent_User_MagicLinkVerifiedEventDataSchema,
2886
3410
  AuditableEvent_User_MagicLinkFailedEventDataSchema,