{"ref":"artifact:sap-samples-ams-samples-node","page":"/artifacts/sap-samples-ams-samples-node","json":"/artifacts/sap-samples-ams-samples-node.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sap-samples-ams-samples-node","name":"SAP-samples/ams-samples-node","artifact_type":"sample","ecosystem":"btp","domain":"security-and-compliance","use_as":"reference","origin_ring":"sap-official","description":{"one_line":"Sample Node.js applications, a CAP bookshop and an Express shopping app, showing policy-based authorization through the Authorization Management Service on SAP BTP with policies written in DCL.","short":"Node.js apps showing policy-based authorization with AMS on SAP BTP","what_it_solves":"Two Node.js applications, a CAP bookshop and an Express shopping app, authenticate users through the SAP [Cloud Identity Services](artifact:btp-cloud-identity-services) and then authorize them with the Authorization Management Service (AMS), written in the Data Control Language (DCL) policy language. Deployed policies are managed in the SCI administration cockpit; running locally, policies are edited in the IDE and assigned to mocked users. It needs a Node.js LTS release that is still in maintenance."},"links":{"repo":"https://github.com/SAP-samples/ams-samples-node","homepage":"https://sap.github.io/cloud-identity-developer-guide/"},"type_properties":{"form":{"value":"reference-application","sources":[{"url":"https://github.com/SAP-samples/ams-samples-node","title":"SAP-samples/ams-samples-node — README","checked":"2026-10-18","quote":"The focus of the samples is on the authorization via AMS but as the authentication is a necessary requirement, it is demonstrated as well."}]}},"identity":{"license":"Apache-2.0"},"source_available":true,"demonstrates":["capability:authorization"],"maintainers":["actor:sap-samples"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-13"},"contributors":["actor:f-blass","actor:finkmanatsap","actor:marievonseggern","actor:pianocktail"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"7 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Maintainer's CI","tier":"good","evidence":"Express sample green, 2026-10-19"}],"practice":[{"label":"Tests","tier":"good","evidence":"6 test files"},{"label":"Docs","tier":"fair","evidence":"README 3 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":14,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":14,"forks":4,"open_issues":0,"archived":false,"pushed_at":"2026-10-19","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2025-02-28T09:55:49Z","open_prs":0,"tree_truncated":false,"test_files":6,"workflows":2,"other_ci":false,"readme_bytes":2816,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2025-02-28","last_commit":"2026-10-19","commits":105,"contributors":7,"ci_status":"success","ci_run_at":"2026-10-19","ci_workflow":"Express sample","ci_event":"push","readme_path":"README.md","readme_sha":"79905785284e10c638baa6bf8c85347cd84ecaf9","repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:sap-samples","name":"SAP Samples","json":"/actors/sap-samples.json"}],"contributors":[{"ref":"actor:f-blass","name":"f-blass","json":"/actors/f-blass.json"},{"ref":"actor:finkmanatsap","name":"Manuel Fink","json":"/actors/finkmanatsap.json"},{"ref":"actor:marievonseggern","name":"MarievonSeggern","json":"/actors/marievonseggern.json"},{"ref":"actor:pianocktail","name":"Matthias Bühl","json":"/actors/pianocktail.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}