{"ref":"artifact:cap-java-cds-feature-attachments","page":"/artifacts/cap-java-cds-feature-attachments","json":"/artifacts/cap-java-cds-feature-attachments.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-java-cds-feature-attachments","name":"com.sap.cds:cds-feature-attachments","artifact_type":"package","ecosystem":"cap","domain":"data-and-persistence","origin_ring":"sap-official","description":{"one_line":"A CAP Java attachments package that adds an Attachments aspect and stores content in the database by default, or in AWS, Azure or Google Object Store through a separate module.","short":"CAP Java attachments with database storage and an Object Store module","what_it_solves":"Adds attachment storage and handling to CAP Java through an Attachments aspect. The base Maven dependency stores content in the database; com.sap.cds:cds-feature-attachments-oss selects AWS, Azure or Google Object Store storage. UI integration uses CDS annotations.","when_not_to_use":"For deployed environments, the [README](https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md) excludes the cds-feature-attachments-fs file-system target, which is intended only for local development and testing."},"links":{"repo":"https://github.com/cap-java/cds-feature-attachments"},"source_available":true,"compat":{"runtimes":["java"]},"type_properties":{"distribution":{"value":["maven"],"sources":[{"url":"https://github.com/cap-java/cds-feature-attachments","title":"com.sap.cds:cds-feature-attachments — README","checked":"2026-10-18","quote":"<artifactId>cds-feature-attachments</artifactId>"}]}},"flavors":[{"key":"java","source":{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md","title":"cap-java/cds-feature-attachments — README","checked":"2026-09-17","quote":"CAP Java plugin"}}],"drafted_with_ai":true,"provides":[{"capability":"capability:attachments","what_it_does":"Adds attachment storage and handling to CAP Java through an Attachments aspect. The base Maven dependency stores content in the database; com.sap.cds:cds-feature-attachments-oss selects AWS, Azure or Google Object Store storage.","sources":[{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md","title":"cap-java/cds-feature-attachments — README","checked":"2026-09-17","quote":"By default, the plugin operates without a dedicated storage target, storing attachments directly in the [underlying database](cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments.cds#L17)."},{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md","title":"cap-java/cds-feature-attachments — README","checked":"2026-09-17","quote":"If there is no malware scanner available, the attachments are automatically marked as `Clean`."},{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md","title":"cap-java/cds-feature-attachments — README","checked":"2026-09-17","quote":"It supports the [AWS, Azure, and Google object stores](storage-targets/cds-feature-attachments-oss) and can connect to a [malware scanner](#malware-scanner)."}],"facets":[{"key":"storage_target","value":"Database by default; OSS module for AWS, Azure and Google","applies_to":{"ecosystems":["cap"],"flavors":["java"]},"source":{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md","title":"cap-java/cds-feature-attachments — README","checked":"2026-09-17","quote":"By default, the plugin operates without a dedicated storage target, storing attachments directly in the [underlying database](cds-feature-attachments/src/main/resources/cds/com.sap.cds/cds-feature-attachments/attachments.cds#L17)."}},{"key":"scan_behaviour","value":"No scanner available: attachments automatically marked Clean","applies_to":{"ecosystems":["cap"],"flavors":["java"]},"source":{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md","title":"cap-java/cds-feature-attachments — README","checked":"2026-09-17","quote":"If there is no malware scanner available, the attachments are automatically marked as `Clean`."}}]}],"requires":[{"ref":"artifact:btp-object-store","requirement":"conditional","condition":"The cds-feature-attachments-oss module is selected.","role":"attachment-storage","sources":[{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/storage-targets/cds-feature-attachments-oss/README.md","title":"CAP Java attachments — Object Store module","checked":"2026-09-17","quote":"A valid Object Store service binding is required for this, typically one provisioned through SAP BTP."}]},{"ref":"artifact:btp-malware-scanning","requirement":"conditional","role":"attachment-scanning","condition":"Actual malware scanning is needed.","sources":[{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md","title":"cap-java/cds-feature-attachments — README","checked":"2026-09-17","quote":"This plugin checks for a binding to the [SAP Malware Scanning Service](https://help.sap.com/docs/malware-scanning-servce), which needs to have the label `malware-scanner`."}]}],"connects":[{"ref":"artifact:btp-malware-scanning","kind":"data","condition":"A service binding with the label `malware-scanner` exists.","for":"Scanning attachments where the application is bound to the SAP Malware Scanning Service under the label `malware-scanner`.","sources":[{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/c2f5e821ad5ca9c7715ef23d0eb0c70ea1db9b76/README.md","title":"cds-feature-attachments — README, Malware Scanner","checked":"2026-09-19","quote":"This plugin checks for a binding to the [SAP Malware Scanning Service](https://help.sap.com/docs/malware-scanning-servce), which needs to have the label `malware-scanner`."}]},{"ref":"artifact:btp-object-store","kind":"data","for":"Keeping attachment content in an object store on AWS, Azure or Google, through the plugin's object store storage target.","sources":[{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/c2f5e821ad5ca9c7715ef23d0eb0c70ea1db9b76/README.md","title":"cds-feature-attachments — README","checked":"2026-09-19","quote":"It supports the [AWS, Azure, and Google object stores](storage-targets/cds-feature-attachments-oss) and can connect to a [malware scanner](#malware-scanner)."},{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-attachments/c2f5e821ad5ca9c7715ef23d0eb0c70ea1db9b76/README.md","title":"cap-java/cds-feature-attachments — README, Storage Targets","checked":"2026-09-22","quote":"By default, the plugin operates without a dedicated storage target, storing attachments directly in the"}],"condition":"The cds-feature-attachments-oss module is selected."}],"history":[{"date":"2026-09-17","field":"provides.what_it_does","from":null,"to":"Adds attachment storage and handling to CAP Java through an Attachments aspect. The base Maven dependency stores content in the database; com.sap.cds:cds-feature-attachments-oss selects AWS, Azure or Google Object Store storage.","reason":"New CAP Java provider discovered through official CAP documentation. Facts describe the pinned source revision, not verified deployment compatibility."},{"date":"2026-09-19","field":"connects","from":null,"to":"btp-malware-scanning, btp-object-store","reason":"The plugin required both services; the connections say under which binding it talks to the scanner, and what it keeps in the object store."},{"date":"2026-09-22","field":"connects[object-store].condition","from":null,"to":"The cds-feature-attachments-oss module is selected.","reason":"The second reader read the connects batch of 2026-09-19 on 2026-09-22, after its acceptance, and found: the connection to the object store carried no condition while the requires edge beside it and the README's default, no dedicated storage target, both state one."}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-17"},"maintainers":["actor:cap-java"],"contributors":["actor:adamandre79","actor:braunmatthias","actor:busehalis-sap","actor:koblers","actor:lisajulia","actor:mofterdinger","actor:renejeglinsky","actor:samyuktaprabhu","actor:schmarvinius"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"15 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"no release dates"},{"label":"Maintainer's CI","tier":"good","evidence":"CI - MAIN green, 2026-10-14"}],"practice":[{"label":"Tests","tier":"good","evidence":"108 test files"},{"label":"Docs","tier":"good","evidence":"docs/ with 5 pages, README 19 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":6,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-25","npm":"not published under this name","stars":6,"forks":10,"open_issues":24,"archived":false,"pushed_at":"2026-10-21","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2024-03-11T15:35:06Z","open_prs":14,"tree_truncated":false,"test_files":108,"workflows":7,"other_ci":false,"readme_bytes":19812,"docs_files":5,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2024-02-14","last_commit":"2026-10-14","commits":1534,"contributors":15,"ci_status":"success","ci_run_at":"2026-10-14","ci_workflow":"CI - MAIN","ci_event":"push","readme_path":"README.md","readme_sha":"210e8f25f3c46d2d5ffdf263bafeb4abbb33ecde","repo_read":"2026-10-25"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"github-releases","url":"https://github.com/cap-java/cds-feature-attachments/releases"},"format":"github-releases","releases":[{"version":"1.7.0","date":"2026-08-20","date_source":"github","heading":"1.7.0","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.7.0","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"security","heading":"Security","items":1}],"hash":"fa99d4ffd2b27925"},{"version":"1.6.0","date":"2026-07-17","date_source":"github","heading":"1.6.0","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.6.0","sections":[{"kind":"feature","heading":"Added","items":4},{"kind":"change","heading":"Changed","items":3}],"hash":"4746c5a8ad779265"},{"version":"1.5.0","date":"2026-04-13","date_source":"github","heading":"1.5.0","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.5.0","sections":[],"hash":"d8ef04ee24e1a70e"},{"version":"1.4.1","date":"2026-04-08","date_source":"github","heading":"1.4.1","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.4.1","sections":[],"hash":"a0790bc419600895"},{"version":"1.4.0","date":"2026-04-01","date_source":"github","heading":"1.4.0","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.4.0","sections":[],"hash":"65c3813c2ea19c74"},{"version":"1.3.3","date":"2026-03-15","date_source":"github","heading":"1.3.3","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.3.3","sections":[],"hash":"f59a6b76731a1829"},{"version":"1.3.2","date":"2026-03-10","date_source":"github","heading":"1.3.2","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.3.2","sections":[],"hash":"193b20f38bad9748"},{"version":"1.3.1","date":"2026-02-10","date_source":"github","heading":"1.3.1","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.3.1","sections":[],"hash":"59c885c96cc4585a"},{"version":"1.3.0","date":"2026-01-26","date_source":"github","heading":"1.3.0","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.3.0","sections":[],"hash":"80d2cffc9ac71806"},{"version":"1.2.4","date":"2025-12-17","date_source":"github","heading":"1.2.4","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.2.4","sections":[],"hash":"9ae9abbb878c395b"},{"version":"1.2.3","date":"2025-12-01","date_source":"github","heading":"1.2.3","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.2.3","sections":[],"hash":"e0947fe1bdd08343"},{"version":"1.2.2","date":"2025-11-15","date_source":"github","heading":"1.2.2","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.2.2","sections":[],"hash":"dcd14e0ea54643dc"},{"version":"1.2.1","date":"2025-09-03","date_source":"github","heading":"1.2.1","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.2.1","sections":[],"hash":"a689a52fc7467797"},{"version":"1.2.0","date":"2025-08-27","date_source":"github","heading":"1.2.0","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.2.0","sections":[],"hash":"e7920886475ec4df"},{"version":"1.1.0","date":"2025-07-24","date_source":"github","heading":"1.1.0","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.1.0","sections":[],"hash":"d7486511de6ade28"},{"version":"1.0.9","date":"2025-06-06","date_source":"github","heading":"1.0.9","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.9","sections":[],"hash":"3e1bac7f87e81ce3"},{"version":"1.0.8","date":"2025-06-04","date_source":"github","heading":"1.0.8","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.8","sections":[{"kind":"change","heading":"Changed","items":51}],"hash":"0de8039c4a7f39a3"},{"version":"1.0.7","date":"2025-02-28","date_source":"github","heading":"1.0.7","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.7","sections":[],"hash":"4324cb97210a41ba"},{"version":"1.0.6","date":"2025-02-17","date_source":"github","heading":"1.0.6","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.6","sections":[],"hash":"4b199339acd2eb05"},{"version":"1.0.5","date":"2024-11-06","date_source":"github","heading":"1.0.5","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.5","sections":[],"hash":"d432f5346888d685"},{"version":"1.0.4","date":"2024-10-22","date_source":"github","heading":"1.0.4","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.4","sections":[],"hash":"74886ca26424d0f5"},{"version":"1.0.3","date":"2024-09-27","date_source":"github","heading":"1.0.3","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.3","sections":[],"hash":"e3b0c44298fc1c14"},{"version":"1.0.2","date":"2024-05-08","date_source":"github","heading":"1.0.2","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.2","sections":[],"hash":"e3b0c44298fc1c14"},{"version":"1.0.1","date":"2024-04-29","date_source":"github","heading":"1.0.1","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.1","sections":[],"hash":"e3b0c44298fc1c14"},{"version":"1.0.0","date":"2024-04-26","date_source":"github","heading":"1.0.0","url":"https://github.com/cap-java/cds-feature-attachments/releases/tag/1.0.0","sections":[],"hash":"e3b0c44298fc1c14"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:cap-java","name":"CAP","json":"/actors/cap-java.json"}],"contributors":[{"ref":"actor:adamandre79","name":"André Adam","json":"/actors/adamandre79.json"},{"ref":"actor:braunmatthias","name":"BraunMatthias","json":"/actors/braunmatthias.json"},{"ref":"actor:busehalis-sap","name":"busehalis-sap","json":"/actors/busehalis-sap.json"},{"ref":"actor:lisajulia","name":"Lisa Julia Nebel","json":"/actors/lisajulia.json"},{"ref":"actor:mofterdinger","name":"Markus Ofterdinger","json":"/actors/mofterdinger.json"},{"ref":"actor:schmarvinius","name":"Marvin L","json":"/actors/schmarvinius.json"},{"ref":"actor:renejeglinsky","name":"René Jeglinsky","json":"/actors/renejeglinsky.json"},{"ref":"actor:samyuktaprabhu","name":"Samyuktha Prabhu","json":"/actors/samyuktaprabhu.json"},{"ref":"actor:koblers","name":"Simon Kobler","json":"/actors/koblers.json"}],"explained_by":[{"ref":"content:major-updates-to-the-attachments-plugin","name":"Major updates to the Attachments plugin – multi-cloud support, malware scanning and more","json":"/content/major-updates-to-the-attachments-plugin.json"}],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}