{"ref":"artifact:cap-js-audit-logging","page":"/artifacts/cap-js-audit-logging","json":"/artifacts/cap-js-audit-logging.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-js-audit-logging","name":"@cap-js/audit-logging","artifact_type":"cds-plugin","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/cap-js/audit-logging","title":"cap-js/audit-logging — README","checked":"2026-09-13","quote":"npm add @cap-js/audit-logging"}}],"domain":"operations-and-runtime","origin_ring":"sap-official","description":{"one_line":"Integration with the [SAP Audit Log service](artifact:btp-audit-log), so operations on personal data are recorded in the form an auditor expects without the application writing the entries.","short":"CAP integration with the SAP Audit Log service"},"links":{"npm":"https://www.npmjs.com/package/@cap-js/audit-logging","repo":"https://github.com/cap-js/audit-logging"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/cap-js/audit-logging","title":"@cap-js/audit-logging — README","checked":"2026-10-18","quote":"npm add @cap-js/audit-logging"}]}},"provides":["capability:logging","capability:audit-logging"],"provenance":{"discovered_via":[{"source":"source:npm"},{"source":"source:discover"}],"first_seen":"2026-08-30"},"maintainers":["actor:cap-js"],"contributors":["actor:ajinkyapatil8190","actor:arleytm","actor:chgeo","actor:cschuerings","actor:danjoa","actor:david-kunz","actor:dellagustin-sap","actor:grenik","actor:hm23","actor:johannes-vogel","actor:kalevsap","actor:koblers","actor:mariayord","actor:mtsvetanov071","actor:nalidzhik","actor:okulev","actor:patricebender","actor:pdt42","actor:renejeglinsky","actor:schiwekm","actor:simeongelovski","actor:sirsimon04","actor:sjvans","actor:stefanrudi","actor:swaldmann"],"history":[{"date":"2026-09-08","field":"description.one_line","from":"CDS plugin providing integration to the SAP Audit Log service as well as out-of-the-box personal data-related audit logging based on annotations.","to":"Integration with the SAP Audit Log service, so operations on personal data are recorded in the form an auditor expects without the application writing the entries.","reason":"Placement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim."},{"date":"2026-09-19","field":"connects","from":null,"to":"btp-audit-log","reason":"The plugin required the Audit Log service and said nothing of what passes between them."},{"date":"2026-09-22","field":"requires, connects[0].condition","from":null,"to":"The plugin's own integration is used; an own implementation may write the audit logs to a custom store instead.","reason":"The second reader read the connects batch of 2026-09-19 on 2026-09-22, after its acceptance, and found: the README states the service as the shipped integration and an own store as an alternative, and both edges asserted it as fixed; the bare requires is now object form, conditional, with the two sentences quoted."}],"requires":[{"ref":"artifact:btp-audit-log","for":"The service the shipped integration writes audit logs to in production, which the README says needs a paid-for instance; an own implementation may write to a custom store instead.","requirement":"conditional","condition":"The plugin's own integration is used; an own implementation may write the audit logs to a custom store instead.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/audit-logging/dde46b2b15298a3b756d697a8c6f2eb8becf4d35/README.md","title":"cap-js/audit-logging — README, In Production","checked":"2026-09-22","quote":"requires a paid-for instance of the [SAP Audit Log service for customers]"},{"url":"https://raw.githubusercontent.com/cap-js/audit-logging/dde46b2b15298a3b756d697a8c6f2eb8becf4d35/README.md","title":"cap-js/audit-logging — README, In Production","checked":"2026-09-22","quote":"However, it is possible to provide an own implementation that writes the audit logs to a custom store."}]}],"connects":[{"ref":"artifact:btp-audit-log","kind":"data","for":"Writing the audit log messages a CAP application produces, the personal data ones derived from annotations included, to the SAP Audit Log service, the integration the plugin ships; an own implementation may write them to a custom store instead.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/audit-logging/dde46b2b15298a3b756d697a8c6f2eb8becf4d35/README.md","title":"@cap-js/audit-logging — README","checked":"2026-09-19","quote":"`@cap-js/audit-logging` is a CDS plugin providing integration to the SAP Audit Log service as well as out-of-the-box personal data-related audit logging based on annotations."},{"url":"https://raw.githubusercontent.com/cap-js/audit-logging/dde46b2b15298a3b756d697a8c6f2eb8becf4d35/README.md","title":"cap-js/audit-logging — README, In Production","checked":"2026-09-22","quote":"However, it is possible to provide an own implementation that writes the audit logs to a custom store."}],"condition":"The plugin's own integration is used; an own implementation may write the audit logs to a custom store instead."}],"drafted_with_ai":true,"changed_in":[{"version":"0.1.0","date":"2023-08-18","what_changed":"Logs are written with `audit.log()` and `audit.logSync()` against the SAP Audit Log Service REST API instead of through the `@sap/audit-logging` client library. The events `dataAccessLog`, `dataModificationLog`, `configChangeLog` and `securityLog` are removed, `@AuditLog.Operation` annotations are ignored, and reading sensitive data is logged only when `cds.requires['audit-log'].handle` includes `READ`.","invalidates":"Guides that set `cds.features.audit_personal_data: true`, annotate entities with `@AuditLog.Operation`, or expect reads of sensitive data to be logged by default.","source":{"url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-010---2023-08-18","title":"@cap-js/audit-logging changelog, 0.1.0","checked":"2026-10-19","quote":"Whether reading sensitive data and modifying personal data is logged is determined by `cds.requires['audit-log'].handle: [...]`."}},{"version":"1.3.0","date":"2026-09-10","what_changed":"Support for `@sap/cds` 8 is dropped; the plugin needs `@sap/cds` 9 or later.","invalidates":"Setup notes that add the plugin to a CAP 8 project.","source":{"url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-130---2026-09-10","title":"@cap-js/audit-logging changelog, 1.3.0","checked":"2026-10-19","quote":"Dropped CDS 8 support; minimum supported version is now `@sap/cds@>=9`"}}]},"effective_normative_relations":[{"instrument":"instrument:sap-developer-license-3-2-cap","relation":"use-constrained-by","sections":["1","2","3"],"applies_when":"A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.","note":"This is inherited applicability, not a licence verdict about the artifact itself. Review the agreement for the actual materials and use; an explicit artifact relationship to another revision takes precedence.","scope":{"kind":"artifact"},"sources":[{"url":"https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt","title":"SAP Developer License Agreement 3.2 CAP","checked":"2026-09-16","quote":"documentation, plug-ins, templates, scripts and sample code, libraries, software development kits"}],"inherited_from":"cap-plugins-and-applications","relevant_capabilities":["agent-systems-access","async-processing","data-import-export","database-connectors","deployment","destinations","llm-integration","mcp-servers","plugin-authoring","replication","retrieval-augmented-generation","rfc-connectivity"]}],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"2 months since release"},{"label":"Continuity","tier":"good","evidence":"28 contributors, 3 publishers, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">=9 — includes cds 10 and 9"},{"label":"Survived majors","tier":"good","evidence":"released before and after @sap/cds 10"},{"label":"Maintainer's CI","tier":"good","evidence":"CI green, 2026-10-26"}],"practice":[{"label":"Tests","tier":"good","evidence":"35 test files, npm test"},{"label":"Docs","tier":"good","evidence":"README 5 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":6410,"unit":"installs/week"},{"value":15,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"1.3.0","majors":{"1":{"version":"1.0.0","date":"2025-07-11"},"0.1":{"version":"0.1.0","date":"2023-08-18"},"0.2":{"version":"0.2.0","date":"2023-09-01"},"0.3":{"version":"0.3.0","date":"2023-09-06"},"0.4":{"version":"0.4.0","date":"2023-10-24"},"0.5":{"version":"0.5.0","date":"2023-11-22"},"0.6":{"version":"0.6.0","date":"2024-02-05"},"0.7":{"version":"0.7.0","date":"2024-05-15"},"0.8":{"version":"0.8.0","date":"2024-05-24"},"0.9":{"version":"0.9.0","date":"2025-06-05"}},"license":"Apache-2.0","first_release":"2023-08-18","last_release":"2026-09-10","releases":24,"cadence_days":49,"maintainers":3,"repository":"git+https://github.com/cap-js/audit-logging.git","peer_cds":">=9","test_script":true,"types":false,"downloads_weekly":6410,"stars":15,"forks":8,"open_issues":15,"archived":false,"pushed_at":"2026-10-26","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","contributors":28,"tree_truncated":false,"test_files":35,"workflows":7,"other_ci":false,"readme_bytes":5596,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2026-10-26","ci_workflow":"CI","ci_event":"push","readme_path":"README.md","readme_sha":"fe340f111941ff3a8f7b0341e039e78f478a88e1","months_since_release":2,"dormant":false,"repository_directory":null,"dependencies":0,"node_engine":null,"downloads_monthly":35689,"created_at":"2023-06-13T08:41:10Z","open_prs":3,"first_commit":"2023-06-13","last_commit":"2026-10-26","commits":143,"repo_read":"2026-10-26"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"1.3.0","date":"2026-09-10","date_source":"heading","heading":"Version 1.3.0 - 2026-09-10","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-130---2026-09-10","sections":[{"kind":"removal","heading":"Removed","items":1}],"hash":"b08070a850e81232","cited_by":[{"version":"1.3.0","date":"2026-09-10"}]},{"version":"1.2.2","date":"2026-06-18","date_source":"heading","heading":"Version 1.2.2 - 2026-06-18","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-122---2026-06-18","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"1555795a8374eec3"},{"version":"1.2.1","date":"2026-05-13","date_source":"heading","heading":"Version 1.2.1 - 2026-05-13","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-121---2026-05-13","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"a53d9f8142dc6cb1"},{"version":"1.2.0","date":"2026-02-23","date_source":"heading","heading":"Version 1.2.0 - 2026-02-23","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-120---2026-02-23","sections":[{"kind":"change","heading":"Changed","items":3}],"hash":"62e90e5d781eca69"},{"version":"1.1.1","date":"2025-10-27","date_source":"heading","heading":"Version 1.1.1 - 2025-10-27","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-111---2025-10-27","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"ae7ae6f35c70c198"},{"version":"1.1.0","date":"2025-09-08","date_source":"heading","heading":"Version 1.1.0 - 2025-09-08","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-110---2025-09-08","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"194c3000a97a6e51"},{"version":"1.0.1","date":"2025-08-05","date_source":"heading","heading":"Version 1.0.1 - 2025-08-05","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-101---2025-08-05","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"7ee3525a4f526f6b"},{"version":"1.0.0","date":"2025-07-11","date_source":"heading","heading":"Version 1.0.0 - 2025-07-11","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-100---2025-07-11","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"44a2fbff25e3c7fc"},{"version":"0.9.0","date":"2025-06-05","date_source":"heading","heading":"Version 0.9.0 - 2025-06-05","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-090---2025-06-05","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"38c3df04a8cbe433"},{"version":"0.8.3","date":"2025-04-09","date_source":"heading","heading":"Version 0.8.3 - 2025-04-09","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-083---2025-04-09","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"389ce3517b21bd39"},{"version":"0.8.2","date":"2024-11-27","date_source":"heading","heading":"Version 0.8.2 - 2024-11-27","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-082---2024-11-27","sections":[{"kind":"fix","heading":"Fixed","items":3}],"hash":"68f8909e43b77903"},{"version":"0.8.1","date":"2024-09-13","date_source":"heading","heading":"Version 0.8.1 - 2024-09-13","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-081---2024-09-13","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"d75d026d9c616202"},{"version":"0.8.0","date":"2024-05-24","date_source":"heading","heading":"Version 0.8.0 - 2024-05-24","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-080---2024-05-24","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"change","heading":"Changed","items":1}],"hash":"c098165c870f3a78"},{"version":"0.7.0","date":"2024-05-15","date_source":"heading","heading":"Version 0.7.0 - 2024-05-15","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-070---2024-05-15","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"77796e44a57ceb5e"},{"version":"0.6.0","date":"2024-02-05","date_source":"heading","heading":"Version 0.6.0 - 2024-02-05","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-060---2024-02-05","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":2}],"hash":"d2fe81be3a7e37b6"},{"version":"0.5.2","date":"2023-12-08","date_source":"heading","heading":"Version 0.5.2 - 2023-12-08","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-052---2023-12-08","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"f7830c4306edb0ae"},{"version":"0.5.1","date":"2023-11-30","date_source":"heading","heading":"Version 0.5.1 - 2023-11-30","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-051---2023-11-30","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"d19618798d4e9455"},{"version":"0.5.0","date":"2023-11-22","date_source":"heading","heading":"Version 0.5.0 - 2023-11-22","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-050---2023-11-22","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"15166f0b9dc4c83d"},{"version":"0.4.0","date":"2023-10-24","date_source":"heading","heading":"Version 0.4.0 - 2023-10-24","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-040---2023-10-24","sections":[{"kind":"feature","heading":"Added","items":3},{"kind":"change","heading":"Changed","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"a97169a40530c577"},{"version":"0.3.2","date":"2023-10-11","date_source":"heading","heading":"Version 0.3.2 - 2023-10-11","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-032---2023-10-11","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"17d4893fa62ce73e"},{"version":"0.3.1","date":"2023-09-25","date_source":"heading","heading":"Version 0.3.1 - 2023-09-25","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-031---2023-09-25","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"72ac3d1ce6bffcff"},{"version":"0.3.0","date":"2023-09-05","date_source":"heading","heading":"Version 0.3.0 - 2023-09-05","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-030---2023-09-05","sections":[{"kind":"change","heading":"Changed","items":1}],"hash":"652a1603b202f6f6"},{"version":"0.2.0","date":"2023-09-01","date_source":"heading","heading":"Version 0.2.0 - 2023-09-01","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-020---2023-09-01","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"cd13acea52fe0783"},{"version":"0.1.0","date":"2023-08-18","date_source":"heading","heading":"Version 0.1.0 - 2023-08-18","url":"https://github.com/cap-js/audit-logging/blob/main/CHANGELOG.md#version-010---2023-08-18","sections":[{"kind":"feature","heading":"Added","items":4},{"kind":"change","heading":"Changed","items":2},{"kind":"fix","heading":"Fixed","items":1},{"kind":"removal","heading":"Removed","items":3}],"hash":"92e4659cd1f1d0f3","cited_by":[{"version":"0.1.0","date":"2023-08-18"}]}],"versions":[{"version":"1.3.0","date":"2026-09-10"},{"version":"1.2.2","date":"2026-06-18"},{"version":"1.2.1","date":"2026-05-13"},{"version":"1.2.0","date":"2026-02-23"},{"version":"1.1.1","date":"2025-10-27"},{"version":"1.1.0","date":"2025-09-08"},{"version":"1.0.1","date":"2025-08-05"},{"version":"1.0.0","date":"2025-07-11"},{"version":"0.9.0","date":"2025-06-05"},{"version":"0.8.3","date":"2025-04-09"},{"version":"0.8.2","date":"2024-11-27"},{"version":"0.8.1","date":"2024-09-13"},{"version":"0.8.0","date":"2024-05-24"},{"version":"0.7.0","date":"2024-05-15"},{"version":"0.6.0","date":"2024-02-05"},{"version":"0.5.2","date":"2023-12-08"},{"version":"0.5.1","date":"2023-11-30"},{"version":"0.5.0","date":"2023-11-22"},{"version":"0.4.0","date":"2023-10-24"},{"version":"0.3.2","date":"2023-10-11"},{"version":"0.3.1","date":"2023-09-26"},{"version":"0.3.0","date":"2023-09-06"},{"version":"0.2.0","date":"2023-09-01"},{"version":"0.1.0","date":"2023-08-18"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:cap-js","name":"SAP Cloud Application Programming Model","json":"/actors/cap-js.json"}],"contributors":[{"ref":"actor:ajinkyapatil8190","name":"Ajinkya Patil","json":"/actors/ajinkyapatil8190.json"},{"ref":"actor:arleytm","name":"Arley Triana Morin","json":"/actors/arleytm.json"},{"ref":"actor:chgeo","name":"Christian Georgi","json":"/actors/chgeo.json"},{"ref":"actor:cschuerings","name":"Christian Schürings","json":"/actors/cschuerings.json"},{"ref":"actor:danjoa","name":"Daniel Hutzel","json":"/actors/danjoa.json"},{"ref":"actor:david-kunz","name":"Dr. David A. Kunz","json":"/actors/david-kunz.json"},{"ref":"actor:dellagustin-sap","name":"Guilherme Dellagustin","json":"/actors/dellagustin-sap.json"},{"ref":"actor:hm23","name":"Heiko Witteborg","json":"/actors/hm23.json"},{"ref":"actor:johannes-vogel","name":"Johannes Vogel","json":"/actors/johannes-vogel.json"},{"ref":"actor:kalevsap","name":"kalevSAP","json":"/actors/kalevsap.json"},{"ref":"actor:mariayord","name":"mariayord","json":"/actors/mariayord.json"},{"ref":"actor:schiwekm","name":"Marten Schiwek","json":"/actors/schiwekm.json"},{"ref":"actor:mtsvetanov071","name":"Miroslav Tsvetanov","json":"/actors/mtsvetanov071.json"},{"ref":"actor:nalidzhik","name":"Nazife Alidzhik","json":"/actors/nalidzhik.json"},{"ref":"actor:grenik","name":"Nikolay Grechanov","json":"/actors/grenik.json"},{"ref":"actor:okulev","name":"Ognyan Kulev","json":"/actors/okulev.json"},{"ref":"actor:patricebender","name":"Patrice Bender","json":"/actors/patricebender.json"},{"ref":"actor:pdt42","name":"Paul","json":"/actors/pdt42.json"},{"ref":"actor:renejeglinsky","name":"René Jeglinsky","json":"/actors/renejeglinsky.json"},{"ref":"actor:simeongelovski","name":"simeongelovski","json":"/actors/simeongelovski.json"},{"ref":"actor:sirsimon04","name":"Simon Engel","json":"/actors/sirsimon04.json"},{"ref":"actor:koblers","name":"Simon Kobler","json":"/actors/koblers.json"},{"ref":"actor:sjvans","name":"sjvans","json":"/actors/sjvans.json"},{"ref":"actor:stefanrudi","name":"Stefan Rudi","json":"/actors/stefanrudi.json"},{"ref":"actor:swaldmann","name":"Steffen Waldmann","json":"/actors/swaldmann.json"}],"explained_by":[{"ref":"content:implementing-custom-audit-logging-in-cap-applications","name":"Implementing Custom Audit Logging in SAP CAP Applications","json":"/content/implementing-custom-audit-logging-in-cap-applications.json"},{"ref":"content:how-to-implement-sap-btp-audit-log-service-in-a-cap-application","name":"How to implement SAP BTP Audit log service in a CAP Application","json":"/content/how-to-implement-sap-btp-audit-log-service-in-a-cap-application.json"}],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}