@openauditmodel/cli 0.4.0 → 0.4.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 (339) hide show
  1. package/README.md +5 -5
  2. package/conformance-kit/README.md +109 -0
  3. package/conformance-kit/manifest.json +8023 -0
  4. package/examples/README.md +62 -0
  5. package/examples/integrity/README.md +103 -0
  6. package/examples/integrity/invalid/broken-previous-hash/001.json +53 -0
  7. package/examples/integrity/invalid/broken-previous-hash/002.json +52 -0
  8. package/examples/integrity/invalid/broken-previous-hash/003.json +43 -0
  9. package/examples/integrity/invalid/duplicate-sequence/001.json +53 -0
  10. package/examples/integrity/invalid/duplicate-sequence/002.json +52 -0
  11. package/examples/integrity/invalid/duplicate-sequence/003.json +43 -0
  12. package/examples/integrity/invalid/missing-sequence/001.json +53 -0
  13. package/examples/integrity/invalid/missing-sequence/002.json +51 -0
  14. package/examples/integrity/invalid/missing-sequence/003.json +43 -0
  15. package/examples/integrity/invalid/reordered-chain/001.json +53 -0
  16. package/examples/integrity/invalid/reordered-chain/002.json +52 -0
  17. package/examples/integrity/invalid/reordered-chain/003.json +43 -0
  18. package/examples/integrity/invalid/tampered-event.json +51 -0
  19. package/examples/integrity/invalid/tampered-signed-event.json +46 -0
  20. package/examples/integrity/invalid/unsupported-algorithm.json +51 -0
  21. package/examples/integrity/invalid/unsupported-signature-algorithm.json +46 -0
  22. package/examples/integrity/invalid/wrong-declared-hash.json +51 -0
  23. package/examples/integrity/keys/ed25519-test-public.pem +3 -0
  24. package/examples/integrity/valid/signed-event-ed25519.json +46 -0
  25. package/examples/integrity/valid/single-event-sha256.json +51 -0
  26. package/examples/integrity/valid/three-event-chain/001.json +53 -0
  27. package/examples/integrity/valid/three-event-chain/002.json +52 -0
  28. package/examples/integrity/valid/three-event-chain/003.json +43 -0
  29. package/examples/integrity/valid/unicode-and-number-event.json +68 -0
  30. package/examples/invalid/README.md +38 -0
  31. package/examples/invalid/delegation-without-subject.json +27 -0
  32. package/examples/invalid/failure-without-error.json +28 -0
  33. package/examples/invalid/invalid-event-name.json +22 -0
  34. package/examples/invalid/invalid-extension-name.json +25 -0
  35. package/examples/invalid/missing-actor.json +18 -0
  36. package/examples/invalid/missing-resource.json +18 -0
  37. package/examples/invalid/unknown-core-property.json +23 -0
  38. package/examples/privacy/README.md +101 -0
  39. package/examples/privacy/clean/hashes-and-identifiers.json +42 -0
  40. package/examples/privacy/clean/minimal-clean-event.json +22 -0
  41. package/examples/privacy/clean/safe-evidence-reference.json +43 -0
  42. package/examples/privacy/clean/sanitized-change.json +40 -0
  43. package/examples/privacy/clean/structured-metadata.json +43 -0
  44. package/examples/privacy/findings/access-token-field.json +27 -0
  45. package/examples/privacy/findings/bearer-token.json +26 -0
  46. package/examples/privacy/findings/credentialed-connection-string.json +26 -0
  47. package/examples/privacy/findings/evidence-query-string.json +29 -0
  48. package/examples/privacy/findings/high-entropy-token.json +26 -0
  49. package/examples/privacy/findings/jwt-token.json +26 -0
  50. package/examples/privacy/findings/oversized-change-before.json +89 -0
  51. package/examples/privacy/findings/password-field.json +27 -0
  52. package/examples/privacy/findings/private-key.json +26 -0
  53. package/examples/privacy/findings/raw-response-body.json +26 -0
  54. package/examples/privacy/findings/url-userinfo.json +26 -0
  55. package/examples/profiles/api-and-integration-management/README.md +119 -0
  56. package/examples/profiles/api-and-integration-management/invalid/api-key-create-missing-authentication.json +64 -0
  57. package/examples/profiles/api-and-integration-management/invalid/api-key-create-missing-authorization.json +64 -0
  58. package/examples/profiles/api-and-integration-management/invalid/api-key-rotate-missing-credential-reference.json +58 -0
  59. package/examples/profiles/api-and-integration-management/invalid/integration-configuration-update-missing-connection-id.json +67 -0
  60. package/examples/profiles/api-and-integration-management/invalid/integration-connect-missing-approval-status.json +78 -0
  61. package/examples/profiles/api-and-integration-management/invalid/integration-disconnect-missing-authentication.json +63 -0
  62. package/examples/profiles/api-and-integration-management/invalid/integration-reauthorize-missing-error-type.json +68 -0
  63. package/examples/profiles/api-and-integration-management/invalid/integration-sync-start-missing-correlation-id.json +58 -0
  64. package/examples/profiles/api-and-integration-management/invalid/webhook-create-missing-endpoint-class.json +63 -0
  65. package/examples/profiles/api-and-integration-management/invalid/webhook-create-missing-type.json +63 -0
  66. package/examples/profiles/api-and-integration-management/invalid/webhook-disable-missing-reason.json +58 -0
  67. package/examples/profiles/api-and-integration-management/invalid/webhook-update-missing-change.json +63 -0
  68. package/examples/profiles/api-and-integration-management/not-applicable/api-request.json +45 -0
  69. package/examples/profiles/api-and-integration-management/not-applicable/integration-sync-progress.json +44 -0
  70. package/examples/profiles/api-and-integration-management/not-applicable/webhook-delivery.json +44 -0
  71. package/examples/profiles/api-and-integration-management/valid/api-key-create.json +70 -0
  72. package/examples/profiles/api-and-integration-management/valid/api-key-revoke.json +72 -0
  73. package/examples/profiles/api-and-integration-management/valid/api-key-rotate.json +59 -0
  74. package/examples/profiles/api-and-integration-management/valid/integration-configuration-update.json +68 -0
  75. package/examples/profiles/api-and-integration-management/valid/integration-connect.json +79 -0
  76. package/examples/profiles/api-and-integration-management/valid/integration-disconnect.json +69 -0
  77. package/examples/profiles/api-and-integration-management/valid/integration-reauthorize-failure.json +69 -0
  78. package/examples/profiles/api-and-integration-management/valid/integration-sync-cancel.json +65 -0
  79. package/examples/profiles/api-and-integration-management/valid/integration-sync-start.json +59 -0
  80. package/examples/profiles/api-and-integration-management/valid/webhook-create.json +64 -0
  81. package/examples/profiles/api-and-integration-management/valid/webhook-disable.json +63 -0
  82. package/examples/profiles/api-and-integration-management/valid/webhook-test.json +59 -0
  83. package/examples/profiles/api-and-integration-management/valid/webhook-update.json +76 -0
  84. package/examples/profiles/backup-and-recovery/README.md +127 -0
  85. package/examples/profiles/backup-and-recovery/invalid/backup-complete-missing-backup-id.json +55 -0
  86. package/examples/profiles/backup-and-recovery/invalid/backup-complete-missing-recovery-point.json +55 -0
  87. package/examples/profiles/backup-and-recovery/invalid/backup-create-missing-authorization.json +50 -0
  88. package/examples/profiles/backup-and-recovery/invalid/backup-delete-missing-reason.json +78 -0
  89. package/examples/profiles/backup-and-recovery/invalid/backup-expire-missing-retention-class.json +55 -0
  90. package/examples/profiles/backup-and-recovery/invalid/backup-verify-missing-verification-status.json +66 -0
  91. package/examples/profiles/backup-and-recovery/invalid/policy-update-missing-change.json +65 -0
  92. package/examples/profiles/backup-and-recovery/invalid/recovery-failover-missing-recovery-id.json +71 -0
  93. package/examples/profiles/backup-and-recovery/invalid/recovery-failover-missing-target-scope.json +71 -0
  94. package/examples/profiles/backup-and-recovery/invalid/restore-start-missing-approval.json +66 -0
  95. package/examples/profiles/backup-and-recovery/invalid/restore-start-missing-source-id.json +73 -0
  96. package/examples/profiles/backup-and-recovery/invalid/snapshot-create-missing-snapshot-id.json +57 -0
  97. package/examples/profiles/backup-and-recovery/not-applicable/backup-chunk-write.json +43 -0
  98. package/examples/profiles/backup-and-recovery/not-applicable/restore-progress.json +42 -0
  99. package/examples/profiles/backup-and-recovery/not-applicable/storage-replica-heartbeat.json +37 -0
  100. package/examples/profiles/backup-and-recovery/valid/backup-complete-failed.json +62 -0
  101. package/examples/profiles/backup-and-recovery/valid/backup-complete.json +56 -0
  102. package/examples/profiles/backup-and-recovery/valid/backup-create.json +56 -0
  103. package/examples/profiles/backup-and-recovery/valid/backup-delete.json +83 -0
  104. package/examples/profiles/backup-and-recovery/valid/backup-expire.json +56 -0
  105. package/examples/profiles/backup-and-recovery/valid/backup-verify.json +67 -0
  106. package/examples/profiles/backup-and-recovery/valid/policy-update.json +78 -0
  107. package/examples/profiles/backup-and-recovery/valid/recovery-complete.json +61 -0
  108. package/examples/profiles/backup-and-recovery/valid/recovery-failback.json +72 -0
  109. package/examples/profiles/backup-and-recovery/valid/recovery-failover.json +72 -0
  110. package/examples/profiles/backup-and-recovery/valid/recovery-start.json +61 -0
  111. package/examples/profiles/backup-and-recovery/valid/restore-complete.json +63 -0
  112. package/examples/profiles/backup-and-recovery/valid/restore-start.json +74 -0
  113. package/examples/profiles/backup-and-recovery/valid/snapshot-create.json +58 -0
  114. package/examples/profiles/backup-and-recovery/valid/snapshot-delete.json +60 -0
  115. package/examples/profiles/customer-and-account-management/README.md +127 -0
  116. package/examples/profiles/customer-and-account-management/invalid/account-close-missing-approval.json +70 -0
  117. package/examples/profiles/customer-and-account-management/invalid/account-freeze-missing-restriction-scope.json +83 -0
  118. package/examples/profiles/customer-and-account-management/invalid/account-freeze-missing-status.json +83 -0
  119. package/examples/profiles/customer-and-account-management/invalid/account-limit-missing-before.json +74 -0
  120. package/examples/profiles/customer-and-account-management/invalid/account-open-missing-owner.json +58 -0
  121. package/examples/profiles/customer-and-account-management/invalid/account-status-missing-subject.json +73 -0
  122. package/examples/profiles/customer-and-account-management/invalid/account-update-missing-override-reason.json +67 -0
  123. package/examples/profiles/customer-and-account-management/invalid/customer-close-missing-authorization.json +69 -0
  124. package/examples/profiles/customer-and-account-management/invalid/customer-create-missing-customer-type.json +62 -0
  125. package/examples/profiles/customer-and-account-management/invalid/customer-delete-missing-scope.json +70 -0
  126. package/examples/profiles/customer-and-account-management/invalid/customer-merge-missing-source.json +78 -0
  127. package/examples/profiles/customer-and-account-management/invalid/customer-update-missing-change.json +61 -0
  128. package/examples/profiles/customer-and-account-management/not-applicable/account-balance-view.json +39 -0
  129. package/examples/profiles/customer-and-account-management/not-applicable/customer-profile-view.json +38 -0
  130. package/examples/profiles/customer-and-account-management/not-applicable/customer-search.json +38 -0
  131. package/examples/profiles/customer-and-account-management/valid/account-close-approved.json +78 -0
  132. package/examples/profiles/customer-and-account-management/valid/account-freeze.json +84 -0
  133. package/examples/profiles/customer-and-account-management/valid/account-limit-increase.json +77 -0
  134. package/examples/profiles/customer-and-account-management/valid/account-open.json +59 -0
  135. package/examples/profiles/customer-and-account-management/valid/account-status-on-behalf.json +79 -0
  136. package/examples/profiles/customer-and-account-management/valid/account-update-override.json +72 -0
  137. package/examples/profiles/customer-and-account-management/valid/customer-close.json +75 -0
  138. package/examples/profiles/customer-and-account-management/valid/customer-create.json +63 -0
  139. package/examples/profiles/customer-and-account-management/valid/customer-delete.json +71 -0
  140. package/examples/profiles/customer-and-account-management/valid/customer-merge.json +79 -0
  141. package/examples/profiles/customer-and-account-management/valid/customer-restrict.json +76 -0
  142. package/examples/profiles/customer-and-account-management/valid/customer-update.json +65 -0
  143. package/examples/profiles/deployment-and-change-management/README.md +115 -0
  144. package/examples/profiles/deployment-and-change-management/invalid/cancel-missing-authorization.json +59 -0
  145. package/examples/profiles/deployment-and-change-management/invalid/cancel-missing-reason.json +61 -0
  146. package/examples/profiles/deployment-and-change-management/invalid/change-request-approve-missing-approval.json +57 -0
  147. package/examples/profiles/deployment-and-change-management/invalid/configuration-update-missing-authorization.json +81 -0
  148. package/examples/profiles/deployment-and-change-management/invalid/deploy-approved-missing-approval.json +73 -0
  149. package/examples/profiles/deployment-and-change-management/invalid/deploy-failed-missing-resulting-state.json +71 -0
  150. package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-approval-required.json +67 -0
  151. package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-deployment-id.json +67 -0
  152. package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-environment.json +67 -0
  153. package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-previous-version.json +67 -0
  154. package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-version.json +67 -0
  155. package/examples/profiles/deployment-and-change-management/invalid/deploy-partial-missing-resulting-state.json +68 -0
  156. package/examples/profiles/deployment-and-change-management/invalid/secret-rotate-missing-changed-fields.json +72 -0
  157. package/examples/profiles/deployment-and-change-management/invalid/secret-rotate-missing-reason.json +68 -0
  158. package/examples/profiles/deployment-and-change-management/not-applicable/build-log-append.json +33 -0
  159. package/examples/profiles/deployment-and-change-management/not-applicable/pipeline-poll.json +33 -0
  160. package/examples/profiles/deployment-and-change-management/not-applicable/secret-access.json +39 -0
  161. package/examples/profiles/deployment-and-change-management/valid/change-request-approve.json +69 -0
  162. package/examples/profiles/deployment-and-change-management/valid/configuration-update.json +88 -0
  163. package/examples/profiles/deployment-and-change-management/valid/deploy-approved.json +85 -0
  164. package/examples/profiles/deployment-and-change-management/valid/deploy-automated.json +68 -0
  165. package/examples/profiles/deployment-and-change-management/valid/deploy-failed.json +72 -0
  166. package/examples/profiles/deployment-and-change-management/valid/deploy-partial.json +69 -0
  167. package/examples/profiles/deployment-and-change-management/valid/infrastructure-apply.json +78 -0
  168. package/examples/profiles/deployment-and-change-management/valid/release-approve.json +77 -0
  169. package/examples/profiles/deployment-and-change-management/valid/release-cancel.json +65 -0
  170. package/examples/profiles/deployment-and-change-management/valid/release-create.json +53 -0
  171. package/examples/profiles/deployment-and-change-management/valid/rollback-emergency.json +80 -0
  172. package/examples/profiles/deployment-and-change-management/valid/secret-rotate-emergency.json +73 -0
  173. package/examples/profiles/document-management/README.md +80 -0
  174. package/examples/profiles/document-management/invalid/delete-missing-reason.json +53 -0
  175. package/examples/profiles/document-management/invalid/download-missing-classification.json +46 -0
  176. package/examples/profiles/document-management/invalid/external-share-missing-expiry.json +68 -0
  177. package/examples/profiles/document-management/invalid/external-share-missing-reason.json +64 -0
  178. package/examples/profiles/document-management/invalid/legal-hold-missing-state.json +63 -0
  179. package/examples/profiles/document-management/invalid/permission-grant-missing-grantee.json +57 -0
  180. package/examples/profiles/document-management/invalid/retention-update-missing-class.json +71 -0
  181. package/examples/profiles/document-management/invalid/share-create-missing-permission.json +53 -0
  182. package/examples/profiles/document-management/invalid/share-missing-recipient-type.json +53 -0
  183. package/examples/profiles/document-management/invalid/upload-missing-authorization.json +42 -0
  184. package/examples/profiles/document-management/invalid/version-rollback-missing-previous.json +58 -0
  185. package/examples/profiles/document-management/not-applicable/file-view.json +42 -0
  186. package/examples/profiles/document-management/valid/file-delete.json +58 -0
  187. package/examples/profiles/document-management/valid/file-download.json +47 -0
  188. package/examples/profiles/document-management/valid/file-upload.json +47 -0
  189. package/examples/profiles/document-management/valid/legal-hold-apply.json +64 -0
  190. package/examples/profiles/document-management/valid/permission-grant.json +58 -0
  191. package/examples/profiles/document-management/valid/retention-update.json +72 -0
  192. package/examples/profiles/document-management/valid/share-external.json +69 -0
  193. package/examples/profiles/document-management/valid/share-internal.json +54 -0
  194. package/examples/profiles/document-management/valid/share-revoke.json +56 -0
  195. package/examples/profiles/document-management/valid/version-rollback.json +59 -0
  196. package/examples/profiles/financial-transaction-management/README.md +123 -0
  197. package/examples/profiles/financial-transaction-management/invalid/limit-update-missing-limit-type.json +101 -0
  198. package/examples/profiles/financial-transaction-management/invalid/manual-deposit-missing-change.json +85 -0
  199. package/examples/profiles/financial-transaction-management/invalid/payment-capture-missing-amount.json +69 -0
  200. package/examples/profiles/financial-transaction-management/invalid/payment-capture-missing-authorization.json +65 -0
  201. package/examples/profiles/financial-transaction-management/invalid/payout-missing-direction.json +63 -0
  202. package/examples/profiles/financial-transaction-management/invalid/reconciliation-adjust-missing-change.json +79 -0
  203. package/examples/profiles/financial-transaction-management/invalid/reconciliation-missing-identifier.json +88 -0
  204. package/examples/profiles/financial-transaction-management/invalid/refund-missing-reason.json +70 -0
  205. package/examples/profiles/financial-transaction-management/invalid/reversal-missing-original-transaction.json +84 -0
  206. package/examples/profiles/financial-transaction-management/invalid/transfer-missing-related-resources.json +66 -0
  207. package/examples/profiles/financial-transaction-management/invalid/withdrawal-missing-approval-status.json +96 -0
  208. package/examples/profiles/financial-transaction-management/invalid/withdrawal-missing-correlation.json +96 -0
  209. package/examples/profiles/financial-transaction-management/not-applicable/balance-view.json +36 -0
  210. package/examples/profiles/financial-transaction-management/not-applicable/quote-create.json +33 -0
  211. package/examples/profiles/financial-transaction-management/not-applicable/report-generate.json +36 -0
  212. package/examples/profiles/financial-transaction-management/valid/chargeback-open.json +73 -0
  213. package/examples/profiles/financial-transaction-management/valid/deposit-manual-correction.json +86 -0
  214. package/examples/profiles/financial-transaction-management/valid/limit-update.json +92 -0
  215. package/examples/profiles/financial-transaction-management/valid/payment-capture.json +70 -0
  216. package/examples/profiles/financial-transaction-management/valid/payment-reject.json +76 -0
  217. package/examples/profiles/financial-transaction-management/valid/payout-execute.json +64 -0
  218. package/examples/profiles/financial-transaction-management/valid/reconciliation-adjust.json +85 -0
  219. package/examples/profiles/financial-transaction-management/valid/refund-create.json +75 -0
  220. package/examples/profiles/financial-transaction-management/valid/reversal-execute.json +80 -0
  221. package/examples/profiles/financial-transaction-management/valid/settlement-execute.json +70 -0
  222. package/examples/profiles/financial-transaction-management/valid/transfer-execute.json +74 -0
  223. package/examples/profiles/financial-transaction-management/valid/withdrawal-execute.json +91 -0
  224. package/examples/profiles/identity-and-access-management/README.md +93 -0
  225. package/examples/profiles/identity-and-access-management/invalid/credential-rotate-missing-reason.json +47 -0
  226. package/examples/profiles/identity-and-access-management/invalid/permission-grant-missing-scope.json +54 -0
  227. package/examples/profiles/identity-and-access-management/invalid/privileged-role-without-approval.json +68 -0
  228. package/examples/profiles/identity-and-access-management/invalid/privileged-role-without-mfa.json +83 -0
  229. package/examples/profiles/identity-and-access-management/invalid/role-assign-missing-authorization.json +54 -0
  230. package/examples/profiles/identity-and-access-management/invalid/role-assign-missing-role-id.json +60 -0
  231. package/examples/profiles/identity-and-access-management/invalid/service-account-missing-owner.json +53 -0
  232. package/examples/profiles/identity-and-access-management/not-applicable/document-share.json +49 -0
  233. package/examples/profiles/identity-and-access-management/valid/credential-rotate.json +59 -0
  234. package/examples/profiles/identity-and-access-management/valid/permission-revoke.json +77 -0
  235. package/examples/profiles/identity-and-access-management/valid/role-assign-privileged.json +87 -0
  236. package/examples/profiles/identity-and-access-management/valid/role-assign-standard.json +80 -0
  237. package/examples/profiles/identity-and-access-management/valid/service-account-create.json +55 -0
  238. package/examples/profiles/identity-and-access-management/valid/user-create.json +55 -0
  239. package/examples/profiles/identity-and-access-management/valid/user-disable.json +79 -0
  240. package/examples/profiles/incident-management/README.md +125 -0
  241. package/examples/profiles/incident-management/invalid/assignment-change-missing-assignee.json +69 -0
  242. package/examples/profiles/incident-management/invalid/assignment-change-missing-change.json +59 -0
  243. package/examples/profiles/incident-management/invalid/case-close-missing-approval.json +94 -0
  244. package/examples/profiles/incident-management/invalid/case-close-missing-authorization.json +108 -0
  245. package/examples/profiles/incident-management/invalid/case-close-missing-reason.json +109 -0
  246. package/examples/profiles/incident-management/invalid/case-create-missing-status.json +67 -0
  247. package/examples/profiles/incident-management/invalid/case-reopen-missing-change.json +66 -0
  248. package/examples/profiles/incident-management/invalid/case-reopen-missing-reason.json +72 -0
  249. package/examples/profiles/incident-management/invalid/case-resolve-missing-resolution-type.json +74 -0
  250. package/examples/profiles/incident-management/invalid/corrective-action-verify-missing-method.json +81 -0
  251. package/examples/profiles/incident-management/invalid/priority-change-missing-priority.json +73 -0
  252. package/examples/profiles/incident-management/invalid/rca-approve-missing-approval.json +66 -0
  253. package/examples/profiles/incident-management/invalid/rca-create-missing-method.json +72 -0
  254. package/examples/profiles/incident-management/invalid/sla-breach-missing-target.json +49 -0
  255. package/examples/profiles/incident-management/not-applicable/case-view.json +40 -0
  256. package/examples/profiles/incident-management/not-applicable/monitoring-alert-raise.json +40 -0
  257. package/examples/profiles/incident-management/not-applicable/note-create.json +46 -0
  258. package/examples/profiles/incident-management/valid/assignment-change.json +70 -0
  259. package/examples/profiles/incident-management/valid/case-close.json +114 -0
  260. package/examples/profiles/incident-management/valid/case-create.json +68 -0
  261. package/examples/profiles/incident-management/valid/case-reopen.json +77 -0
  262. package/examples/profiles/incident-management/valid/case-resolve.json +75 -0
  263. package/examples/profiles/incident-management/valid/corrective-action-open.json +72 -0
  264. package/examples/profiles/incident-management/valid/corrective-action-verify.json +82 -0
  265. package/examples/profiles/incident-management/valid/create-short-form.json +64 -0
  266. package/examples/profiles/incident-management/valid/major-declare.json +79 -0
  267. package/examples/profiles/incident-management/valid/priority-change.json +74 -0
  268. package/examples/profiles/incident-management/valid/problem-case-close.json +73 -0
  269. package/examples/profiles/incident-management/valid/rca-approve.json +86 -0
  270. package/examples/profiles/incident-management/valid/rca-create.json +73 -0
  271. package/examples/profiles/incident-management/valid/sla-breach.json +50 -0
  272. package/examples/profiles/message-broker-management/README.md +123 -0
  273. package/examples/profiles/message-broker-management/invalid/acl-grant-missing-principal.json +78 -0
  274. package/examples/profiles/message-broker-management/invalid/configuration-update-missing-change.json +58 -0
  275. package/examples/profiles/message-broker-management/invalid/message-replay-missing-scope.json +76 -0
  276. package/examples/profiles/message-broker-management/invalid/offset-reset-missing-target.json +96 -0
  277. package/examples/profiles/message-broker-management/invalid/queue-purge-missing-destructive-flag.json +79 -0
  278. package/examples/profiles/message-broker-management/invalid/queue-purge-missing-reason.json +77 -0
  279. package/examples/profiles/message-broker-management/invalid/quota-update-missing-dimension.json +72 -0
  280. package/examples/profiles/message-broker-management/invalid/topic-create-missing-authorization.json +61 -0
  281. package/examples/profiles/message-broker-management/invalid/topic-create-missing-classification.json +66 -0
  282. package/examples/profiles/message-broker-management/invalid/topic-create-missing-cluster.json +66 -0
  283. package/examples/profiles/message-broker-management/invalid/topic-delete-denied-missing-error-type.json +68 -0
  284. package/examples/profiles/message-broker-management/invalid/topic-delete-missing-approval.json +65 -0
  285. package/examples/profiles/message-broker-management/not-applicable/consumer-group-rebalance.json +40 -0
  286. package/examples/profiles/message-broker-management/not-applicable/message-consume.json +41 -0
  287. package/examples/profiles/message-broker-management/not-applicable/message-publish.json +41 -0
  288. package/examples/profiles/message-broker-management/valid/acl-grant.json +79 -0
  289. package/examples/profiles/message-broker-management/valid/cluster-upgrade.json +77 -0
  290. package/examples/profiles/message-broker-management/valid/configuration-update.json +65 -0
  291. package/examples/profiles/message-broker-management/valid/consumer-group-delete.json +64 -0
  292. package/examples/profiles/message-broker-management/valid/message-replay.json +77 -0
  293. package/examples/profiles/message-broker-management/valid/offset-reset.json +97 -0
  294. package/examples/profiles/message-broker-management/valid/queue-purge.json +82 -0
  295. package/examples/profiles/message-broker-management/valid/quota-update.json +73 -0
  296. package/examples/profiles/message-broker-management/valid/topic-create.json +67 -0
  297. package/examples/profiles/message-broker-management/valid/topic-delete-denied.json +69 -0
  298. package/examples/profiles/message-broker-management/valid/topic-delete.json +77 -0
  299. package/examples/profiles/message-broker-management/valid/topic-retention-reduce.json +77 -0
  300. package/examples/profiles/secrets-and-key-management/README.md +115 -0
  301. package/examples/profiles/secrets-and-key-management/invalid/certificate-issue-missing-expiry.json +54 -0
  302. package/examples/profiles/secrets-and-key-management/invalid/emergency-reveal-missing-approval.json +61 -0
  303. package/examples/profiles/secrets-and-key-management/invalid/key-destroy-missing-approval.json +56 -0
  304. package/examples/profiles/secrets-and-key-management/invalid/key-generate-missing-owner.json +56 -0
  305. package/examples/profiles/secrets-and-key-management/invalid/key-import-missing-reason.json +59 -0
  306. package/examples/profiles/secrets-and-key-management/invalid/policy-update-missing-change.json +61 -0
  307. package/examples/profiles/secrets-and-key-management/invalid/secret-create-missing-authorization.json +53 -0
  308. package/examples/profiles/secrets-and-key-management/invalid/secret-export-missing-destination.json +74 -0
  309. package/examples/profiles/secrets-and-key-management/invalid/secret-reveal-missing-reason.json +65 -0
  310. package/examples/profiles/secrets-and-key-management/invalid/secret-revoke-missing-reason.json +52 -0
  311. package/examples/profiles/secrets-and-key-management/invalid/secret-rotate-missing-change.json +48 -0
  312. package/examples/profiles/secrets-and-key-management/invalid/secret-rotate-missing-type.json +54 -0
  313. package/examples/profiles/secrets-and-key-management/not-applicable/key-decrypt.json +27 -0
  314. package/examples/profiles/secrets-and-key-management/not-applicable/secret-cache-refresh.json +27 -0
  315. package/examples/profiles/secrets-and-key-management/not-applicable/secret-retrieve.json +27 -0
  316. package/examples/profiles/secrets-and-key-management/valid/certificate-issue.json +55 -0
  317. package/examples/profiles/secrets-and-key-management/valid/key-destroy.json +64 -0
  318. package/examples/profiles/secrets-and-key-management/valid/key-export.json +73 -0
  319. package/examples/profiles/secrets-and-key-management/valid/key-generate.json +57 -0
  320. package/examples/profiles/secrets-and-key-management/valid/key-import.json +64 -0
  321. package/examples/profiles/secrets-and-key-management/valid/secret-create.json +59 -0
  322. package/examples/profiles/secrets-and-key-management/valid/secret-export.json +75 -0
  323. package/examples/profiles/secrets-and-key-management/valid/secret-policy-update.json +68 -0
  324. package/examples/profiles/secrets-and-key-management/valid/secret-reveal-emergency.json +68 -0
  325. package/examples/profiles/secrets-and-key-management/valid/secret-reveal.json +70 -0
  326. package/examples/profiles/secrets-and-key-management/valid/secret-revoke.json +57 -0
  327. package/examples/profiles/secrets-and-key-management/valid/secret-rotate.json +55 -0
  328. package/examples/valid/access-request-approval.json +47 -0
  329. package/examples/valid/document-external-share.json +92 -0
  330. package/examples/valid/incident-case-close.json +114 -0
  331. package/examples/valid/kafka-consumer-offset-reset.json +105 -0
  332. package/examples/valid/minimal-event.json +22 -0
  333. package/examples/valid/nightly-reconciliation-job.json +33 -0
  334. package/examples/valid/order-api-publish.json +34 -0
  335. package/examples/valid/order-consumer-new-trace.json +36 -0
  336. package/examples/valid/privileged-configuration-change.json +109 -0
  337. package/examples/valid/service-account-data-export.json +83 -0
  338. package/examples/valid/user-role-assignment.json +92 -0
  339. package/package.json +6 -2
@@ -0,0 +1,68 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f2a2b-7d40-7c19-a562-3e4f5a6b7c81",
4
+ "time": "2026-04-02T14:05:09.004Z",
5
+ "event": {
6
+ "name": "data.record.update",
7
+ "category": "data-modification",
8
+ "outcome": "success",
9
+ "summary": "Record updated with mixed-script content."
10
+ },
11
+ "actor": {
12
+ "type": "user",
13
+ "id": "user-4471"
14
+ },
15
+ "resource": {
16
+ "type": "record",
17
+ "id": "record-88213"
18
+ },
19
+ "application": {
20
+ "name": "records-service",
21
+ "environment": "production"
22
+ },
23
+ "metadata": {
24
+ "9": "digit keys sort as strings",
25
+ "10": "digit keys sort as strings, so 10 precedes 9",
26
+ "zeta": "sorts last among the lower-case keys",
27
+ "Alpha": "upper-case sorts before lower-case in UTF-16 code unit order",
28
+ "alpha": "sorts after the upper-case key",
29
+ "äpfel": "Latin-1 supplement",
30
+ "日本語": "CJK key",
31
+ "strings": {
32
+ "emoji": "🔒 sealed",
33
+ "combining": "é is not é",
34
+ "escapes": "quote \" backslash \\ tab \t newline \n",
35
+ "controlCharacter": "\u0007"
36
+ },
37
+ "numbers": {
38
+ "zero": 0,
39
+ "negative": -17,
40
+ "fraction": 3.14159,
41
+ "small": 0.000001,
42
+ "verySmall": 1e-7,
43
+ "large": 1e21,
44
+ "maxSafeInteger": 9007199254740991
45
+ },
46
+ "containers": {
47
+ "emptyObject": {},
48
+ "emptyArray": [],
49
+ "nested": [
50
+ 1,
51
+ [
52
+ 2,
53
+ [
54
+ 3,
55
+ {
56
+ "deep": null
57
+ }
58
+ ]
59
+ ]
60
+ ]
61
+ }
62
+ },
63
+ "integrity": {
64
+ "canonicalization": "RFC8785",
65
+ "hashAlgorithm": "SHA-256",
66
+ "hash": "5447ade98a9f6ff64bd26591055c29e49adae89160425a02531dd3b3df26dc11"
67
+ }
68
+ }
@@ -0,0 +1,38 @@
1
+ # Invalid examples
2
+
3
+ **Status: Informative.**
4
+
5
+ Every file in this directory MUST fail validation against the
6
+ [OpenAuditModel Audit Event Schema](../../schemas/v0.1/audit-event.schema.json). Each file is
7
+ otherwise a realistic, well-formed event with exactly one defect, so that a validator can be checked
8
+ for the precise error it reports rather than only for pass or fail.
9
+
10
+ The expectations below are asserted by
11
+ [`conformance/tests/invalid-examples.test.ts`](../../conformance/tests/invalid-examples.test.ts). If
12
+ a schema change alters any of these outcomes, the test fails and the change must be reviewed as a
13
+ compatibility question.
14
+
15
+ | File | Defect | Expected error location | Failing keyword |
16
+ | ------------------------------------------------------------------ | ---------------------------------------------------- | ----------------------- | ---------------------- |
17
+ | [missing-actor.json](missing-actor.json) | No `actor` | `/actor` | `required` |
18
+ | [missing-resource.json](missing-resource.json) | No `resource` | `/resource` | `required` |
19
+ | [invalid-event-name.json](invalid-event-name.json) | `Document.Share.Create` is not lower-case | `/event/name` | `pattern` |
20
+ | [failure-without-error.json](failure-without-error.json) | `outcome` is `failure` but `error` is absent | `/event/error` | `required` |
21
+ | [delegation-without-subject.json](delegation-without-subject.json) | `delegation.type` is `on-behalf-of` but no `subject` | `/subject` | `required` |
22
+ | [invalid-extension-name.json](invalid-extension-name.json) | `clusterId` is not a reverse-domain key | `/extensions/clusterId` | `propertyNames` |
23
+ | [unknown-core-property.json](unknown-core-property.json) | `actor.department` is not a core property | `/actor/department` | `additionalProperties` |
24
+
25
+ ## Notes on the conditional failures
26
+
27
+ `failure-without-error.json` and `delegation-without-subject.json` fail through `if`/`then`
28
+ conditions rather than a plain `required` list. A validator reports both the conditional keyword and
29
+ the specific missing property; the table above lists the specific property, because that is what an
30
+ implementer needs to act on.
31
+
32
+ ## What these examples are not
33
+
34
+ These files are not a complete negative test suite. Schema validation cannot detect a leaked secret,
35
+ a misused event name, or a `subject` that was populated with a target resource. Those failures are
36
+ addressed by [privacy.md](../../specification/privacy.md),
37
+ [event-naming.md](../../semantic-conventions/event-naming.md) and
38
+ [actor-model.md](../../specification/actor-model.md), and by review — not by the validator.
@@ -0,0 +1,27 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f1c05-5e6f-7071-c283-9e0f1a2b3c45",
4
+ "time": "2026-03-19T07:26:37Z",
5
+ "event": {
6
+ "name": "data.export.create",
7
+ "category": "data-access",
8
+ "outcome": "success"
9
+ },
10
+ "actor": {
11
+ "type": "service",
12
+ "id": "service-account-reporting-worker"
13
+ },
14
+ "delegation": {
15
+ "type": "on-behalf-of",
16
+ "reason": "Deferred execution of a previously requested export.",
17
+ "reference": "export-request-4471"
18
+ },
19
+ "resource": {
20
+ "type": "report",
21
+ "id": "export-4471"
22
+ },
23
+ "application": {
24
+ "name": "reporting-service",
25
+ "environment": "production"
26
+ }
27
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f1c04-4d5e-7f60-b172-8d9e0f1a2b34",
4
+ "time": "2026-03-19T07:19:03Z",
5
+ "event": {
6
+ "name": "authentication.login",
7
+ "category": "authentication",
8
+ "outcome": "failure",
9
+ "severity": "medium",
10
+ "summary": "Sign-in attempt rejected."
11
+ },
12
+ "actor": {
13
+ "type": "user",
14
+ "id": "user-2211"
15
+ },
16
+ "resource": {
17
+ "type": "session",
18
+ "id": "session-attempt-88f1"
19
+ },
20
+ "application": {
21
+ "name": "identity-service",
22
+ "environment": "production"
23
+ },
24
+ "authentication": {
25
+ "method": "password",
26
+ "provider": "corporate-idp"
27
+ }
28
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f1c03-3c4d-7e5f-a061-7c8d9e0f1a23",
4
+ "time": "2026-03-19T07:11:44Z",
5
+ "event": {
6
+ "name": "Document.Share.Create",
7
+ "category": "data-access",
8
+ "outcome": "success"
9
+ },
10
+ "actor": {
11
+ "type": "user",
12
+ "id": "user-5120"
13
+ },
14
+ "resource": {
15
+ "type": "document",
16
+ "id": "document-90311"
17
+ },
18
+ "application": {
19
+ "name": "document-service",
20
+ "environment": "production"
21
+ }
22
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f1c06-6f70-7182-d394-0f1a2b3c4d56",
4
+ "time": "2026-03-19T07:33:52Z",
5
+ "event": {
6
+ "name": "configuration.setting.update",
7
+ "category": "configuration",
8
+ "outcome": "success"
9
+ },
10
+ "actor": {
11
+ "type": "admin",
12
+ "id": "admin-0091"
13
+ },
14
+ "resource": {
15
+ "type": "configuration",
16
+ "id": "configuration-retention"
17
+ },
18
+ "application": {
19
+ "name": "platform-control-service",
20
+ "environment": "production"
21
+ },
22
+ "extensions": {
23
+ "clusterId": "production"
24
+ }
25
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f1c01-1a2b-7c3d-8e4f-5a6b7c8d9e01",
4
+ "time": "2026-03-19T07:00:00Z",
5
+ "event": {
6
+ "name": "document.file.download",
7
+ "category": "data-access",
8
+ "outcome": "success"
9
+ },
10
+ "resource": {
11
+ "type": "document",
12
+ "id": "document-4410"
13
+ },
14
+ "application": {
15
+ "name": "document-service",
16
+ "environment": "production"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f1c02-2b3c-7d4e-9f50-6b7c8d9e0f12",
4
+ "time": "2026-03-19T07:05:12Z",
5
+ "event": {
6
+ "name": "identity.role.revoke",
7
+ "category": "identity",
8
+ "outcome": "success"
9
+ },
10
+ "actor": {
11
+ "type": "admin",
12
+ "id": "admin-4821"
13
+ },
14
+ "application": {
15
+ "name": "identity-service",
16
+ "environment": "production"
17
+ }
18
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f1c07-7081-7293-e4a5-1a2b3c4d5e67",
4
+ "time": "2026-03-19T07:41:18Z",
5
+ "event": {
6
+ "name": "identity.user.disable",
7
+ "category": "identity",
8
+ "outcome": "success"
9
+ },
10
+ "actor": {
11
+ "type": "admin",
12
+ "id": "admin-4821",
13
+ "department": "finance"
14
+ },
15
+ "resource": {
16
+ "type": "user",
17
+ "id": "user-7391"
18
+ },
19
+ "application": {
20
+ "name": "identity-service",
21
+ "environment": "production"
22
+ }
23
+ }
@@ -0,0 +1,101 @@
1
+ # Privacy fixtures
2
+
3
+ **Status: Informative.** These fixtures illustrate and regression-test `auditmodel lint-privacy`. The
4
+ normative privacy requirements are [specification/privacy.md](../../specification/privacy.md); §6 of
5
+ that document describes the linter and its limits.
6
+
7
+ Every fixture here is a **schema-valid** event. The ones under `findings/` fail linting, not
8
+ validation — that separation is the point of having two commands.
9
+
10
+ ```bash
11
+ auditmodel lint-privacy examples/privacy/clean
12
+ auditmodel lint-privacy examples/privacy/findings
13
+ auditmodel lint-privacy examples/privacy --format json
14
+ ```
15
+
16
+ ## All values are synthetic and non-functional
17
+
18
+ No fixture in this directory contains a real credential, a valid API key, a real JSON Web Token, a
19
+ real private key, a real connection string or real personal data. Every value is invented for this
20
+ repository.
21
+
22
+ They are constructed to match a detector while being obviously useless:
23
+
24
+ - The JSON Web Token has a real base64url header and payload, so it is structurally a token, and a
25
+ signature that is the base64url encoding of the words `synthetic-signature-not-valid`. Nothing can
26
+ verify it.
27
+ - The private key fixture contains a PEM marker and the words `SYNTHETIC FIXTURE CONTENT, NOT A REAL
28
+ KEY` where key material would be. There is no key.
29
+ - Token-prefix values use runs of `S` and `0` after the published prefix.
30
+ - Hosts use `example.com`, reserved for documentation by RFC 2606.
31
+ - Credential values say what they are: `synthetic-fixture-value-not-a-real-password`.
32
+
33
+ Contributors adding fixtures MUST follow the same rule. A fixture that works is a leaked credential
34
+ in a public repository, and rotating it afterwards does not remove it from the history.
35
+
36
+ ## Clean fixtures
37
+
38
+ Every file under `clean/` MUST produce zero findings. They exist to catch false positives, which are
39
+ the failure mode that gets a linter switched off.
40
+
41
+ | Fixture | Exercises |
42
+ | ------------------------------------------------------------------ | ----------------------------------------------------------------------------- |
43
+ | [minimal-clean-event.json](clean/minimal-clean-event.json) | The seven required fields and nothing else |
44
+ | [hashes-and-identifiers.json](clean/hashes-and-identifiers.json) | UUID, ULID, trace and span identifiers, SHA-256/384/512 digests, timestamps |
45
+ | [safe-evidence-reference.json](clean/safe-evidence-reference.json) | Evidence URLs and reference paths with no query, fragment or user information |
46
+ | [sanitized-change.json](clean/sanitized-change.json) | A credential rotation recorded as changed **field names**, never values |
47
+ | [structured-metadata.json](clean/structured-metadata.json) | Small structured metadata, attributes and reverse-domain extensions |
48
+
49
+ `sanitized-change.json` is the one worth reading. It records rotating an API key with
50
+ `changedFields: ["secret", "rotatedAt"]` and a `before`/`after` holding only a timestamp and a version
51
+ number. The fact of the rotation is fully auditable; the secret appears nowhere.
52
+
53
+ ## Finding fixtures
54
+
55
+ Each file raises its documented rule. Expectations are asserted by
56
+ [`privacy-lint.test.ts`](../../conformance/tests/privacy-lint.test.ts).
57
+
58
+ | Fixture | Rule | Defect |
59
+ | ----------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------- |
60
+ | [password-field.json](findings/password-field.json) | `OAM-PRIV-001` | A property named `password` is populated |
61
+ | [access-token-field.json](findings/access-token-field.json) | `OAM-PRIV-001` | A property named `accessToken` is populated |
62
+ | [bearer-token.json](findings/bearer-token.json) | `OAM-PRIV-002` | A captured header value, under a harmless name |
63
+ | [private-key.json](findings/private-key.json) | `OAM-PRIV-003` | A PEM private key marker |
64
+ | [jwt-token.json](findings/jwt-token.json) | `OAM-PRIV-010` | A structurally valid token |
65
+ | [url-userinfo.json](findings/url-userinfo.json) | `OAM-PRIV-030` | A URL with an embedded user name and password |
66
+ | [evidence-query-string.json](findings/evidence-query-string.json) | `OAM-PRIV-031` | An evidence reference carrying signed access parameters |
67
+ | [credentialed-connection-string.json](findings/credentialed-connection-string.json) | `OAM-PRIV-040` | A database URL carrying a password |
68
+ | [high-entropy-token.json](findings/high-entropy-token.json) | `OAM-PRIV-050` | A long random-looking value under a neutral name |
69
+ | [oversized-change-before.json](findings/oversized-change-before.json) | `OAM-PRIV-060` | A `change.before` holding a whole record |
70
+ | [raw-response-body.json](findings/raw-response-body.json) | `OAM-PRIV-061` | A property named `responseBody` is populated |
71
+
72
+ ### Notes on individual fixtures
73
+
74
+ **`bearer-token.json` stores the header under `upstreamHeader`, not under `authorization`.** That is
75
+ deliberate: it proves the value rule fires on shape alone, without help from the property name. A
76
+ field actually named `authorization` would be caught by the name rule regardless of its contents.
77
+
78
+ **`high-entropy-token.json` reports at low confidence.** The value could be a session handle, an
79
+ opaque customer reference or a secret; the linter cannot tell, and says so. Compare it with
80
+ `hashes-and-identifiers.json`, where equally random-looking values are recognised as UUIDs, digests
81
+ and trace identifiers and produce nothing.
82
+
83
+ **`oversized-change-before.json` reports minimization, not exposure.** The finding says the value is
84
+ large enough to suggest an object was captured rather than selected. It does not claim the object
85
+ contains personal data, because nothing here can know that.
86
+
87
+ **`credentialed-connection-string.json` is reported as a connection string, not as a URL with user
88
+ information.** Both rules would match; reporting the more specific one avoids saying the same thing
89
+ twice. A host-only database URL is reported under a separate low-severity rule and is explicitly not
90
+ called a credential.
91
+
92
+ ## What these fixtures cannot show
93
+
94
+ There is no fixture for a password that is a dictionary word in a field named `note`, because nothing
95
+ detects it. There is none for a national identification number, a home address or a medical detail,
96
+ because the linter looks for values shaped like secrets and most personal data is not shaped like
97
+ anything.
98
+
99
+ Those are not gaps to be closed by better fixtures. They are the boundary of what deterministic
100
+ static analysis can do, and they are stated in
101
+ [privacy.md](../../specification/privacy.md) §6.3 and §6.9.
@@ -0,0 +1,42 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f3a02-2d31-7c51-8e62-3f4a5b6c7d81",
4
+ "time": "2026-05-04T09:03:18.220Z",
5
+ "event": {
6
+ "name": "data.export.create",
7
+ "category": "data-access",
8
+ "outcome": "success",
9
+ "summary": "Export produced for a scheduled report."
10
+ },
11
+ "actor": {
12
+ "type": "service",
13
+ "id": "service-account-reporting-worker"
14
+ },
15
+ "resource": {
16
+ "type": "report",
17
+ "id": "export-4471"
18
+ },
19
+ "application": {
20
+ "name": "reporting-service",
21
+ "environment": "production"
22
+ },
23
+ "request": {
24
+ "requestId": "request-e41b70",
25
+ "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
26
+ "spanId": "00f067aa0ba902b7",
27
+ "route": "/reports/{reportId}/exports"
28
+ },
29
+ "metadata": {
30
+ "correlationUuid": "018f1b5c-6d2a-7c3e-9a1b-4f5e6d7c8b9a",
31
+ "batchUlid": "01JAV3M5S4K9QF7N2W8XG6ZTQD",
32
+ "upstreamTraceId": "0af7651916cd43dd8448eb211c80319c",
33
+ "upstreamSpanId": "b7ad6b7169203331",
34
+ "contentSha256": "9f2a4c1d5e6b7a8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e",
35
+ "contentSha384": "fdbf4fdf2beca570d4ceb1a4bc6325c11ccb559e1f86c2e2d9506b8cbb1d029e1993ce4d6e857f61ae37d948170c19b5",
36
+ "contentSha512": "5cb695f7f51c858e8199175dbc8e7666929c7f8a1d5a0b42421eefe6131e3df639c6c0dd3f1e28656f8e147d051013937a69d727d5ca7b1ddf4330f8df2b458c",
37
+ "generatedAt": "2026-05-04T09:03:17.004Z",
38
+ "recordCount": 918273645,
39
+ "shortReference": "req-8841",
40
+ "sourceTopic": "payments.settlement.completed"
41
+ }
42
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f3a01-1c20-7b40-9d51-2e3f4a5b6c70",
4
+ "time": "2026-05-04T08:12:44.501Z",
5
+ "event": {
6
+ "name": "data.record.update",
7
+ "category": "data-modification",
8
+ "outcome": "success"
9
+ },
10
+ "actor": {
11
+ "type": "user",
12
+ "id": "user-123"
13
+ },
14
+ "resource": {
15
+ "type": "record",
16
+ "id": "resource-123"
17
+ },
18
+ "application": {
19
+ "name": "application-service",
20
+ "environment": "production"
21
+ }
22
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f3a03-3e42-7d62-9f73-4a5b6c7d8e92",
4
+ "time": "2026-05-04T10:41:02.310Z",
5
+ "event": {
6
+ "name": "incident.case.close",
7
+ "category": "workflow",
8
+ "outcome": "success"
9
+ },
10
+ "actor": {
11
+ "type": "user",
12
+ "id": "user-3301"
13
+ },
14
+ "resource": {
15
+ "type": "incident",
16
+ "id": "incident-2026-0418"
17
+ },
18
+ "application": {
19
+ "name": "incident-service",
20
+ "environment": "production"
21
+ },
22
+ "request": {
23
+ "route": "/incidents/{incidentId}/close",
24
+ "method": "POST",
25
+ "protocol": "https"
26
+ },
27
+ "reason": {
28
+ "code": "resolution-verified",
29
+ "text": "Corrective action verified in production for seven consecutive days.",
30
+ "reference": "rca-2026-0418"
31
+ },
32
+ "evidence": [
33
+ {
34
+ "type": "document",
35
+ "reference": "https://records.example.com/evidence/rca-2026-0418",
36
+ "contentType": "application/pdf"
37
+ },
38
+ {
39
+ "type": "approval",
40
+ "reference": "workflow-incident-closure/approval-request-9921"
41
+ }
42
+ ]
43
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f3a04-4f53-7e73-8a84-5b6c7d8e9fa3",
4
+ "time": "2026-05-04T11:22:39.882Z",
5
+ "event": {
6
+ "name": "identity.credential.rotate",
7
+ "category": "identity",
8
+ "type": "update",
9
+ "outcome": "success",
10
+ "severity": "high",
11
+ "summary": "Service account credential rotated on schedule."
12
+ },
13
+ "actor": {
14
+ "type": "service",
15
+ "id": "service-account-rotation-worker"
16
+ },
17
+ "resource": {
18
+ "type": "api-key",
19
+ "id": "api-key-4471",
20
+ "classification": "restricted"
21
+ },
22
+ "application": {
23
+ "name": "identity-service",
24
+ "environment": "production"
25
+ },
26
+ "change": {
27
+ "type": "update",
28
+ "changedFields": ["secret", "rotatedAt"],
29
+ "before": {
30
+ "rotatedAt": "2026-02-04T11:22:39Z",
31
+ "version": 7
32
+ },
33
+ "after": {
34
+ "rotatedAt": "2026-05-04T11:22:39Z",
35
+ "version": 8
36
+ },
37
+ "ticketId": "change-8812"
38
+ },
39
+ "controlCategories": ["authentication-logging", "privileged-access"]
40
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f3a05-5a64-7f84-9b95-6c7d8e9fa0b4",
4
+ "time": "2026-05-04T12:05:11.470Z",
5
+ "event": {
6
+ "name": "identity.role.assign",
7
+ "category": "identity",
8
+ "type": "update",
9
+ "outcome": "success"
10
+ },
11
+ "actor": {
12
+ "type": "admin",
13
+ "id": "admin-4821",
14
+ "attributes": {
15
+ "workstationClass": "managed",
16
+ "onCall": true
17
+ }
18
+ },
19
+ "resource": {
20
+ "type": "user",
21
+ "id": "user-7391",
22
+ "attributes": {
23
+ "accountAge": 412,
24
+ "directoryPartition": "eu-partition-2"
25
+ }
26
+ },
27
+ "application": {
28
+ "name": "identity-service",
29
+ "environment": "production"
30
+ },
31
+ "metadata": {
32
+ "assignedRole": "support-agent",
33
+ "assignmentScope": "tenant",
34
+ "effectiveFrom": "2026-05-06T00:00:00Z",
35
+ "expiresAt": "2026-08-06T00:00:00Z",
36
+ "approverCount": 2
37
+ },
38
+ "extensions": {
39
+ "com.example.identity.directory.id": "directory-1",
40
+ "com.example.workflow.stage": "completed",
41
+ "io.vendor.product.feature.enabled": true
42
+ }
43
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f3b02-1111-7222-8333-000000000002",
4
+ "time": "2026-05-05T09:00:00.000Z",
5
+ "event": {
6
+ "name": "data.record.update",
7
+ "category": "data-modification",
8
+ "outcome": "success",
9
+ "summary": "Synthetic fixture for privacy linting."
10
+ },
11
+ "actor": {
12
+ "type": "service",
13
+ "id": "service-integration-worker"
14
+ },
15
+ "resource": {
16
+ "type": "record",
17
+ "id": "record-4471"
18
+ },
19
+ "application": {
20
+ "name": "integration-service",
21
+ "environment": "production"
22
+ },
23
+ "metadata": {
24
+ "integrationName": "legacy-connector",
25
+ "accessToken": "synthetic-fixture-value-not-a-real-token"
26
+ }
27
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f3b03-1111-7222-8333-000000000003",
4
+ "time": "2026-05-05T09:00:00.000Z",
5
+ "event": {
6
+ "name": "data.record.update",
7
+ "category": "data-modification",
8
+ "outcome": "success",
9
+ "summary": "Synthetic fixture for privacy linting."
10
+ },
11
+ "actor": {
12
+ "type": "service",
13
+ "id": "service-integration-worker"
14
+ },
15
+ "resource": {
16
+ "type": "record",
17
+ "id": "record-4471"
18
+ },
19
+ "application": {
20
+ "name": "integration-service",
21
+ "environment": "production"
22
+ },
23
+ "metadata": {
24
+ "upstreamHeader": "Bearer SYNTHETICFIXTUREVALUE0000000000NOTAREALTOKEN"
25
+ }
26
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "specVersion": "0.1",
3
+ "id": "018f3b08-1111-7222-8333-000000000008",
4
+ "time": "2026-05-05T09:00:00.000Z",
5
+ "event": {
6
+ "name": "data.record.update",
7
+ "category": "data-modification",
8
+ "outcome": "success",
9
+ "summary": "Synthetic fixture for privacy linting."
10
+ },
11
+ "actor": {
12
+ "type": "service",
13
+ "id": "service-integration-worker"
14
+ },
15
+ "resource": {
16
+ "type": "record",
17
+ "id": "record-4471"
18
+ },
19
+ "application": {
20
+ "name": "integration-service",
21
+ "environment": "production"
22
+ },
23
+ "metadata": {
24
+ "dataSource": "postgresql://synthetic_user:synthetic_password@db.example.com:5432/records"
25
+ }
26
+ }