@openauditmodel/cli 0.4.1 → 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.
- package/README.md +1 -1
- package/conformance-kit/README.md +109 -0
- package/conformance-kit/manifest.json +8023 -0
- package/examples/README.md +62 -0
- package/examples/integrity/README.md +103 -0
- package/examples/integrity/invalid/broken-previous-hash/001.json +53 -0
- package/examples/integrity/invalid/broken-previous-hash/002.json +52 -0
- package/examples/integrity/invalid/broken-previous-hash/003.json +43 -0
- package/examples/integrity/invalid/duplicate-sequence/001.json +53 -0
- package/examples/integrity/invalid/duplicate-sequence/002.json +52 -0
- package/examples/integrity/invalid/duplicate-sequence/003.json +43 -0
- package/examples/integrity/invalid/missing-sequence/001.json +53 -0
- package/examples/integrity/invalid/missing-sequence/002.json +51 -0
- package/examples/integrity/invalid/missing-sequence/003.json +43 -0
- package/examples/integrity/invalid/reordered-chain/001.json +53 -0
- package/examples/integrity/invalid/reordered-chain/002.json +52 -0
- package/examples/integrity/invalid/reordered-chain/003.json +43 -0
- package/examples/integrity/invalid/tampered-event.json +51 -0
- package/examples/integrity/invalid/tampered-signed-event.json +46 -0
- package/examples/integrity/invalid/unsupported-algorithm.json +51 -0
- package/examples/integrity/invalid/unsupported-signature-algorithm.json +46 -0
- package/examples/integrity/invalid/wrong-declared-hash.json +51 -0
- package/examples/integrity/keys/ed25519-test-public.pem +3 -0
- package/examples/integrity/valid/signed-event-ed25519.json +46 -0
- package/examples/integrity/valid/single-event-sha256.json +51 -0
- package/examples/integrity/valid/three-event-chain/001.json +53 -0
- package/examples/integrity/valid/three-event-chain/002.json +52 -0
- package/examples/integrity/valid/three-event-chain/003.json +43 -0
- package/examples/integrity/valid/unicode-and-number-event.json +68 -0
- package/examples/invalid/README.md +38 -0
- package/examples/invalid/delegation-without-subject.json +27 -0
- package/examples/invalid/failure-without-error.json +28 -0
- package/examples/invalid/invalid-event-name.json +22 -0
- package/examples/invalid/invalid-extension-name.json +25 -0
- package/examples/invalid/missing-actor.json +18 -0
- package/examples/invalid/missing-resource.json +18 -0
- package/examples/invalid/unknown-core-property.json +23 -0
- package/examples/privacy/README.md +101 -0
- package/examples/privacy/clean/hashes-and-identifiers.json +42 -0
- package/examples/privacy/clean/minimal-clean-event.json +22 -0
- package/examples/privacy/clean/safe-evidence-reference.json +43 -0
- package/examples/privacy/clean/sanitized-change.json +40 -0
- package/examples/privacy/clean/structured-metadata.json +43 -0
- package/examples/privacy/findings/access-token-field.json +27 -0
- package/examples/privacy/findings/bearer-token.json +26 -0
- package/examples/privacy/findings/credentialed-connection-string.json +26 -0
- package/examples/privacy/findings/evidence-query-string.json +29 -0
- package/examples/privacy/findings/high-entropy-token.json +26 -0
- package/examples/privacy/findings/jwt-token.json +26 -0
- package/examples/privacy/findings/oversized-change-before.json +89 -0
- package/examples/privacy/findings/password-field.json +27 -0
- package/examples/privacy/findings/private-key.json +26 -0
- package/examples/privacy/findings/raw-response-body.json +26 -0
- package/examples/privacy/findings/url-userinfo.json +26 -0
- package/examples/profiles/api-and-integration-management/README.md +119 -0
- package/examples/profiles/api-and-integration-management/invalid/api-key-create-missing-authentication.json +64 -0
- package/examples/profiles/api-and-integration-management/invalid/api-key-create-missing-authorization.json +64 -0
- package/examples/profiles/api-and-integration-management/invalid/api-key-rotate-missing-credential-reference.json +58 -0
- package/examples/profiles/api-and-integration-management/invalid/integration-configuration-update-missing-connection-id.json +67 -0
- package/examples/profiles/api-and-integration-management/invalid/integration-connect-missing-approval-status.json +78 -0
- package/examples/profiles/api-and-integration-management/invalid/integration-disconnect-missing-authentication.json +63 -0
- package/examples/profiles/api-and-integration-management/invalid/integration-reauthorize-missing-error-type.json +68 -0
- package/examples/profiles/api-and-integration-management/invalid/integration-sync-start-missing-correlation-id.json +58 -0
- package/examples/profiles/api-and-integration-management/invalid/webhook-create-missing-endpoint-class.json +63 -0
- package/examples/profiles/api-and-integration-management/invalid/webhook-create-missing-type.json +63 -0
- package/examples/profiles/api-and-integration-management/invalid/webhook-disable-missing-reason.json +58 -0
- package/examples/profiles/api-and-integration-management/invalid/webhook-update-missing-change.json +63 -0
- package/examples/profiles/api-and-integration-management/not-applicable/api-request.json +45 -0
- package/examples/profiles/api-and-integration-management/not-applicable/integration-sync-progress.json +44 -0
- package/examples/profiles/api-and-integration-management/not-applicable/webhook-delivery.json +44 -0
- package/examples/profiles/api-and-integration-management/valid/api-key-create.json +70 -0
- package/examples/profiles/api-and-integration-management/valid/api-key-revoke.json +72 -0
- package/examples/profiles/api-and-integration-management/valid/api-key-rotate.json +59 -0
- package/examples/profiles/api-and-integration-management/valid/integration-configuration-update.json +68 -0
- package/examples/profiles/api-and-integration-management/valid/integration-connect.json +79 -0
- package/examples/profiles/api-and-integration-management/valid/integration-disconnect.json +69 -0
- package/examples/profiles/api-and-integration-management/valid/integration-reauthorize-failure.json +69 -0
- package/examples/profiles/api-and-integration-management/valid/integration-sync-cancel.json +65 -0
- package/examples/profiles/api-and-integration-management/valid/integration-sync-start.json +59 -0
- package/examples/profiles/api-and-integration-management/valid/webhook-create.json +64 -0
- package/examples/profiles/api-and-integration-management/valid/webhook-disable.json +63 -0
- package/examples/profiles/api-and-integration-management/valid/webhook-test.json +59 -0
- package/examples/profiles/api-and-integration-management/valid/webhook-update.json +76 -0
- package/examples/profiles/backup-and-recovery/README.md +127 -0
- package/examples/profiles/backup-and-recovery/invalid/backup-complete-missing-backup-id.json +55 -0
- package/examples/profiles/backup-and-recovery/invalid/backup-complete-missing-recovery-point.json +55 -0
- package/examples/profiles/backup-and-recovery/invalid/backup-create-missing-authorization.json +50 -0
- package/examples/profiles/backup-and-recovery/invalid/backup-delete-missing-reason.json +78 -0
- package/examples/profiles/backup-and-recovery/invalid/backup-expire-missing-retention-class.json +55 -0
- package/examples/profiles/backup-and-recovery/invalid/backup-verify-missing-verification-status.json +66 -0
- package/examples/profiles/backup-and-recovery/invalid/policy-update-missing-change.json +65 -0
- package/examples/profiles/backup-and-recovery/invalid/recovery-failover-missing-recovery-id.json +71 -0
- package/examples/profiles/backup-and-recovery/invalid/recovery-failover-missing-target-scope.json +71 -0
- package/examples/profiles/backup-and-recovery/invalid/restore-start-missing-approval.json +66 -0
- package/examples/profiles/backup-and-recovery/invalid/restore-start-missing-source-id.json +73 -0
- package/examples/profiles/backup-and-recovery/invalid/snapshot-create-missing-snapshot-id.json +57 -0
- package/examples/profiles/backup-and-recovery/not-applicable/backup-chunk-write.json +43 -0
- package/examples/profiles/backup-and-recovery/not-applicable/restore-progress.json +42 -0
- package/examples/profiles/backup-and-recovery/not-applicable/storage-replica-heartbeat.json +37 -0
- package/examples/profiles/backup-and-recovery/valid/backup-complete-failed.json +62 -0
- package/examples/profiles/backup-and-recovery/valid/backup-complete.json +56 -0
- package/examples/profiles/backup-and-recovery/valid/backup-create.json +56 -0
- package/examples/profiles/backup-and-recovery/valid/backup-delete.json +83 -0
- package/examples/profiles/backup-and-recovery/valid/backup-expire.json +56 -0
- package/examples/profiles/backup-and-recovery/valid/backup-verify.json +67 -0
- package/examples/profiles/backup-and-recovery/valid/policy-update.json +78 -0
- package/examples/profiles/backup-and-recovery/valid/recovery-complete.json +61 -0
- package/examples/profiles/backup-and-recovery/valid/recovery-failback.json +72 -0
- package/examples/profiles/backup-and-recovery/valid/recovery-failover.json +72 -0
- package/examples/profiles/backup-and-recovery/valid/recovery-start.json +61 -0
- package/examples/profiles/backup-and-recovery/valid/restore-complete.json +63 -0
- package/examples/profiles/backup-and-recovery/valid/restore-start.json +74 -0
- package/examples/profiles/backup-and-recovery/valid/snapshot-create.json +58 -0
- package/examples/profiles/backup-and-recovery/valid/snapshot-delete.json +60 -0
- package/examples/profiles/customer-and-account-management/README.md +127 -0
- package/examples/profiles/customer-and-account-management/invalid/account-close-missing-approval.json +70 -0
- package/examples/profiles/customer-and-account-management/invalid/account-freeze-missing-restriction-scope.json +83 -0
- package/examples/profiles/customer-and-account-management/invalid/account-freeze-missing-status.json +83 -0
- package/examples/profiles/customer-and-account-management/invalid/account-limit-missing-before.json +74 -0
- package/examples/profiles/customer-and-account-management/invalid/account-open-missing-owner.json +58 -0
- package/examples/profiles/customer-and-account-management/invalid/account-status-missing-subject.json +73 -0
- package/examples/profiles/customer-and-account-management/invalid/account-update-missing-override-reason.json +67 -0
- package/examples/profiles/customer-and-account-management/invalid/customer-close-missing-authorization.json +69 -0
- package/examples/profiles/customer-and-account-management/invalid/customer-create-missing-customer-type.json +62 -0
- package/examples/profiles/customer-and-account-management/invalid/customer-delete-missing-scope.json +70 -0
- package/examples/profiles/customer-and-account-management/invalid/customer-merge-missing-source.json +78 -0
- package/examples/profiles/customer-and-account-management/invalid/customer-update-missing-change.json +61 -0
- package/examples/profiles/customer-and-account-management/not-applicable/account-balance-view.json +39 -0
- package/examples/profiles/customer-and-account-management/not-applicable/customer-profile-view.json +38 -0
- package/examples/profiles/customer-and-account-management/not-applicable/customer-search.json +38 -0
- package/examples/profiles/customer-and-account-management/valid/account-close-approved.json +78 -0
- package/examples/profiles/customer-and-account-management/valid/account-freeze.json +84 -0
- package/examples/profiles/customer-and-account-management/valid/account-limit-increase.json +77 -0
- package/examples/profiles/customer-and-account-management/valid/account-open.json +59 -0
- package/examples/profiles/customer-and-account-management/valid/account-status-on-behalf.json +79 -0
- package/examples/profiles/customer-and-account-management/valid/account-update-override.json +72 -0
- package/examples/profiles/customer-and-account-management/valid/customer-close.json +75 -0
- package/examples/profiles/customer-and-account-management/valid/customer-create.json +63 -0
- package/examples/profiles/customer-and-account-management/valid/customer-delete.json +71 -0
- package/examples/profiles/customer-and-account-management/valid/customer-merge.json +79 -0
- package/examples/profiles/customer-and-account-management/valid/customer-restrict.json +76 -0
- package/examples/profiles/customer-and-account-management/valid/customer-update.json +65 -0
- package/examples/profiles/deployment-and-change-management/README.md +115 -0
- package/examples/profiles/deployment-and-change-management/invalid/cancel-missing-authorization.json +59 -0
- package/examples/profiles/deployment-and-change-management/invalid/cancel-missing-reason.json +61 -0
- package/examples/profiles/deployment-and-change-management/invalid/change-request-approve-missing-approval.json +57 -0
- package/examples/profiles/deployment-and-change-management/invalid/configuration-update-missing-authorization.json +81 -0
- package/examples/profiles/deployment-and-change-management/invalid/deploy-approved-missing-approval.json +73 -0
- package/examples/profiles/deployment-and-change-management/invalid/deploy-failed-missing-resulting-state.json +71 -0
- package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-approval-required.json +67 -0
- package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-deployment-id.json +67 -0
- package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-environment.json +67 -0
- package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-previous-version.json +67 -0
- package/examples/profiles/deployment-and-change-management/invalid/deploy-missing-version.json +67 -0
- package/examples/profiles/deployment-and-change-management/invalid/deploy-partial-missing-resulting-state.json +68 -0
- package/examples/profiles/deployment-and-change-management/invalid/secret-rotate-missing-changed-fields.json +72 -0
- package/examples/profiles/deployment-and-change-management/invalid/secret-rotate-missing-reason.json +68 -0
- package/examples/profiles/deployment-and-change-management/not-applicable/build-log-append.json +33 -0
- package/examples/profiles/deployment-and-change-management/not-applicable/pipeline-poll.json +33 -0
- package/examples/profiles/deployment-and-change-management/not-applicable/secret-access.json +39 -0
- package/examples/profiles/deployment-and-change-management/valid/change-request-approve.json +69 -0
- package/examples/profiles/deployment-and-change-management/valid/configuration-update.json +88 -0
- package/examples/profiles/deployment-and-change-management/valid/deploy-approved.json +85 -0
- package/examples/profiles/deployment-and-change-management/valid/deploy-automated.json +68 -0
- package/examples/profiles/deployment-and-change-management/valid/deploy-failed.json +72 -0
- package/examples/profiles/deployment-and-change-management/valid/deploy-partial.json +69 -0
- package/examples/profiles/deployment-and-change-management/valid/infrastructure-apply.json +78 -0
- package/examples/profiles/deployment-and-change-management/valid/release-approve.json +77 -0
- package/examples/profiles/deployment-and-change-management/valid/release-cancel.json +65 -0
- package/examples/profiles/deployment-and-change-management/valid/release-create.json +53 -0
- package/examples/profiles/deployment-and-change-management/valid/rollback-emergency.json +80 -0
- package/examples/profiles/deployment-and-change-management/valid/secret-rotate-emergency.json +73 -0
- package/examples/profiles/document-management/README.md +80 -0
- package/examples/profiles/document-management/invalid/delete-missing-reason.json +53 -0
- package/examples/profiles/document-management/invalid/download-missing-classification.json +46 -0
- package/examples/profiles/document-management/invalid/external-share-missing-expiry.json +68 -0
- package/examples/profiles/document-management/invalid/external-share-missing-reason.json +64 -0
- package/examples/profiles/document-management/invalid/legal-hold-missing-state.json +63 -0
- package/examples/profiles/document-management/invalid/permission-grant-missing-grantee.json +57 -0
- package/examples/profiles/document-management/invalid/retention-update-missing-class.json +71 -0
- package/examples/profiles/document-management/invalid/share-create-missing-permission.json +53 -0
- package/examples/profiles/document-management/invalid/share-missing-recipient-type.json +53 -0
- package/examples/profiles/document-management/invalid/upload-missing-authorization.json +42 -0
- package/examples/profiles/document-management/invalid/version-rollback-missing-previous.json +58 -0
- package/examples/profiles/document-management/not-applicable/file-view.json +42 -0
- package/examples/profiles/document-management/valid/file-delete.json +58 -0
- package/examples/profiles/document-management/valid/file-download.json +47 -0
- package/examples/profiles/document-management/valid/file-upload.json +47 -0
- package/examples/profiles/document-management/valid/legal-hold-apply.json +64 -0
- package/examples/profiles/document-management/valid/permission-grant.json +58 -0
- package/examples/profiles/document-management/valid/retention-update.json +72 -0
- package/examples/profiles/document-management/valid/share-external.json +69 -0
- package/examples/profiles/document-management/valid/share-internal.json +54 -0
- package/examples/profiles/document-management/valid/share-revoke.json +56 -0
- package/examples/profiles/document-management/valid/version-rollback.json +59 -0
- package/examples/profiles/financial-transaction-management/README.md +123 -0
- package/examples/profiles/financial-transaction-management/invalid/limit-update-missing-limit-type.json +101 -0
- package/examples/profiles/financial-transaction-management/invalid/manual-deposit-missing-change.json +85 -0
- package/examples/profiles/financial-transaction-management/invalid/payment-capture-missing-amount.json +69 -0
- package/examples/profiles/financial-transaction-management/invalid/payment-capture-missing-authorization.json +65 -0
- package/examples/profiles/financial-transaction-management/invalid/payout-missing-direction.json +63 -0
- package/examples/profiles/financial-transaction-management/invalid/reconciliation-adjust-missing-change.json +79 -0
- package/examples/profiles/financial-transaction-management/invalid/reconciliation-missing-identifier.json +88 -0
- package/examples/profiles/financial-transaction-management/invalid/refund-missing-reason.json +70 -0
- package/examples/profiles/financial-transaction-management/invalid/reversal-missing-original-transaction.json +84 -0
- package/examples/profiles/financial-transaction-management/invalid/transfer-missing-related-resources.json +66 -0
- package/examples/profiles/financial-transaction-management/invalid/withdrawal-missing-approval-status.json +96 -0
- package/examples/profiles/financial-transaction-management/invalid/withdrawal-missing-correlation.json +96 -0
- package/examples/profiles/financial-transaction-management/not-applicable/balance-view.json +36 -0
- package/examples/profiles/financial-transaction-management/not-applicable/quote-create.json +33 -0
- package/examples/profiles/financial-transaction-management/not-applicable/report-generate.json +36 -0
- package/examples/profiles/financial-transaction-management/valid/chargeback-open.json +73 -0
- package/examples/profiles/financial-transaction-management/valid/deposit-manual-correction.json +86 -0
- package/examples/profiles/financial-transaction-management/valid/limit-update.json +92 -0
- package/examples/profiles/financial-transaction-management/valid/payment-capture.json +70 -0
- package/examples/profiles/financial-transaction-management/valid/payment-reject.json +76 -0
- package/examples/profiles/financial-transaction-management/valid/payout-execute.json +64 -0
- package/examples/profiles/financial-transaction-management/valid/reconciliation-adjust.json +85 -0
- package/examples/profiles/financial-transaction-management/valid/refund-create.json +75 -0
- package/examples/profiles/financial-transaction-management/valid/reversal-execute.json +80 -0
- package/examples/profiles/financial-transaction-management/valid/settlement-execute.json +70 -0
- package/examples/profiles/financial-transaction-management/valid/transfer-execute.json +74 -0
- package/examples/profiles/financial-transaction-management/valid/withdrawal-execute.json +91 -0
- package/examples/profiles/identity-and-access-management/README.md +93 -0
- package/examples/profiles/identity-and-access-management/invalid/credential-rotate-missing-reason.json +47 -0
- package/examples/profiles/identity-and-access-management/invalid/permission-grant-missing-scope.json +54 -0
- package/examples/profiles/identity-and-access-management/invalid/privileged-role-without-approval.json +68 -0
- package/examples/profiles/identity-and-access-management/invalid/privileged-role-without-mfa.json +83 -0
- package/examples/profiles/identity-and-access-management/invalid/role-assign-missing-authorization.json +54 -0
- package/examples/profiles/identity-and-access-management/invalid/role-assign-missing-role-id.json +60 -0
- package/examples/profiles/identity-and-access-management/invalid/service-account-missing-owner.json +53 -0
- package/examples/profiles/identity-and-access-management/not-applicable/document-share.json +49 -0
- package/examples/profiles/identity-and-access-management/valid/credential-rotate.json +59 -0
- package/examples/profiles/identity-and-access-management/valid/permission-revoke.json +77 -0
- package/examples/profiles/identity-and-access-management/valid/role-assign-privileged.json +87 -0
- package/examples/profiles/identity-and-access-management/valid/role-assign-standard.json +80 -0
- package/examples/profiles/identity-and-access-management/valid/service-account-create.json +55 -0
- package/examples/profiles/identity-and-access-management/valid/user-create.json +55 -0
- package/examples/profiles/identity-and-access-management/valid/user-disable.json +79 -0
- package/examples/profiles/incident-management/README.md +125 -0
- package/examples/profiles/incident-management/invalid/assignment-change-missing-assignee.json +69 -0
- package/examples/profiles/incident-management/invalid/assignment-change-missing-change.json +59 -0
- package/examples/profiles/incident-management/invalid/case-close-missing-approval.json +94 -0
- package/examples/profiles/incident-management/invalid/case-close-missing-authorization.json +108 -0
- package/examples/profiles/incident-management/invalid/case-close-missing-reason.json +109 -0
- package/examples/profiles/incident-management/invalid/case-create-missing-status.json +67 -0
- package/examples/profiles/incident-management/invalid/case-reopen-missing-change.json +66 -0
- package/examples/profiles/incident-management/invalid/case-reopen-missing-reason.json +72 -0
- package/examples/profiles/incident-management/invalid/case-resolve-missing-resolution-type.json +74 -0
- package/examples/profiles/incident-management/invalid/corrective-action-verify-missing-method.json +81 -0
- package/examples/profiles/incident-management/invalid/priority-change-missing-priority.json +73 -0
- package/examples/profiles/incident-management/invalid/rca-approve-missing-approval.json +66 -0
- package/examples/profiles/incident-management/invalid/rca-create-missing-method.json +72 -0
- package/examples/profiles/incident-management/invalid/sla-breach-missing-target.json +49 -0
- package/examples/profiles/incident-management/not-applicable/case-view.json +40 -0
- package/examples/profiles/incident-management/not-applicable/monitoring-alert-raise.json +40 -0
- package/examples/profiles/incident-management/not-applicable/note-create.json +46 -0
- package/examples/profiles/incident-management/valid/assignment-change.json +70 -0
- package/examples/profiles/incident-management/valid/case-close.json +114 -0
- package/examples/profiles/incident-management/valid/case-create.json +68 -0
- package/examples/profiles/incident-management/valid/case-reopen.json +77 -0
- package/examples/profiles/incident-management/valid/case-resolve.json +75 -0
- package/examples/profiles/incident-management/valid/corrective-action-open.json +72 -0
- package/examples/profiles/incident-management/valid/corrective-action-verify.json +82 -0
- package/examples/profiles/incident-management/valid/create-short-form.json +64 -0
- package/examples/profiles/incident-management/valid/major-declare.json +79 -0
- package/examples/profiles/incident-management/valid/priority-change.json +74 -0
- package/examples/profiles/incident-management/valid/problem-case-close.json +73 -0
- package/examples/profiles/incident-management/valid/rca-approve.json +86 -0
- package/examples/profiles/incident-management/valid/rca-create.json +73 -0
- package/examples/profiles/incident-management/valid/sla-breach.json +50 -0
- package/examples/profiles/message-broker-management/README.md +123 -0
- package/examples/profiles/message-broker-management/invalid/acl-grant-missing-principal.json +78 -0
- package/examples/profiles/message-broker-management/invalid/configuration-update-missing-change.json +58 -0
- package/examples/profiles/message-broker-management/invalid/message-replay-missing-scope.json +76 -0
- package/examples/profiles/message-broker-management/invalid/offset-reset-missing-target.json +96 -0
- package/examples/profiles/message-broker-management/invalid/queue-purge-missing-destructive-flag.json +79 -0
- package/examples/profiles/message-broker-management/invalid/queue-purge-missing-reason.json +77 -0
- package/examples/profiles/message-broker-management/invalid/quota-update-missing-dimension.json +72 -0
- package/examples/profiles/message-broker-management/invalid/topic-create-missing-authorization.json +61 -0
- package/examples/profiles/message-broker-management/invalid/topic-create-missing-classification.json +66 -0
- package/examples/profiles/message-broker-management/invalid/topic-create-missing-cluster.json +66 -0
- package/examples/profiles/message-broker-management/invalid/topic-delete-denied-missing-error-type.json +68 -0
- package/examples/profiles/message-broker-management/invalid/topic-delete-missing-approval.json +65 -0
- package/examples/profiles/message-broker-management/not-applicable/consumer-group-rebalance.json +40 -0
- package/examples/profiles/message-broker-management/not-applicable/message-consume.json +41 -0
- package/examples/profiles/message-broker-management/not-applicable/message-publish.json +41 -0
- package/examples/profiles/message-broker-management/valid/acl-grant.json +79 -0
- package/examples/profiles/message-broker-management/valid/cluster-upgrade.json +77 -0
- package/examples/profiles/message-broker-management/valid/configuration-update.json +65 -0
- package/examples/profiles/message-broker-management/valid/consumer-group-delete.json +64 -0
- package/examples/profiles/message-broker-management/valid/message-replay.json +77 -0
- package/examples/profiles/message-broker-management/valid/offset-reset.json +97 -0
- package/examples/profiles/message-broker-management/valid/queue-purge.json +82 -0
- package/examples/profiles/message-broker-management/valid/quota-update.json +73 -0
- package/examples/profiles/message-broker-management/valid/topic-create.json +67 -0
- package/examples/profiles/message-broker-management/valid/topic-delete-denied.json +69 -0
- package/examples/profiles/message-broker-management/valid/topic-delete.json +77 -0
- package/examples/profiles/message-broker-management/valid/topic-retention-reduce.json +77 -0
- package/examples/profiles/secrets-and-key-management/README.md +115 -0
- package/examples/profiles/secrets-and-key-management/invalid/certificate-issue-missing-expiry.json +54 -0
- package/examples/profiles/secrets-and-key-management/invalid/emergency-reveal-missing-approval.json +61 -0
- package/examples/profiles/secrets-and-key-management/invalid/key-destroy-missing-approval.json +56 -0
- package/examples/profiles/secrets-and-key-management/invalid/key-generate-missing-owner.json +56 -0
- package/examples/profiles/secrets-and-key-management/invalid/key-import-missing-reason.json +59 -0
- package/examples/profiles/secrets-and-key-management/invalid/policy-update-missing-change.json +61 -0
- package/examples/profiles/secrets-and-key-management/invalid/secret-create-missing-authorization.json +53 -0
- package/examples/profiles/secrets-and-key-management/invalid/secret-export-missing-destination.json +74 -0
- package/examples/profiles/secrets-and-key-management/invalid/secret-reveal-missing-reason.json +65 -0
- package/examples/profiles/secrets-and-key-management/invalid/secret-revoke-missing-reason.json +52 -0
- package/examples/profiles/secrets-and-key-management/invalid/secret-rotate-missing-change.json +48 -0
- package/examples/profiles/secrets-and-key-management/invalid/secret-rotate-missing-type.json +54 -0
- package/examples/profiles/secrets-and-key-management/not-applicable/key-decrypt.json +27 -0
- package/examples/profiles/secrets-and-key-management/not-applicable/secret-cache-refresh.json +27 -0
- package/examples/profiles/secrets-and-key-management/not-applicable/secret-retrieve.json +27 -0
- package/examples/profiles/secrets-and-key-management/valid/certificate-issue.json +55 -0
- package/examples/profiles/secrets-and-key-management/valid/key-destroy.json +64 -0
- package/examples/profiles/secrets-and-key-management/valid/key-export.json +73 -0
- package/examples/profiles/secrets-and-key-management/valid/key-generate.json +57 -0
- package/examples/profiles/secrets-and-key-management/valid/key-import.json +64 -0
- package/examples/profiles/secrets-and-key-management/valid/secret-create.json +59 -0
- package/examples/profiles/secrets-and-key-management/valid/secret-export.json +75 -0
- package/examples/profiles/secrets-and-key-management/valid/secret-policy-update.json +68 -0
- package/examples/profiles/secrets-and-key-management/valid/secret-reveal-emergency.json +68 -0
- package/examples/profiles/secrets-and-key-management/valid/secret-reveal.json +70 -0
- package/examples/profiles/secrets-and-key-management/valid/secret-revoke.json +57 -0
- package/examples/profiles/secrets-and-key-management/valid/secret-rotate.json +55 -0
- package/examples/valid/access-request-approval.json +47 -0
- package/examples/valid/document-external-share.json +92 -0
- package/examples/valid/incident-case-close.json +114 -0
- package/examples/valid/kafka-consumer-offset-reset.json +105 -0
- package/examples/valid/minimal-event.json +22 -0
- package/examples/valid/nightly-reconciliation-job.json +33 -0
- package/examples/valid/order-api-publish.json +34 -0
- package/examples/valid/order-consumer-new-trace.json +36 -0
- package/examples/valid/privileged-configuration-change.json +109 -0
- package/examples/valid/service-account-data-export.json +83 -0
- package/examples/valid/user-role-assignment.json +92 -0
- 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
|
+
}
|