{"ref":"artifact:mauriciolauffer-sap-cap-validator-plugin","page":"/artifacts/mauriciolauffer-sap-cap-validator-plugin","json":"/artifacts/mauriciolauffer-sap-cap-validator-plugin.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"mauriciolauffer-sap-cap-validator-plugin","name":"sap-cap-validator-plugin","artifact_type":"cds-plugin","ecosystem":"cap","domain":"security-and-compliance","origin_ring":"independent","description":{"one_line":"A CAP plugin that checks incoming data against JSON Schema rules written as @Validator annotations on model elements, evaluated by Ajv, with no handler to register.","short":"CAP plugin validating input against @Validator JSON Schema rules","what_it_solves":"Puts the rule next to the element it guards: `@Validator: {format: 'email'}` on a field, and data that does not match is rejected. The rules are evaluated by [Ajv](external:ajv), so any draft-07 keyword Ajv implements can be used, which is how it reaches formats a CDS model has no assertion of its own for: duration, uri, url, email, hostname, ipv4, ipv6 and a date-time string. Installing the package and annotating the entities is the whole setup, with no handler to register and nothing to call from a service implementation.","when_not_to_use":"The annotation sits on a single element, so a rule that spans two fields, or one that needs a lookup, has nowhere in it to go."},"links":{"npm":"https://www.npmjs.com/package/sap-cap-validator-plugin","repo":"https://github.com/mauriciolauffer/sap-cap-validator-plugin"},"identity":{"author":"Mauricio Lauffer","license":"MIT"},"source_available":true,"compat":{"runtimes":["node"],"cds_range":">=7"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/mauriciolauffer/sap-cap-validator-plugin","title":"sap-cap-validator-plugin — README","checked":"2026-10-18","quote":"npm install sap-cap-validator-plugin"}]}},"provides":[{"capability":"capability:input-validation","what_it_does":"Adds a second declarative vocabulary beside the model's own assertions: JSON Schema draft-07 keywords, annotated per element and checked on the way in, for the types and formats CDS does not express.","sources":[{"url":"https://github.com/mauriciolauffer/sap-cap-validator-plugin","title":"mauriciolauffer/sap-cap-validator-plugin — README","checked":"2026-09-18","quote":"This plugin uses Ajv, a JSON schema validator. All validation keywords available in Ajv (draft-07) can be used."},{"url":"https://github.com/mauriciolauffer/sap-cap-validator-plugin","title":"mauriciolauffer/sap-cap-validator-plugin — README, setup","checked":"2026-09-18","quote":"All you need to do is to install the plugin and add the `@Validator` annotations to your entities."}]}],"requires":[{"ref":"external:ajv","for":"The validator that compiles and evaluates the annotated rules; the vocabulary the plugin accepts is whatever Ajv's draft-07 implementation does.","requirement":"required","sources":[{"url":"https://github.com/mauriciolauffer/sap-cap-validator-plugin","title":"mauriciolauffer/sap-cap-validator-plugin — README","checked":"2026-09-18","quote":"This plugin uses Ajv, a JSON schema validator."}]}],"maintainers":["actor:mauriciolauffer"],"provenance":{"discovered_via":[{"source":"source:discover"},{"source":"source:npm"}],"first_seen":"2026-09-18"},"drafted_with_ai":true,"contributors":["actor:mauriciolauffer"]},"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":"poor","evidence":"33 months since release"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"poor","evidence":"pushed 2024-04, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">=7 — includes cds 10 and 9"},{"label":"Survived majors","tier":"poor","evidence":"no release since @sap/cds 10 shipped (July 2026)"},{"label":"Maintainer's CI","tier":"fair","evidence":"workflows present, no completed run on the default branch"}],"practice":[{"label":"Tests","tier":"good","evidence":"7 test files, npm test"},{"label":"Docs","tier":"fair","evidence":"README 2 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":5,"unit":"installs/week"},{"value":10,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.0.2","majors":{"0.0":{"version":"0.0.2","date":"2024-01-19"}},"license":"MIT","first_release":"2024-01-19","last_release":"2024-01-19","releases":1,"cadence_days":null,"maintainers":1,"repository":"git+https://github.com/mauriciolauffer/sap-cap-validator-plugin.git","repository_directory":null,"peer_cds":">=7","test_script":true,"types":false,"downloads_weekly":5,"stars":10,"forks":0,"open_issues":3,"archived":false,"pushed_at":"2024-04-01","license_spdx":"MIT","org_owned":false,"default_branch":"main","contributors":1,"tree_truncated":false,"test_files":7,"workflows":5,"other_ci":false,"readme_bytes":1655,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2024-01-08","last_commit":"2024-01-31","commits":13,"readme_path":"README.md","readme_sha":"45ad80922bf5428639b22540acbaee4c20597d20","months_since_release":33,"dormant":true,"dependencies":2,"node_engine":null,"downloads_monthly":46,"created_at":"2024-01-08T02:06:38Z","open_prs":3,"repo_read":"2026-10-26"},"release_notes":{"license":"MIT","quotable":true,"versions":[{"version":"0.0.2","date":"2024-01-19"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:mauriciolauffer","name":"Mauricio Lauffer","json":"/actors/mauriciolauffer.json"}],"contributors":[{"ref":"actor:mauriciolauffer","name":"Mauricio Lauffer","json":"/actors/mauriciolauffer.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}