{"ref":"artifact:cap-js-attachments","page":"/artifacts/cap-js-attachments","json":"/artifacts/cap-js-attachments.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-js-attachments","name":"@cap-js/attachments","artifact_type":"cds-plugin","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/cap-js/attachments","title":"cap-js/attachments — README","checked":"2026-09-13","quote":"The attachments plugin needs to be referenced in the package.json of the consuming CAP NodeJS application:"}}],"domain":"data-and-persistence","origin_ring":"sap-official","description":{"one_line":"An official CAP Node.js plugin for attachment handling, with local database storage and AWS S3, Azure Blob or GCP Object Store integration.","short":"CAP Node.js attachments with database, S3, Azure or GCP storage"},"links":{"npm":"https://www.npmjs.com/package/@cap-js/attachments","repo":"https://github.com/cap-js/attachments"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/cap-js/attachments","title":"@cap-js/attachments — README","checked":"2026-10-18","quote":"npm add @cap-js/attachments"}]}},"provides":[{"capability":"capability:attachments","what_it_does":"Adds the Attachments aspect, Fiori annotations and file handling to CAP Node.js. Database storage is used locally; productive use requires an Object Store binding. Fiori elements requires draft enablement, while non-draft clients send separate metadata and content requests.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"- **AWS S3** (`kind: \"s3\"`)\n  - **Azure Blob Storage** (`kind: \"azure\"`)\n  - **GCP Cloud Storage** (`kind: \"gcp\"`)"},{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"For scenarios where the entity is not draft-enabled, for example [`tests/non-draft-request.http`](./tests/non-draft-request.http), separate HTTP requests for metadata creation and asset uploading need to be performed manually."},{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"If there is no malware scanner available and the scanner is not disabled, then the upload will fail."},{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"For productive use, a valid object store binding is required, see [Object Stores](#object-stores) and [Storage Targets](#storage-targets)."},{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"If you are not using SAP Fiori elements, draft enablement is not required."}],"facets":[{"key":"storage_target","value":"Local database; AWS S3, Azure Blob or GCP Object Store","applies_to":{"ecosystems":["cap"],"flavors":["node"]},"source":{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"- **AWS S3** (`kind: \"s3\"`)\n  - **Azure Blob Storage** (`kind: \"azure\"`)\n  - **GCP Cloud Storage** (`kind: \"gcp\"`)"}},{"key":"upload_flow","value":"Fiori elements uses drafts; non-draft upload uses separate requests","applies_to":{"ecosystems":["cap"],"flavors":["node"]},"source":{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"For scenarios where the entity is not draft-enabled, for example [`tests/non-draft-request.http`](./tests/non-draft-request.http), separate HTTP requests for metadata creation and asset uploading need to be performed manually."}},{"key":"scan_behaviour","value":"Upload fails if scanning is enabled but no scanner is available","applies_to":{"ecosystems":["cap"],"flavors":["node"]},"source":{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"If there is no malware scanner available and the scanner is not disabled, then the upload will fail."}}]}],"provenance":{"discovered_via":[{"source":"source:npm"},{"source":"source:discover"}],"first_seen":"2026-08-30"},"maintainers":["actor:cap-js"],"contributors":["actor:ajinkyapatil8190","actor:andreas-meindl-msggroup","actor:ansgarlichter","actor:chgeo","actor:cschuerings","actor:danjoa","actor:danschlachter","actor:david-kunz","actor:eric-psap","actor:hm23","actor:jeevitha011","actor:johannes-vogel","actor:koblers","actor:kritishekhar","actor:lisajulia","actor:mnkiefer","actor:muskansethi1","actor:ramindia","actor:roshninaveenas","actor:schiwekm","actor:schmarvinius","actor:sidakphull","actor:sirsimon04","actor:sjvans","actor:soujitd-sap","actor:stefanrudi","actor:viniciuslora","actor:vlovini","actor:zahlii"],"history":[{"date":"2026-09-08","field":"description.one_line","from":"CAP cds-plugin providing image and attachment storing out-of-the-box.","to":"The official attachments plugin: annotate an entity and get upload, storage and retrieval, with S3 and Azure Blob as the stores it can put the bytes in.","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-17","field":"provides.what_it_does","from":null,"to":"Adds the Attachments aspect, Fiori annotations and file handling to CAP Node.js. Database storage is used locally; productive use requires an Object Store binding. Fiori elements requires draft enablement, while non-draft clients send separate metadata and content requests.","reason":"Refresh storage and upload boundaries from the pinned README; make storage and scanning prerequisites conditional."},{"date":"2026-09-19","field":"connects","from":null,"to":"btp-malware-scanning, btp-object-store","reason":"@cap-js/attachments required both services; the connections say what is sent to each, and that the scanner is spoken to over HTTP."},{"date":"2026-09-22","field":"connects[malware-scanning].condition","from":null,"to":"Malware scanning is enabled.","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 malware scanner carried no condition while the requires edge beside it and the README both state one."},{"date":"2026-09-28","field":"connects[malware-scanning].interface","from":null,"to":"scan-api","reason":"The README names the scan and the HTTP 429 the service answers with, so the connection lands on the scan API SAP Malware Scanning service states (CONCEPT-005 §3.3, decision 10); the Object Store edge stays at the box, since the README says a bound instance and no more."}],"requires":[{"ref":"artifact:btp-object-store","requirement":"conditional","role":"attachment-storage","condition":"Productive use of an Object Store storage target.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"For productive use, a valid object store binding is required, see [Object Stores](#object-stores) and [Storage Targets](#storage-targets)."}]},{"ref":"artifact:btp-malware-scanning","requirement":"conditional","role":"attachment-scanning","condition":"Malware scanning is enabled.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README","checked":"2026-09-17","quote":"If there is no malware scanner available and the scanner is not disabled, then the upload will fail."}]}],"connects":[{"ref":"artifact:btp-malware-scanning","kind":"data","protocols":["http"],"direction":"outbound","interface":"scan-api","for":"Sending each uploaded attachment to be scanned; a scan the service answers with 429 is retried with exponential backoff.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"@cap-js/attachments — README, Malware Scanner","checked":"2026-09-19","quote":"The BTP malware scanning service is used in the `AttachmentService` to scan attachments for vulnerabilities."},{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"@cap-js/attachments — README, Malware Scanner","checked":"2026-09-19","quote":"When this limit is exceeded, the service responds with HTTP `429 Too Many Requests`."},{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"cap-js/attachments — README, malware scanning","checked":"2026-09-22","quote":"By default, malware scanning is enabled for all profiles if a storage provider has been specified."}],"condition":"Malware scanning is enabled."},{"ref":"artifact:btp-object-store","kind":"data","condition":"An object store is bound; for local testing the content is kept in a local database.","for":"Keeping attachment content in a bound SAP Object Store instance in place of the application database.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"@cap-js/attachments — README, Object Stores","checked":"2026-09-19","quote":"For using an Object Store in BTP, you must already have an SAP Object Store service instance on the appropriate landscape created."},{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"@cap-js/attachments — README","checked":"2026-09-19","quote":"For productive use, a valid object store binding is required"},{"url":"https://raw.githubusercontent.com/cap-js/attachments/cdf7d5012d29c831aa46bb3fa6b3daeab622306c/README.md","title":"@cap-js/attachments — README","checked":"2026-09-19","quote":"For local testing, the attachment objects are stored in a"}]}],"drafted_with_ai":true},"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":"3 months since release"},{"label":"Continuity","tier":"good","evidence":"33 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":"Lint green, 2026-10-19"}],"practice":[{"label":"Tests","tier":"good","evidence":"51 test files, npm test"},{"label":"Docs","tier":"good","evidence":"README 30 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":6405,"unit":"installs/week"},{"value":36,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"4.0.0","majors":{"1":{"version":"1.0.0","date":"2024-03-28"},"2":{"version":"2.0.0","date":"2025-03-10"},"3":{"version":"3.0.0","date":"2025-10-14"},"4":{"version":"4.0.0","date":"2026-08-03"}},"license":"Apache-2.0","first_release":"2024-03-28","last_release":"2026-08-03","releases":47,"cadence_days":9,"maintainers":3,"repository":"git+https://github.com/cap-js/attachments.git","peer_cds":">=9","test_script":true,"types":false,"downloads_weekly":6405,"stars":36,"forks":20,"open_issues":18,"archived":false,"pushed_at":"2026-10-22","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","contributors":33,"tree_truncated":false,"test_files":51,"workflows":7,"other_ci":false,"readme_bytes":30399,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2026-10-19","ci_workflow":"Lint","ci_event":"push","readme_path":"README.md","readme_sha":"1741a683fa6cc1b8f2653cbb17924cd1b1089eee","months_since_release":3,"dormant":false,"repository_directory":null,"dependencies":0,"node_engine":null,"downloads_monthly":38522,"created_at":"2023-08-14T08:51:22Z","open_prs":11,"first_commit":"2023-08-14","last_commit":"2026-10-19","commits":835,"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/attachments/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"4.0.0","date":"2026-08-03","date_source":"heading","heading":"Version 4.0.0 - 2026-08-03","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-400---2026-08-03","sections":[{"kind":"change","heading":"Changed","items":2},{"kind":"fix","heading":"Fixed","items":1}],"hash":"cbc64620949c99fb"},{"version":"3.13.4","date":"2026-07-31","date_source":"heading","heading":"Version 3.13.4 - 2026-07-31","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3134---2026-07-31","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"545a4244f40c6eb3"},{"version":"3.13.3","date":"2026-07-24","date_source":"heading","heading":"Version 3.13.3 - 2026-07-24","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3133---2026-07-24","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"ac029232a3976f00"},{"version":"3.13.2","date":"2026-07-23","date_source":"heading","heading":"Version 3.13.2 - 2026-07-23","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3132---2026-07-23","sections":[{"kind":"fix","heading":"Fixed","items":4},{"kind":"other","heading":"Migration Note","items":1}],"hash":"1ecbc2918a9182be"},{"version":"3.13.1","date":"2026-06-26","date_source":"heading","heading":"Version 3.13.1 - 2026-06-26","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3131---2026-06-26","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"1db545befba469a3"},{"version":"3.13.0","date":"2026-06-22","date_source":"heading","heading":"Version 3.13.0 - 2026-06-22","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3130---2026-06-22","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"1fd6b31c33c3b4fa"},{"version":"3.12.2","date":"2026-05-20","date_source":"heading","heading":"Version 3.12.2 - 2026-05-20","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3122---2026-05-20","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"ed0a14c652023380"},{"version":"3.12.1","date":"2026-04-29","date_source":"heading","heading":"Version 3.12.1 - 2026-04-29","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3121---2026-04-29","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"6e0d79e0d6cb51b7"},{"version":"3.12.0","date":"2026-04-20","date_source":"heading","heading":"Version 3.12.0 - 2026-04-20","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3120---2026-04-20","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"change","heading":"Changed","items":1},{"kind":"fix","heading":"Fixed","items":2}],"hash":"b6d4c3db36b52cc5"},{"version":"3.11.0","date":"2026-04-02","date_source":"heading","heading":"Version 3.11.0 - 2026-04-02","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3110---2026-04-02","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"214dd34c057b6c8a"},{"version":"3.10.0","date":"2026-03-31","date_source":"heading","heading":"Version 3.10.0 - 2026-03-31","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-3100---2026-03-31","sections":[{"kind":"feature","heading":"Added","items":5},{"kind":"fix","heading":"Fixed","items":3}],"hash":"d2c42e39d3302a87"},{"version":"3.9.0","date":"2026-03-10","date_source":"heading","heading":"Version 3.9.0 - 2026-03-10","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-390---2026-03-10","sections":[{"kind":"fix","heading":"Fixed","items":5}],"hash":"95e7b8e1b45c0796"},{"version":"3.8.0","date":"2026-02-20","date_source":"heading","heading":"Version 3.8.0 - 2026-02-20","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-380---2026-02-20","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":1}],"hash":"a61260379de853af"},{"version":"3.7.0","date":"2026-01-22","date_source":"heading","heading":"Version 3.7.0 - 2026-01-22","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-370---2026-01-22","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":1}],"hash":"fcbc3beac011c2ea"},{"version":"3.6.1","date":"2026-01-15","date_source":"heading","heading":"Version 3.6.1 - 2026-01-15","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-361---2026-01-15","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"59300c820f2142f4"},{"version":"3.6.0","date":"2026-01-08","date_source":"heading","heading":"Version 3.6.0 - 2026-01-08","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-360---2026-01-08","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":4}],"hash":"44c1dac213078de4"},{"version":"3.5.0","date":"2025-12-05","date_source":"heading","heading":"Version 3.5.0 - 2025-12-05","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-350---2025-12-05","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"dc2e31cfb9754b10"},{"version":"3.4.0","date":"2025-11-25","date_source":"heading","heading":"Version 3.4.0 - 2025-11-25","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-340---2025-11-25","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":2}],"hash":"e3aedcb683266002"},{"version":"3.3.0","date":"2025-11-18","date_source":"heading","heading":"Version 3.3.0 - 2025-11-18","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-330---2025-11-18","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":9}],"hash":"f543a3a36be1c2df"},{"version":"3.2.0","date":"2025-11-07","date_source":"heading","heading":"Version 3.2.0 - 2025-11-07","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-320---2025-11-07","sections":[{"kind":"feature","heading":"Added","items":4}],"hash":"8d5032032fc8f877"},{"version":"3.1.0","date":"2025-10-21","date_source":"heading","heading":"Version 3.1.0 - 2025-10-21","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-310---2025-10-21","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":3}],"hash":"28d8df3659420fc1"},{"version":"3.0.0","date":"2025-10-14","date_source":"heading","heading":"Version 3.0.0 - 2025-10-14","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-300---2025-10-14","sections":[{"kind":"fix","heading":"Fixed","items":3},{"kind":"feature","heading":"Added","items":2}],"hash":"11b6db24c1e7f5f5"},{"version":"2.2.2","date":"2025-09-26","date_source":"heading","heading":"Version 2.2.2 - 2025-09-26","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-222---2025-09-26","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"d3cd9f6eba7fbe6a"},{"version":"2.2.1","date":"2025-09-10","date_source":"heading","heading":"Version 2.2.1 - 2025-09-10","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-221---2025-09-10","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"aa1c1ce9891d139c"},{"version":"2.2.0","date":"2025-07-21","date_source":"heading","heading":"Version 2.2.0 - 2025-07-21","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-220---2025-07-21","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":2}],"hash":"9d91904bbb7034ee"},{"version":"2.1.2","date":"2025-05-22","date_source":"heading","heading":"Version 2.1.2 - 2025-05-22","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-212---2025-05-22","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"b075fc11cca0e65c"},{"version":"2.1.1","date":"2025-05-14","date_source":"heading","heading":"Version 2.1.1 - 2025-05-14","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-211---2025-05-14","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"63baf52c01d077b3"},{"version":"2.1.0","date":"2025-04-21","date_source":"heading","heading":"Version 2.1.0 - 2025-04-21","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-210---2025-04-21","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"8cbe57bea31ca57b"},{"version":"2.0.2","date":"2025-03-19","date_source":"heading","heading":"Version 2.0.2 - 2025-03-19","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-202---2025-03-19","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"399341d165be50bc"},{"version":"2.0.1","date":"2025-03-17","date_source":"heading","heading":"Version 2.0.1 - 2025-03-17","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-201---2025-03-17","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"551e7cf6f9720f4d"},{"version":"2.0.0","date":"2025-03-10","date_source":"heading","heading":"Version 2.0.0 - 2025-03-10","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-200---2025-03-10","sections":[{"kind":"change","heading":"Changed","items":2},{"kind":"feature","heading":"Added","items":1}],"hash":"7010f0799de4d7a3"},{"version":"1.2.1","date":"2025-02-26","date_source":"heading","heading":"Version 1.2.1 - 2025-02-26","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-121---2025-02-26","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"163bc77ab1484b5c"},{"version":"1.2.0","date":"2025-02-26","date_source":"heading","heading":"Version 1.2.0 - 2025-02-26","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-120---2025-02-26","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"53f6c60765e3afcc"},{"version":"1.1.9","date":"2025-02-04","date_source":"heading","heading":"Version 1.1.9 - 2025-02-04","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-119---2025-02-04","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":1}],"hash":"b7f02e11cb200f51"},{"version":"1.1.8","date":"2024-11-04","date_source":"heading","heading":"Version 1.1.8 - 2024-11-04","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-118---2024-11-04","sections":[{"kind":"change","heading":"Changed","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"1752302aa53dc9bf"},{"version":"1.1.7","date":"2024-10-07","date_source":"heading","heading":"Version 1.1.7 - 2024-10-07","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-117---2024-10-07","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"1b428bee7d7f687d"},{"version":"1.1.6","date":"2024-08-23","date_source":"heading","heading":"Version 1.1.6 - 2024-08-23","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-116---2024-08-23","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"0401208e955b8620"},{"version":"1.1.5","date":"2024-08-07","date_source":"heading","heading":"Version 1.1.5 - 2024-08-07","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-115---2024-08-07","sections":[{"kind":"change","heading":"Changed","items":3}],"hash":"b9523ced41e6bbb7"},{"version":"1.1.4","date":"2024-07-08","date_source":"heading","heading":"Version 1.1.4 - 2024-07-08","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-114---2024-07-08","sections":[{"kind":"change","heading":"Changed","items":1}],"hash":"2e835b55caab3b37"},{"version":"1.1.3","date":"2024-06-27","date_source":"heading","heading":"Version 1.1.3 - 2024-06-27","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-113---2024-06-27","sections":[{"kind":"change","heading":"Changed","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"aa3bf022ac9f0fe9"},{"version":"1.1.2","date":"2024-06-21","date_source":"heading","heading":"Version 1.1.2 - 2024-06-21","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-112---2024-06-21","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"change","heading":"Changed","items":2},{"kind":"fix","heading":"Fixed","items":2}],"hash":"eac1d31447036f1b"},{"version":"1.1.1","date":"2024-05-31","date_source":"heading","heading":"Version 1.1.1 - 2024-05-31","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-111---2024-05-31","sections":[{"kind":"change","heading":"Changed","items":2},{"kind":"fix","heading":"Fixed","items":1}],"hash":"1f06f4e783ffc895"},{"version":"1.1.0","date":"2024-05-28","date_source":"heading","heading":"Version 1.1.0 - 2024-05-28","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-110---2024-05-28","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"cc587119c0c63e87"},{"version":"1.0.2","date":"2024-04-30","date_source":"heading","heading":"Version 1.0.2 - 2024-04-30","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-102---2024-04-30","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"ddd159ebe5a46b7e"},{"version":"1.0.1","date":"2024-03-28","date_source":"heading","heading":"Version 1.0.1 - 2024-03-28","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-101---2024-03-28","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"fd006d4e50f898d6"},{"version":"1.0.0","date":"2024-03-28","date_source":"heading","heading":"Version 1.0.0 - 2024-03-28","url":"https://github.com/cap-js/attachments/blob/main/CHANGELOG.md#version-100---2024-03-28","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"9cd5a8bd29467a49"}],"versions":[{"version":"4.0.0","date":"2026-08-03"},{"version":"3.13.4","date":"2026-07-31"},{"version":"3.13.3","date":"2026-07-27"},{"version":"3.13.2","date":"2026-07-23"},{"version":"3.13.1","date":"2026-06-26"},{"version":"3.13.0","date":"2026-06-22"},{"version":"3.12.2","date":"2026-05-20"},{"version":"3.12.1","date":"2026-04-29"},{"version":"3.12.0","date":"2026-04-20"},{"version":"3.11.0","date":"2026-04-02"},{"version":"3.10.0","date":"2026-03-31"},{"version":"3.9.0","date":"2026-03-10"},{"version":"3.8.0","date":"2026-02-20"},{"version":"3.7.0","date":"2026-01-22"},{"version":"3.6.1","date":"2026-01-15"},{"version":"3.6.0","date":"2026-01-08"},{"version":"3.3.1","date":"2025-12-15"},{"version":"3.5.0","date":"2025-12-05"},{"version":"3.4.0","date":"2025-11-25"},{"version":"3.3.0","date":"2025-11-18"},{"version":"3.2.0","date":"2025-11-07"},{"version":"3.1.0","date":"2025-10-21"},{"version":"3.0.0","date":"2025-10-14"},{"version":"2.2.2","date":"2025-09-26"},{"version":"2.2.1","date":"2025-09-10"},{"version":"2.2.0","date":"2025-07-21"},{"version":"2.1.2","date":"2025-05-22"},{"version":"2.1.1","date":"2025-05-14"},{"version":"2.1.0","date":"2025-04-21"},{"version":"2.0.2","date":"2025-03-19"},{"version":"2.0.1","date":"2025-03-17"},{"version":"2.0.0","date":"2025-03-10"},{"version":"1.2.1","date":"2025-02-26"},{"version":"1.2.0","date":"2025-02-26"},{"version":"1.1.9","date":"2025-02-04"},{"version":"1.1.8","date":"2024-11-04"},{"version":"1.1.7","date":"2024-10-07"},{"version":"1.1.6","date":"2024-08-23"},{"version":"1.1.5","date":"2024-08-07"},{"version":"1.1.4","date":"2024-07-08"},{"version":"1.1.3","date":"2024-06-27"},{"version":"1.1.2","date":"2024-06-21"},{"version":"1.1.1","date":"2024-05-31"},{"version":"1.1.0","date":"2024-05-28"},{"version":"1.0.2","date":"2024-04-30"},{"version":"1.0.1","date":"2024-03-28"},{"version":"1.0.0","date":"2024-03-28"}],"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:andreas-meindl-msggroup","name":"Andreas-Meindl-msggroup","json":"/actors/andreas-meindl-msggroup.json"},{"ref":"actor:ansgarlichter","name":"Ansgar Lichter","json":"/actors/ansgarlichter.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:danschlachter","name":"Daniel Schlachter","json":"/actors/danschlachter.json"},{"ref":"actor:david-kunz","name":"Dr. David A. Kunz","json":"/actors/david-kunz.json"},{"ref":"actor:eric-psap","name":"Eric P","json":"/actors/eric-psap.json"},{"ref":"actor:hm23","name":"Heiko Witteborg","json":"/actors/hm23.json"},{"ref":"actor:jeevitha011","name":"jeevitha011","json":"/actors/jeevitha011.json"},{"ref":"actor:johannes-vogel","name":"Johannes Vogel","json":"/actors/johannes-vogel.json"},{"ref":"actor:kritishekhar","name":"KritiShekhar","json":"/actors/kritishekhar.json"},{"ref":"actor:lisajulia","name":"Lisa Julia Nebel","json":"/actors/lisajulia.json"},{"ref":"actor:mnkiefer","name":"Mara Nikola Kiefer","json":"/actors/mnkiefer.json"},{"ref":"actor:schiwekm","name":"Marten Schiwek","json":"/actors/schiwekm.json"},{"ref":"actor:schmarvinius","name":"Marvin L","json":"/actors/schmarvinius.json"},{"ref":"actor:muskansethi1","name":"muskansethi1","json":"/actors/muskansethi1.json"},{"ref":"actor:zahlii","name":"N","json":"/actors/zahlii.json"},{"ref":"actor:ramindia","name":"Ram Prasad GS","json":"/actors/ramindia.json"},{"ref":"actor:roshninaveenas","name":"RoshniNaveenaS","json":"/actors/roshninaveenas.json"},{"ref":"actor:sidakphull","name":"sidakphull","json":"/actors/sidakphull.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:soujitd-sap","name":"SoujitD-SAP","json":"/actors/soujitd-sap.json"},{"ref":"actor:stefanrudi","name":"Stefan Rudi","json":"/actors/stefanrudi.json"},{"ref":"actor:viniciuslora","name":"viniciuslora","json":"/actors/viniciuslora.json"},{"ref":"actor:vlovini","name":"vlovini","json":"/actors/vlovini.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"},{"ref":"content:uploading-attachments-to-cap-js-attachments-from-an-external-app","name":"Uploading attachment with cap-js/attachment plugins but via External App/Postman","json":"/content/uploading-attachments-to-cap-js-attachments-from-an-external-app.json"},{"ref":"content:working-with-the-attachment-plugin-cloud-application-programming","name":"Working with the Attachment plugin - Cloud Application Programming","json":"/content/working-with-the-attachment-plugin-cloud-application-programming.json"}],"alternative_to_this":[],"needed_by":[{"ref":"artifact:miyasuta-attachment-reuse-controls-sample","name":"attachment-reuse-controls-sample","json":"/artifacts/miyasuta-attachment-reuse-controls-sample.json"}],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}