PackagePackagetypeA library you install and call yourself.See every one →What this type is →by SAPby SAPoriginPublished by SAP itself. A visible facet, never an input to a reading — a dormant official plugin reads exactly like a dormant independent one.See every one →

@sap/cds

The CAP Node.js runtime, which compiles the CDS model, serves the services declared in it, answers generic requests before any handler runs, and loads every cds-plugin.

The CAP Node.js runtime: it compiles the CDS model, serves the services declared in it, and answers the generic requests — read, write, draft, search, paging — before any handler of yours runs. cds.env resolves the configuration those services read, and every cds-plugin is loaded by this package. It stops at the Node.js stack and at the project's edges: the CLI that scaffolds, builds and deploys is @sap/cds-dk, CAP Java is a second runtime for the same model, and databases, messaging and AI arrive as plugins. In a project it is one dependency in package.json and the module every server file loads.

Facts

Latestv10.2.1ReleasedLicenceSAP DEVELOPER LICENSE AGREEMENT 3.2 CAP

Where it sits

Lives in
Provides
AuthorizationCAPAuthorizationcapabilityDeciding who may read or change what, at service, entity and instance level — role checks, forwarded user context, and restrictions evaluated as query filters rather than after the fact.AuthenticationCAPAuthenticationcapabilityEstablishing who is calling: validating credentials or tokens, resolving the user, and making that identity available to the application. [Authorization](capability:authorization) decides what that identity may do; [identity provisioning](capability:identity-provisioning) manages its lifecycle across systems.Input validationCAPInput validationcapabilityRejecting bad input before it reaches the database. While this can be done manually inside a handler, there are solutions in place to derive type, range, enum and mandatory checks from the model definitions.Error handlingCAPError handlingcapabilityTurning a failure into a response a client can act on — protocol-correct error payloads, correlation, and a boundary between internal detail and what a caller sees.LocalizationCAPLocalizationcapabilityServing labels, messages and translated content per user locale, including translatable model elements and per-tenant text overrides.Draft handlingCAPDraft handlingcapabilityLetting a user edit a record over several requests before it becomes real — saving unfinished changes, locking, and activating a completed draft.SearchCAPSearchcapabilityFree-text search across an entity and its compositions, pushed into the database rather than filtered in the service. Declared search, database similarity search and filtering in application code are often lumped together.Analytical queriesCAPAnalytical queriescapabilityGrouped, aggregated and filtered reads for analytical clients, answered by the database rather than in application memory. This concerns the queries a chart or report sends, while [analytic modelling](capability:analytic-modelling) defines the measures and dimensions they read.Pagination and streamingCAPPagination and streamingcapabilityReturning results a client can consume without loading everything — server-driven paging, and streaming large binaries rather than buffering them.ConfigurationCAPConfigurationcapabilityPer-environment settings without per-environment code — profiles, layered configuration, and bindings resolved from the platform at start-up.Schema evolutionCAPSchema evolutioncapabilityGetting a model change into a database that already holds data, in every tenant, without losing any of it. Generating the initial schema and migrating one that already holds data are often treated as the same step.Seed dataCAPSeed datacapabilityGetting realistic data into a service so it can be developed and demonstrated — initial data, per-tenant content, and believable volumes for testing.Metadata publishingCAPMetadata publishingcapabilityDescribing a service to something other than a human — service metadata for clients, and machine-readable descriptions for registries and discovery.Fiori annotationsCAPFiori annotationscapabilityDescribing a service so a Fiori client can render it without hand-written UI code — titles, value helps, hierarchies and visibility expressed as model annotations rather than screen logic.Frontend boundaryCAPFrontend boundarycapabilityConnecting a separately hosted frontend to an application service: authentication, routing, access to backend systems, user identity propagation and tenant isolation across the hosting boundary.Job schedulingCAPJob schedulingcapabilityRunning something later, or on a cadence, without keeping a process alive to do it — a nightly job, a retry in an hour, a report on the first of the month — and knowing afterwards whether it ran.CachingCAPCachingcapabilityHolding the result of an expensive read so the next one is cheap. This spans four different things people call caching — HTTP response caching, query result caching, remote service response caching, and application-level memoisation. They are not interchangeable, and picking the wrong one is the usual cause of stale-data bugs in multitenant apps.DestinationsCAPDestinationscapabilityReaching a system that is not yours — an S/4HANA tenant, an on-premise service, a third-party API — without the address, the credentials or the tunnel being written into the application. The destination is the indirection, and the reason an endpoint can move without a redeploy.Retrieval-augmented generationCAPRetrieval-augmented generationcapabilityGrounding a model's answer in data retrieved at question time: text split into chunks, each chunk embedded as a vector, and the chunks nearest to the question placed into the prompt. Semantic search is the same retrieval with a person reading the matches, and fine-tuning changes the model's weights, not its input.AttachmentsCAPAttachmentscapabilityStoring a file somebody uploaded next to the record it belongs to, and getting it back out — where the bytes actually live, who may read them, and what the UI shows while they are being scanned.Async processingCAPAsync processingcapabilityDoing work outside the request that triggered it, with a guarantee that it eventually happens — deferred jobs, retries, and periodic work. Distinct from messaging, which is about telling other systems.Temporal dataCAPTemporal datacapabilityKeeping every version of a record that was valid for a period, and reading the one that held at a given moment — the assignment somebody had on the first of March, not the one they have now — without the application filtering time slices by hand.Service integrationCAPService integrationcapabilityUsing a service that runs somewhere else as if it were one of your own: its API imported into the model, a proxy that turns a local query into the remote protocol, and a mock that stands in for it on a laptop. Distinct from [destinations](capability:destinations), which is how the address and the credentials are found, and from [replication](capability:replication), which is holding the data locally.Service compositionCAPService compositioncapabilityBuilding one solution out of parts other projects published: a reuse package brings its models, code, initial data and texts into your project through npm or Maven, you serve what you reference and extend what you import, and the same modules deploy as one application or as several on a shared database. Distinct from [service integration](capability:service-integration), which reaches a service that stays deployed elsewhere, and from [tenant extensibility](capability:tenant-extensibility), which is a subscriber extending a running SaaS.Native SAP HANA artifactsCAPNative SAP HANA artifactscapabilityUsing native SAP HANA database objects alongside an application’s generated data model, including objects and database features the modelling layer cannot express. Choosing a database is [database connectors](capability:database-connectors); changing an existing schema is [schema evolution](capability:schema-evolution).Transaction managementCAPTransaction managementcapabilityDeciding where a unit of work begins and ends, and what travels with it: the database transaction that commits or rolls back around a request, the user, tenant and locale that every nested call inherits, and the work that must run outside the request in a transaction of its own. Distinct from [concurrency control](capability:concurrency-control), which is two writers on one record, and from [async processing](capability:async-processing), which is work that survives the commit.Event MeshCAPEvent MeshcapabilityEmitting and consuming business events across systems through brokers, including subscriptions and mapping application events to broker topics. Work that must survive a request, including deferred processing and retries, belongs to [async processing](capability:async-processing).Data federationCAPData federationcapabilityReading data that lives in another system as if it were local — by federating the query, by copying the rows, or by caching what was read. Three different answers to one question, and the choice is about how stale you can afford to be.Data privacyCAPData privacycapabilityDoing what the law requires with personal data — knowing which fields are personal, answering a subject's request about them, and deleting them when the reason for holding them expires.Data modellingCAPData modellingcapabilityDefining the shape of data before anything serves it: entities and their types, how they relate, and the projections and views that services and applications consume.Database connectorsCAPDatabase connectorscapabilityConnecting an application’s data model and queries to a database, including the differences in supported queries, types and schema management between database implementations. Changing an existing schema belongs to [schema evolution](capability:schema-evolution).Health checksCAPHealth checkscapabilityReadiness and liveness that mean something for a service — is the database reachable, are bindings resolved, is the message broker connected — rather than merely whether the process is up.Local developmentCAPLocal developmentcapabilityRunning the whole stack on a laptop against real bindings — the service, the UI and the routing in front of it — without deploying to see a change.MultitenancyCAPMultitenancycapabilityServing many tenants from one deployment — onboarding, tenant-isolated data, per-tenant schema deployment and the operational tooling around it. It is decided once, before anything is built, and narrows the artifacts in almost every capability downstream: most sharply in [caching](capability:caching) and anything else holding state in process.ODataCAPODatacapabilityExposing data and operations through OData, including the service model, metadata and protocol versions clients require. Version differences affect which clients can consume a service and which query features they can use.Status flowsCAPStatus flowscapabilityDeclaring in the model which status transitions an entity may make, so the runtime rejects a transition nobody declared and sets the status itself when the bound action runs, instead of a check written by hand in every handler. Not [input validation](capability:input-validation): that checks a value, this checks a transition. Not [workflow integration](capability:workflow-integration): that drives an external engine, and this stays inside the model.Concurrency controlCAPConcurrency controlcapabilityStopping two people who opened the same record from silently overwriting each other — detecting that the version you read is no longer the version you are saving over.
Flavors
Node.jsfrom its runtime
Optional
@sap-cloud-sdk/http-client@sap-cloud-sdk/http-clientartifactResolving destinations that the runtime's own fetch client does not cover; installing it makes the runtime use it instead.@sap-cloud-sdk/http-client@sap-cloud-sdk/http-clientartifactOutgoing remote service calls that need a destination feature the native fetch client does not cover, such as on-premise connectivity or an authentication type beyond basic and client credentials; used by default when it is installed.
Designs
Agentic AI & AI AgentsAgentic AI & AI Agentsreference architectureorchestration framework structuring the pro-code agent's use case logic, data management and service integrationAI-native North Star architecture — Platform LayerAI-native North Star architecture — Platform Layerreference architectureAI Golden Path for application developmentGenerative AI on SAP BTPGenerative AI on SAP BTPreference architecturecentral hub for application and domain logicMultitenant SaaS Application using CAPMultitenant SaaS Application using CAPreference architectureapplication and domain logicSAP Document AISAP Document AIreference architectureenrichment and posting service

Before choosing this

Conditions

LicenceSAP Developer License Agreement 3.2 CAP§ 1from DestinationsA destination used by a covered CAP application sends SAP product data to a non-SAP product rather than only addressing a remote endpoint.
  • § 1 License. Productive customer applications are limited to SAP BTP or another SAP-licensed platform, and mass extraction to a non-SAP product is restricted except where solely required for SAP interoperability.

A destination is configuration, not the deciding boundary. The licence becomes material when the resulting data flow is extraction into a non-SAP product, so the target and purpose need review.

SAP Developer License Agreement 3.2 CAP →
LicenceSAP Developer License Agreement 3.2 CAP§ 3from Retrieval-augmented generationCovered SAP materials or a covered CAP customer application are included in training data, model development or model refinement.
  • § 3 Artificial Intelligence Training. The agreement prohibits use of the covered materials and customer applications for training artificial-intelligence models or systems.

Retrieval and inference are not automatically AI training. The section becomes relevant if the indexed or retrieved covered material is instead used for training, developing or refining the model or system.

SAP Developer License Agreement 3.2 CAP →
LicenceSAP Developer License Agreement 3.2 CAP§ 1from Async processingA covered CAP application sends SAP product data through an external broker where it is copied, saved or processed in a non-SAP product.
  • § 1 License. Productive customer applications are limited to SAP BTP or another SAP-licensed platform, and mass extraction to a non-SAP product is restricted except where solely required for SAP interoperability.

Messaging is not automatically mass extraction, but an external broker can cross the boundary named in section 1. The data flow, volume and interoperability purpose therefore need to be checked for the concrete design.

SAP Developer License Agreement 3.2 CAP →
LicenceSAP Developer License Agreement 3.2 CAP§ 1from Data federationReplication by a covered CAP application moves data from an SAP product into a non-SAP product.
  • § 1 License. Productive customer applications are limited to SAP BTP or another SAP-licensed platform, and mass extraction to a non-SAP product is restricted except where solely required for SAP interoperability.

Section 1 restricts mass extraction to a non-SAP product and states a scoped interoperability exception. That boundary is central to a replication design and must be checked against the actual use.

SAP Developer License Agreement 3.2 CAP →
LicenceSAP Developer License Agreement 3.2 CAP§ 1from Database connectorsA covered CAP application uses a connector to copy or persist SAP product data in a non-SAP database product.
  • § 1 License. Productive customer applications are limited to SAP BTP or another SAP-licensed platform, and mass extraction to a non-SAP product is restricted except where solely required for SAP interoperability.

The connector itself does not decide the licence boundary. Section 1 makes the destination and purpose of extraction relevant, including the scoped exception for interoperability with an SAP product.

SAP Developer License Agreement 3.2 CAP →

What it declares

Every artifact

Type
Package
Origin
By SAP
Runtime
Node.js

As a package

Where it runs
does not say
Distributed through
does not say

For caching

Caching layer
HTTP resource validation with ETags
Freshness control
Conditional GET using If-None-Match; 304 for an unchanged record

For attachments

Storage target
Database as LargeBinary, or an external URL by redirect

For service integration

Protocols
HTTPOData V4OData V2

For OData

Protocols
HTTPOData V4

Tasks this contributes to21Beta

Access an external system through an application MCP serviceAn AI agent queries external system data or invokes selected external operations through an application-owned service contract exposed over MCP.Node.js2 scopes
CAP Node.jsCovers, under conditions

Dated assessment history · last accepted 2026-10-12. Excluded from the current connected answer.

What it does

@sap/cds consumes remote services through CAP service APIs; the application supplies the contract and handlers that bridge the external system.

Conditions

Model and configure the remote service, supported protocol, connectivity and backend credentials.; Implement the application handlers that call the remote service; limit the exposed contract and allowed operations.

Remaining work

Implement the application service contract and remote-service handlers, restrict operations, configure backend credentials and tenant mapping, and test the selected target. No runtime integration was executed by the Atlas.

All options on the Serve your application over MCP page →
CAP Node.jsCovers, under conditions

Dated assessment history · last accepted 2026-10-12. Excluded from the current connected answer.

What it does

@sap/cds consumes remote services through CAP service APIs; the application supplies the contract and handlers that bridge the external system.

Conditions

Model and configure the remote service, supported protocol, connectivity and backend credentials.; Implement the application handlers that call the remote service; limit the exposed contract and allowed operations.; Confirm the target API and intended agent use against its applicable published API documentation and policy; remote-service consumption alone establishes no MCP exposure permission.

Remaining work

Implement the application service contract and remote-service handlers, restrict operations, configure backend credentials and tenant mapping, and test the selected target. No runtime integration was executed by the Atlas.

All options on the Serve your application over MCP page →
Answer a question from records in a CAP serviceA question asked in plain words is answered from rows the CAP model already holds: the records nearest to the question in meaning are found and put in front of a language model, so the answer rests on those records rather than on what the model remembers.Coversmodel and query language
What it does

The Vector type is built into CDS, so the embedding is an element of the entity it describes, and vector_embedding, cosine_similarity and l2distance are functions of the query language, so the retrieval is a WHERE clause and not a call to anything outside the model. A stored calculated element keeps a row's embedding in the database and recomputes it whenever the row changes on CREATE or UPDATE, which answers the question of when a record's vector is written.

Remaining work

Everything above the vector: choosing which fields of a record are embedded, splitting a text too long for one embedding, deciding how many rows to take and writing the prompt they go into. capire's guide documents no chunking function and no prompt assembly.

All options on the RAG on CDS page →
Cache a remote service responseA read that would call out to a remote service on every request is answered from a retained response until it expires.Node.jsAssessed, not knowncore runtime
What it does

Whether the CAP Node.js runtime retains a remote service response is not established here. Capire's CAP-level Service Integration guide, read on 2026-09-19, covers importing an API, integrating the model and writing the integration logic, and does not mention caching.

Remaining work

Read the remote services and destinations documentation on capire before treating this as settled. Absence from the integration guide is not a statement that the runtime does nothing.

All options on the Caching page →
Cache the result of a function callA function the application would otherwise run on every call returns a value retained from an earlier call until it expires.Node.jsAssessed, not knowncore runtime
What it does

Whether the CAP Node.js runtime retains what a function returns is not established here. No capire page documenting a result cache for a function or an action was located for this assessment.

Remaining work

Read the Node.js runtime and performance documentation on capire before treating this as settled. Nothing read here states that the runtime does this, and nothing read here states that it does not.

All options on the Caching page →
Serve repeated reads of a rarely written entity from a cacheReads of an entity that is read constantly and written rarely are answered inside the application instead of going to the database on every request.Node.jsAssessed, not knowncore runtime
What it does

Whether the CAP Node.js runtime holds a query result between requests is not established by the pages read for this assessment. Capire's generic service providers page documents ETag validation, which answers a conditional request rather than retaining a result, and the service integration guide read on 2026-09-19 does not mention caching at all.

Remaining work

Read the CAP Node.js databases and performance documentation before treating this as settled. Two guessed capire URLs for a performance guide returned 404 on 2026-09-19, so the page that would answer it was not located.

All options on the Caching page →
Skip resending a record the client already hasA client that re-reads an entity it has already fetched gets 304 and no body back when the record has not changed since.Node.js, JavaCoverscore runtime
What it does

A read carrying If-None-Match is answered with 304 and no body while the annotated element still matches. Capire's example is a GET on Employees/111 with the previous timestamp in the header.

Remaining work

Annotate an element with @odata.etag. Capire annotates modifiedAt from the managed aspect, which changes on each modification, and the client has to send back what it received.

All options on the Caching page →
Tell a client how long a served file stays freshA client that has fetched a file served by the application keeps using it for a stated number of seconds without asking the application again.Node.js, JavaStated not supportedcore runtime
What it does

Capire scopes the Cache Control feature to the Java runtime, so the same annotation is not documented as doing anything on Node.js.

Remaining work

Set the header from the application's own code, or take one of the other mechanisms this capability records. The page does not state what a Node.js runtime does with @http.CacheControl when the annotation is in the model.

All options on the Caching page →
Carry a vocabulary SAP does not ship into the OData metadataAnnotations written with terms of somebody's own reach the service's OData metadata, with the reference to their vocabulary document beside them, instead of being dropped in translation.Node.jsCoverscore runtime
What it does

cds.cdsc.odataVocabularies names a further vocabulary's alias, namespace and URI, and from then on every annotation prefixed with it is translated and the metadata carries the edmx:Reference to the vocabulary document beside the annotation.

Remaining work

Make the URI reachable where that matters, and write whatever reads the terms. The compiler has no access to the vocabulary's content, so it checks neither the values nor that a term is applied where its own definition allows.

All options on the Fiori annotations page →
Put a value help on a field a Fiori client rendersA field in a Fiori elements app offers the values it allows instead of a free-text input, with the list coming from the model rather than from code in the app.Node.js, JavaAlso in UI5, ABAPCovers, under conditionscore runtime
What it does

Two ways, both from the model. @cds.odata.valuelist on the entity that holds the values gives every managed association targeting it a value list, and the reuse types of @sap/cds/common already carry it, so a field typed from a code list there arrives with one. Any other case is the @Common.ValueList record written out in the vocabulary's own structure, which the compiler translates because the mapping is generic rather than written per term.

Conditions

The shortcut reaches a field only where that field is a managed association to the annotated entity.; A field that is not an association needs the @Common.ValueList record written by hand, naming the collection and the parameters that tie the local property to the value-list property.

Remaining work

Model the entity the values come from and expose it on the service, then decide field by field whether the shortcut applies or the record has to be written out.

All options on the Fiori annotations page →
See the annotations rendered before any Fiori app existsA developer changing @UI annotations sees the page they produce straight away, with no UI application in the project to generate or rebuild first.Node.js, JavaCovers, under conditionscore runtime
What it does

The index page carries a Fiori preview link for every entity exposed over OData V4 and serves a Fiori elements list page from that entity's annotations, so the effect of an annotation change is visible without creating a UI application.

Conditions

The entity has to be exposed over OData V4; the link appears for those entities and not for others.; It is disabled in production. cds.fiori.preview set to true turns it back on in a cloud deployment for a test or a demo.

Remaining work

Nothing in the project for the local loop. A real app still has to be generated once the page in question is more than a list report.

All options on the Fiori annotations page →
Show a self-referencing entity as a Fiori tree tableAn entity whose rows point at their own parent is rendered as an expandable tree in a Fiori elements list report instead of a flat list.Node.js, JavaAlso in ABAPCovers, under conditionscore runtime
What it does

@hierarchy on the entity expands at compile time to the Fiori-level annotate and extend statements the tree would otherwise need written by hand, and the runtime serves the result.

Conditions

The entity needs a recursive association to itself, which is what the shortcut reads.; The UI5 app's manifest.json has to name the hierarchy qualifier and set the table type to TreeTable; the qualifier follows the pattern <entity name in service>Hierarchy.

Remaining work

Add the controlConfiguration block to the app's manifest.json, and keep the qualifier in step with the entity's name in the service, because the pattern is derived from it.

All options on the Fiori annotations page →
Catch a change in what the application's AI feature answersA model, prompt or schema change is caught before it ships, by sending the application's own prompts over fixtures and judging the answers that come back.Node.js, JavaCoversthe test the project already runs
What it does

cds.test writes and runs tests against CAP services, so the call under test is made the way every other CAP test makes it. The page says nothing about output that varies between runs, and under Best Practices it advises against comparing whole response objects at all.

Remaining work

Everything the outcome needs past running the call: the fixtures, something that judges an answer which is different every time, and the threshold. The snapshot advice is written for responses whose timestamps and ids move, not for model output, so a project reading it as guidance here is extending it.

All options on the Agent evals page →
Handle a draft's own events apart from the active entity'sA draft-enabled entity's own events — NEW, PATCH, EDIT, SAVE and DISCARD — are handled in places of their own in a CAP service written in TypeScript, apart from the CREATE, UPDATE and DELETE handlers of the active entity.Node.jsCoverscore runtime
What it does

capire documents each draft event and which entity it fires on: NEW when a draft is created, PATCH on every field a user edits, EDIT when an active record starts being edited, SAVE on activation, DISCARD when a draft is thrown away. It also states the part that catches people out, that EDIT handlers are registered on the active entity and not on the drafts entity.

Remaining work

Every registration is the application's own on, before or after call against the right target. Nothing in the pages read here gives the draft events a place of their own in the code, so one entity's active and draft handlers sit in the same implementation unless the project separates them.

All options on the TypeScript patterns page →
Keep data access out of a CAP service's handlersThe data access of a CAP service written in TypeScript is called through classes with methods rather than written as queries inside the event handlers, so a handler holds the business logic and the queries sit behind one object.Node.jsAssessed, not knowncore runtime
What it does

The runtime's documented place for custom logic is the event handler itself. None of the pages read for this assessment names a layer between a handler and the database, or a place for one, so whether the core has a position on this outcome is not established either way.

Remaining work

Not established. A project that wants the queries out of its handlers writes that separation itself with what the runtime gives it.

All options on the TypeScript patterns page →
Split one CAP service implementation into a class per entityThe custom logic of a CAP service written in TypeScript sits in one class per entity rather than in a single service implementation file, and each class's methods still reach the framework as the before, on and after handlers for that entity.Node.jsCoverscore runtime
What it does

capire documents the shape the runtime itself gives a service implementation: a subclass of cds.ApplicationService whose init() registers the handlers with on, before and after, found in a file named after the service definition or in a lib/ or handlers/ subfolder beside it. A TypeScript project is run as a JavaScript one, so this is the arrangement a TypeScript service starts from.

Remaining work

Dividing one service's handlers across several classes, and whatever then registers them in init(), is the application's own code. The pages read here document one implementation per service definition and the folders it may sit in; none of them maps a class to an entity or finds such classes by itself.

All options on the TypeScript patterns page →
Reach every UI app of a CAP project from one page while developingA project with more than one UI app gives a developer one page that links all of them, instead of a URL per app to keep and to type.Node.jsCoverscore runtime
What it does

The generic index page of the CDS server carries a link to every SAP Fiori app created under app/, added without configuration, and it is a development page: it is not served once NODE_ENV is production.

Remaining work

Nothing for the links themselves. A page that has to look like a launchpad, with tiles, groups or a shell around the apps, is not what the index page is.

All options on the UI5 dev server page →
Serve a UI5 CLI project from the CAP server while developingA UI5 app that is a UI5 CLI project, its framework resources resolved and its middlewares configured by ui5.yaml, is reachable on the CDS server's own port while the services are running, with no second server and no proxy in front.Assessed, not knowncore runtime
What it does

The CDS server serves one folder of the project as static content, ./app by default, and links the SAP Fiori apps it finds there on its generic index page. Whether a UI5 CLI project, whose resources the UI5 tooling assembles rather than leaving in the folder, is served by that handler is not established by the pages read here: they describe the folder and the index page and say nothing about running the UI5 tooling.

Remaining work

An app served this way has to be a set of files the server can hand over as they are, which for a UI5 CLI project means building it or resolving its framework resources some other way. Neither page read here says how.

All options on the UI5 dev server page →
Receive messages from an Apache Kafka topicRecords that another system writes to a topic on an Apache Kafka cluster reach a handler in the application, which processes each one as an event.Node.js, JavaAssessed, not knowncore runtime
What it does

capire's Node.js messaging page names Apache Kafka as an example of a message broker and documents no messaging kind for it: the kinds it lists are SAP Event Mesh, advanced event mesh, the event broker, Redis, file-based, local and composite messaging. Part 1 of the cds-kafka blog series reports an undocumented Kafka adapter in the CAP sources, added with cds add kafka and bound to a Kafka service that is not publicly available. That is the blog author's reading of the sources and SAP's documentation does not confirm or deny it.

Remaining work

Nothing in SAP's documentation to configure. A Kafka connection comes from a plugin, from a service in between, or from code the application carries itself.

All options on the Event Mesh page →
Receive SAP Document AI's extraction results in an applicationThe fields SAP Document AI extracted from a document reach an application of the reader's own, pushed by an outbound channel when the document reaches a step, so the application can map them and post them on.Covers, under conditionsthe service an outbound channel notifies
What it does

The posting page's third route: a CAP service receives the extraction notification, maps the fields and posts on, to SAP S/4HANA Cloud over OData or to an on-premise system through the Cloud Connector.

Conditions

An outbound channel in Document AI set to notify the application when documents reach the step, with the extraction results.

Remaining work

The endpoint that receives the notification, the field mapping and the posting call are the application's own code; the runtime serves the endpoint over HTTP and no package for Document AI is in the graph.

All options on the Service integration page →
Send a document to SAP Document AIA document that arrived somewhere an application or a flow can reach is uploaded to SAP Document AI for classification and extraction.Covers, under conditionsthe application that uploads through the API
What it does

The ingestion page places a CAP application on the API route: it uploads documents the service's own channels do not reach, keeps track of what was processed and offers its own UIs. Its example is a CAP service that subscribes to Ariba invoice events, fetches the PDFs and uploads them.

Conditions

A document source the service's own intake channels do not cover, or routing and transformation the channels cannot do; the page places the API route there.

Remaining work

The upload call against the Document AI API, the record of processed documents and any UI are the application's own code; no CAP package for Document AI is in the graph, and the page names no client.

All options on the Service integration page →
Start a CAP service with nothing boundA CAP project whose model imports a remote service and whose endpoints are authenticated starts, serves and answers requests on a laptop with no service instance bound, no database provisioned and no upstream system reachable.Node.js, JavaShown workingcore runtime (Node.js)
What it does

Mocks every imported service in process with mock data in the same in-memory database as the project's own data, and authenticates with the pre-defined mock users of its mocked strategy, so a first run needs nothing bound to it.

Remaining work

Supply the mock data as CSV under srv/external/data. An association of a mocked service returns no data until the imported model is extended by hand, and the mocked users say nothing about how the deployed application will authenticate.

All options on the Local development page →

Parts and add-ons5

Add-ons 5

CDS plugins3
@cap-js/telemetryby SAPAutomatic OpenTelemetry instrumentation for CAP Node.js services and their database calls, exported as traces and metrics to the console, SAP Cloud Logging, Dynatrace, Jaeger or an OTLP endpoint.
@rizing/cds-extensionby a partnerA CAP extension, CDSX, that puts a draft-capable facade in front of an OData service imported into CAP, so Fiori elements can edit records that live in another system as drafts.
cap-companionindependently maintainedServes a playback-only SAP Companion (Help4) workarea from a CAP service, so a Fiori application shows tours and in-app help without Enable Now Manager.
ConsiderationFunctional boundaryNot behind a managed approuter: SAP Build Work Zone does not expose the `/$companion/**` routes, so Companion never reaches CAP, and the README names managed approuter and Work Zone as out of scope for v1. Not where help has to be authored in a browser, since the editor, the producer and writes are absent and content lives in files the plugin compiles.
Samples2
btp-agentindependently maintainedOne LangGraph agent in a CAP service, with a UI5 chat screen in front of it and four odata-mcp-proxy MCP server modules behind it, deployed to Cloud Foundry as a single MTA.
Starting pointNo licenseNo license. Neither the package manifest nor the repository tree declares a licence. Without a licence the default is all rights reserved. Ask the maintainer, or check for terms stated elsewhere, before depending on it. Rule: the fetched manifest names no licence and the repository tree holds no licence file. Observed 2026-10-24.
ui5-cap-serverside-rendering-demoindependently maintainedThe demo project the ui5-cap-serverside-rendering-plugin README points to: a CAP bookshop whose Books list and detail views sit in srv/views and reach the browser already filled with data.
ReferenceNo licenseNo license. Neither the package manifest nor the repository tree declares a licence. Without a licence the default is all rights reserved. Ask the maintainer, or check for terms stated elsewhere, before depending on it. Rule: the fetched manifest names no licence and the repository tree holds no licence file. Observed 2026-10-26.ConsiderationFunctional boundaryAs a deployment template it stops at the service: the `mta.yaml` has one module, `gen/srv` on the Node.js buildpack, and no HTML5 repository or router module for the app.

Connections55

@sap/cds connections@sap/cdsPROVIDES→ provides37provides authored Compiles OData $apply into database aggregation, so grouping and aggregates are answered by the database. Serving OData APIs — feature overview: https://cap.cloud.sap/docs/guides/protocols/odataAnalytical queriesprovides stated Queues a service's calls, inbound messages and scheduled tasks in the cds.outbox.Messages table inside the business transaction, dispatches them after commit, retries with exponential backoff and keeps failures past maxAttempts as a dead letter queue; cds.queued() wraps a service, outboxed: true does it by configuration. Transactional Event Queues — capire: https://cap.cloud.sap/docs/guides/events/event-queues Transactional Event Queues — capire: https://cap.cloud.sap/docs/guides/events/event-queues Transactional Event Queues — capire: https://cap.cloud.sap/docs/guides/events/event-queuesAsync processingprovides stated Serves an element annotated @Core.MediaType as an OData media resource, stored in the database as a LargeBinary or redirected to an external URL, streamed to and from the client. Serving Media Data — capire: https://cap.cloud.sap/docs/guides/services/media-data Serving Media Data — capire: https://cap.cloud.sap/docs/guides/services/media-dataAttachmentsprovides stated Validates tokens and builds the security context for XSUAA and IAS, exposing the authenticated user to handlers as req.user. Authentication: https://cap.cloud.sap/docs/guides/security/authentication Authentication (Node.js) — capire: https://cap.cloud.sap/docs/node.js/authentication Product Security Overview — capire: https://cap.cloud.sap/docs/guides/security/data-protectionAuthenticationprovides stated Evaluates @requires and @restrict from the model at runtime, including instance-based restrictions expressed as where-clauses. Authorization and Access Control: https://cap.cloud.sap/docs/guides/security/authorization Application Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/app-services#generic-handlers-in-srv-init Application Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/app-services#class-cds-applicationserviceAuthorizationprovides stated Supports ETag-based conditional HTTP reads for annotated entities in the CAP Node.js runtime. capire — Generic Service Providers: https://cap.cloud.sap/docs/guides/services/served-ootbCachingprovides stated Optimistic concurrency with ETags: an element annotated @odata.etag is the version, and an update whose If-Match no longer holds is rejected by the generic handlers. Generic Service Providers — Concurrency Control — capire: https://cap.cloud.sap/docs/guides/services/served-ootb#concurrency-control Application Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/app-services#static-handle-etagsConcurrency controlprovides authored Resolves layered configuration through cds.env — profiles, environment and service bindings merged into one view. cds.env: https://cap.cloud.sap/docs/node.js/cds-envConfigurationprovides stated Shows service-level replication as application code in the Data Federation guide: about forty lines in the xtravels sample that turn each @federated entity into a table, schedule a replicate handler with the runtime's scheduling API and upsert the rows newer than the local maximum of modifiedAt. The runtime supplies the annotation, the scheduling and the remote query; the loop is the application's own. CAP-level Data Federation — capire: https://cap.cloud.sap/docs/guides/integration/data-federation CAP-level Data Federation — capire: https://cap.cloud.sap/docs/guides/integration/data-federationData federationprovides stated Compiles CDL from files or in-memory sources to CSN with cds.compile, and every generic handler reads the model through that CSN at runtime. Parsing and Compiling Models — capire: https://cap.cloud.sap/docs/node.js/cds-compile Reflecting CDS Models — capire: https://cap.cloud.sap/docs/node.js/cds-reflectData modellingprovides stated Data retention management, the third automation the personal-data annotations are meant to drive: the guide page exists and says it is under construction, and nothing is shipped to cite yet. Data Retention Management — capire: https://cap.cloud.sap/docs/guides/security/dpp-drm Annotating Personal Data — capire: https://cap.cloud.sap/docs/guides/security/dpp-annotationsData privacyprovides stated Defines cds.DatabaseService, the technical service every database package subclasses, and auto-wires the installed one, SQLite, SAP HANA or PostgreSQL, for the active profile. Database Services — capire: https://cap.cloud.sap/docs/node.js/databases Using Databases — capire: https://cap.cloud.sap/docs/guides/databases/new-dbsDatabase connectorsprovides stated Resolves an SAP BTP destination in the runtime's own fetch client, so a production call no longer has to go through the SAP Cloud SDK. Added in CAP Node.js 10.1 and marked beta, covering proxy type Internet with NoAuthentication, BasicAuthentication or OAuth2ClientCredentials; a destination using any other authentication type is served by @sap-cloud-sdk/http-client once that package is installed. CAP Release Notes — September 2026: https://cap.cloud.sap/docs/releases/2026/sep26 CAP Release Notes — September 2026, Destinations w/o Cloud SDK: https://cap.cloud.sap/docs/releases/2026/sep26Destinationsprovides stated Runs the draft lifecycle for draft-enabled entities — activation, discard and locking — without custom handlers. Since CAP Node.js 10.0 a request that carries no draft notation addresses active data, and draft locks are still enforced against direct updates, deletes and conflicting edits. Serving Fiori UIs — draft support: https://cap.cloud.sap/docs/guides/uis/fiori CAP Release Notes — June 2026: https://cap.cloud.sap/docs/releases/2026/jun26 Fiori Support (Node.js) — capire: https://cap.cloud.sap/docs/node.js/fiori Application Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/app-services#static-handle-fioriDraft handlingprovides authored Provides req.error and req.reject, and serialises the result into protocol-correct payloads with target paths. Events and requests: https://cap.cloud.sap/docs/node.js/eventsError handlingprovides stated Provides the messaging service kinds for SAP Event Mesh and SAP Cloud Application Event Hub: with a bound instance it creates a queue per receiver process and the subscriptions, and delivers an S/4HANA event to the same srv.on handler as a local one. Messaging via SAP Event Mesh — capire: https://cap.cloud.sap/docs/guides/events/event-mesh Messaging via SAP Event Mesh — capire: https://cap.cloud.sap/docs/guides/events/event-meshEvent Meshprovides authored Maps protocol-agnostic annotations to OData, with value-list shortcuts applied from the model. Serving Fiori UIs: https://cap.cloud.sap/docs/guides/uis/fioriFiori annotationsprovides stated Scaffolds a starter frontend with cds add vue or cds add react, and wires SAP Build Application Frontend with cds add app-frontend. Vue.js and React UIs: https://cap.cloud.sap/docs/guides/uis/vue-reactFrontend boundaryprovides stated Answers GET /health with status 200 and { status: UP } as the liveness and readiness endpoint, with nothing configured. Health Checks — capire: https://cap.cloud.sap/docs/guides/deploy/health-checksHealth checksprovides stated Enforces @mandatory, @assert.range, @assert.format, @assert.target and @assert with a CXL case expression whenever data is written: the static checks on the input, the expressions collected into one query and run in the database, and a failure rejects the request and rolls the transaction back. Declarative Constraints — capire: https://cap.cloud.sap/docs/guides/services/constraints Declarative Constraints — capire: https://cap.cloud.sap/docs/guides/services/constraints Declarative Constraints — capire: https://cap.cloud.sap/docs/guides/services/constraints Application Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/app-services#static-handle-validationsInput validationprovides stated Schedules a service's events as tasks with srv.schedule(): once, after a delay, or repeatedly on an interval or a cron expression, persisted in the event queue and cancelled with srv.unschedule(). Transactional Event Queues — Scheduled Tasks: https://cap.cloud.sap/docs/guides/events/event-queues#scheduled-tasksJob schedulingprovides stated Mocks every imported remote service in process with mock data in the same in-memory database, and authenticates with mocked users by default in development, so the whole stack runs on a laptop before anything is bound. Inner-Loop Development — capire: https://cap.cloud.sap/docs/guides/integration/inner-loops Authentication (Node.js) — capire: https://cap.cloud.sap/docs/node.js/authenticationLocal developmentprovides stated Resolves i18n bundles per request and serves localized entities and translated model annotations. Localization / i18n: https://cap.cloud.sap/docs/guides/uis/i18n Localized data: https://cap.cloud.sap/docs/guides/uis/localized-data Localization / i18n (Node.js) — capire: https://cap.cloud.sap/docs/node.js/cds-i18n Application Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/app-services#static-handle-localized-dataLocalizationprovides authored Emits EDMX and CSN for every exposed service, generated from the model rather than maintained separately. Serving OData APIs: https://cap.cloud.sap/docs/guides/protocols/odataMetadata publishingprovides stated Isolates tenants at runtime: every service call carries the tenant in its context and the framework connects it to that tenant's database. Provisioning, subscription and per-tenant deployment are @sap/cds-mtxs. Transaction Management — capire: https://cap.cloud.sap/docs/node.js/cds-txMultitenancyprovides stated Treats an entity annotated @cds.persistence.exists as a facade for a database object it does not generate, renders a user-defined function or calculation view call from the matching hint, and inserts @sql.prepend and @sql.append snippets into the generated DDL unevaluated. Using Native HANA Artifacts — capire: https://cap.cloud.sap/docs/guides/databases/hana-native Using Native HANA Artifacts — capire: https://cap.cloud.sap/docs/guides/databases/hana-native Using SAP HANA Cloud for Production — capire: https://cap.cloud.sap/docs/guides/databases/hanaNative SAP HANA artifactsprovides stated Serves every exposed service as OData V4 from the model with no adapter in between, and OData V2 through its proxy. Service Protocols in CAP — capire: https://cap.cloud.sap/docs/guides/protocols/ Custom Actions and Functions — capire: https://cap.cloud.sap/docs/guides/services/custom-actions Serving Provided Services — capire: https://cap.cloud.sap/docs/node.js/cds-serve Core Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/core-services#serving-provided-services-cds-serveODataprovides stated Applies implicit and explicit paging to collections, and streams large binary properties rather than buffering them. Generic providers — pagination: https://cap.cloud.sap/docs/guides/services/served-ootb Streaming media data: https://cap.cloud.sap/docs/node.js/streaming Application Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/app-services#static-handle-pagingPagination and streamingprovides stated Carries the modelled half: the Vector type is built into CDS and the vector functions are part of the query language, so an embedding is an element of an entity and a retrieval is a `WHERE` clause. `vector_embedding` turns a text into a vector, `cosine_similarity` and `l2distance` compare two, and a `stored` calculated element keeps a row's embedding in the database and recomputes it whenever the row changes. Splitting a text into chunks and assembling what was found into a prompt are not here. CAP-native Embeddings, vector_embedding — capire: https://cap.cloud.sap/docs/guides/ai/embeddings CAP-native Embeddings, cosine_similarity — capire: https://cap.cloud.sap/docs/guides/ai/embeddings CAP-native Embeddings, Using Calculated Elements — capire: https://cap.cloud.sap/docs/guides/ai/embeddings#using-calculated-elementsRetrieval-augmented generationprovides authored Runs cds deploy, deriving and applying the delta for the model changes a compiler can work out on its own. Schema Evolution: https://cap.cloud.sap/docs/guides/databases/schema-evolutionSchema evolutionprovides authored Compiles @cds.search into database-level search predicates and serves $search on exposed collections. Generic providers — searching data: https://cap.cloud.sap/docs/guides/services/served-ootbSearchprovides authored Loads CSV files at deploy time as initial and sample data. Providing initial data: https://cap.cloud.sap/docs/guides/databases/initial-dataSeed dataprovides stated Embeds a reuse package added with npm into the project, models, code, initial data and i18n, serves what the project's own models reference, lets an imported definition be extended and its implementation replaced with @impl, and applies the same to a subscribed SaaS through cds pull and cds push. CAP Service Composition — capire: https://cap.cloud.sap/docs/guides/integration/reuse-and-compose CAP Service Composition — capire: https://cap.cloud.sap/docs/guides/integration/reuse-and-compose CAP Service Composition — capire: https://cap.cloud.sap/docs/guides/integration/reuse-and-composeService compositionprovides stated Builds a remote proxy with cds.connect.to for any imported service, translates a local query into OData V4, OData V2 or HCQL against the remote entity, and mocks the imported service in process until a binding is configured; outbound calls use the SAP Cloud SDK client when installed, else the native fetch client. CAP-Level Service Integration — capire: https://cap.cloud.sap/docs/guides/integration/calesi CAP-Level Service Integration — capire: https://cap.cloud.sap/docs/guides/integration/calesi Remote Services Concept — capire: https://cap.cloud.sap/docs/node.js/remote-servicesService integrationprovides stated Validates and executes the status transitions modelled with @flow.status, @from and @to on bound actions in the generic handlers, out of the box; in CAP Java the same is the cds-feature-flow package. Status-Transition Flows — capire: https://cap.cloud.sap/docs/guides/services/status-flowsStatus flowsprovides stated Serves an entity annotated @cds.valid.from/to as time slices behind a timeless key: as of now by default, at a moment with sap-valid-at, and the history since a date with sap-valid-from. Temporal Data — capire: https://cap.cloud.sap/docs/guides/domain/temporal-data Temporal Data — capire: https://cap.cloud.sap/docs/guides/domain/temporal-data Temporal Data — capire: https://cap.cloud.sap/docs/guides/domain/temporal-data Application Services (Node.js) — capire: https://cap.cloud.sap/docs/node.js/app-services#static-handle-temporal-dataTemporal dataprovides stated Starts, joins, commits and rolls back the database transaction around every service call, propagates user, tenant and locale through cds.context, demarcates a transaction by hand with cds.tx() and runs detached background work with cds.spawn(). Transaction Management — capire: https://cap.cloud.sap/docs/node.js/cds-tx Transaction Management — capire: https://cap.cloud.sap/docs/node.js/cds-tx Transaction Management — capire: https://cap.cloud.sap/docs/node.js/cds-tx The cds Façade Object — capire: https://cap.cloud.sap/docs/node.js/cds-facade#cds-contextTransaction managementUSED BY← needed by15needed by derived the CDS runtime whose OData V4 service the adapter translates V2 requests into Through: inverted from its requires edge cap-js-community/odata-v2-adapter — README: https://github.com/cap-js-community/odata-v2-adapter@cap-js-community/odata-v2-adapterneeded by derived The runtime the plugin is loaded by: `@sap/cds` ^10.1 for the local embeddings on [SQLite](external:sqlite), while the package's other capabilities still support `@sap/cds` 9. Through: inverted from its requires edge cap-js/ai — README, local embeddings on SQLite: https://raw.githubusercontent.com/cap-js/ai/main/README.md@cap-js/aineeded by derived The runtime this is the SAP HANA database service for. Through: inverted from its requires edge @cap-js/hana — README: https://raw.githubusercontent.com/cap-js/cds-dbs/main/hana/README.md@cap-js/hananeeded by derived The CDS runtime version the project's model is compiled with for search_model. When the project provides no local CDS, the @sap/cds runtime version of a globally installed cds-dk is used instead. Through: inverted from its requires edge cap-js/mcp-server — CHANGELOG, 0.0.7: https://raw.githubusercontent.com/cap-js/mcp-server/main/CHANGELOG.md@cap-js/mcp-serverneeded by derived To run as a CDS plugin extending the CAP Node.js runtime it instruments. Through: inverted from its requires edge telemetry README: https://github.com/cap-js/telemetry@cap-js/telemetryneeded by derived CDSX is loaded into the CAP Node.js runtime from cds.on('bootstrap') to extend it with draft handling for imported OData services. Through: inverted from its requires edge @rizing/cds-extension on npm: https://www.npmjs.com/package/@rizing/cds-extension@rizing/cds-extensionneeded by derived The CAP project runtime [@sap/cds](artifact:sap-cds), version 7 or later, executes the database queries required by this server. Through: inverted from its requires edge @shahid.la/cds-db-nlquery-mcp — README: https://github.com/shahidla/cds-db-nlquery-mcp@shahid.la/cds-db-nlquery-mcpneeded by derived the CAP runtime the agent, the chat service and the CDS data model run in Through: inverted from its requires edge lemaiwo/btp-agent — CLAUDE.md, Key Dependencies: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.mdbtp-agentneeded by derived The CAP runtime it installs into: CAP picks the plugin up from `node_modules` and reads its settings from `cds.companion`. Through: inverted from its requires edge sleibach/cap-companion README — Requirements: https://github.com/sleibach/cap-companion sleibach/cap-companion README — Install: https://github.com/sleibach/cap-companioncap-companionneeded by derived Requires [@sap/cds](artifact:sap-cds) >= 8. Through: inverted from its requires edge cds-caching — Requirements: https://github.com/mikezaschka/cds-caching/blob/main/README.mdcds-cachingneeded by derived Reads the CDS configuration in package.json and the destination and connectivity settings beside it, so it runs inside a CAP project. Through: inverted from its requires edge cdse — README: https://github.com/jcailan/cdse/blob/master/README.mdcdseneeded by derived The backend: the services, the OData V4 endpoints the app reads and the test suites run on the CAP Node.js runtime. Through: inverted from its requires edge Kamilkov/supply-chain-rescue — PRODUCT.md, Stack: https://raw.githubusercontent.com/Kamilkov/supply-chain-rescue/main/PRODUCT.md Kamilkov/supply-chain-rescue — PRODUCT.md, Stack: https://raw.githubusercontent.com/Kamilkov/supply-chain-rescue/main/PRODUCT.mdSupply Chain Rescueneeded by derived The CAP Node.js runtime the project's service runs on. Through: inverted from its requires edge ui5-cap-serverside-rendering-demo — package.json, dependencies: https://raw.githubusercontent.com/lemaiwo/ui5-cap-serverside-rendering-demo/main/package.jsonui5-cap-serverside-rendering-demoneeded by derived The CDS server it embeds: the middleware calls `cds serve` internally to create the middleware functions and puts them into the UI5 development server. Through: inverted from its requires edge ui5-middleware-cap — README, options: https://raw.githubusercontent.com/ui5-community/ui5-ecosystem-showcase/main/packages/ui5-middleware-cap/README.md ui5-middleware-cap — package.json, peerDependencies: https://raw.githubusercontent.com/ui5-community/ui5-ecosystem-showcase/main/packages/ui5-middleware-cap/package.jsonui5-middleware-capneeded by derived the CAP runtime it plugs into, named by the README as its peer dependency Through: inverted from its requires edge vite-plugin-cds — README, prerequisite: https://raw.githubusercontent.com/Akatuoro/vite-plugin-cds/main/README.mdvite-plugin-cds← optionally used by1optionally used by derived If: the workspace is a CAP project The [@sap/cds](artifact:sap-cds) module in a CAP project, which the README says has to be installed when the extension works with CAP projects. Through: inverted from its requires edge SAP/ui5-language-assistant — vscode-ui5-language-assistant README, Requirements: https://github.com/SAP/ui5-language-assistant/tree/master/packages/vscode-ui5-language-assistantvscode-ui5-language-assistantifNEEDS→ optionally needs2optionally needs stated If: A remote service call needs on-premise connectivity or an authentication type the native fetch client does not support; used by default whenever the package is installed. Resolving destinations that the runtime's own fetch client does not cover; installing it makes the runtime use it instead. CAP Release Notes — September 2026, Destinations w/o Cloud SDK: https://cap.cloud.sap/docs/releases/2026/sep26@sap-cloud-sdk/http-clientifoptionally needs stated If: A remote service call needs on-premise connectivity or an authentication type the native fetch client does not support; used by default whenever the package is installed. Outgoing remote service calls that need a destination feature the native fetch client does not cover, such as on-premise connectivity or an authentication type beyond basic and client credentials; used by default when it is installed. Remote Services Concept — capire: https://cap.cloud.sap/docs/node.js/remote-services@sap-cloud-sdk/http-clientif

Install

npm add @sap/cds

Derived from the package name. No recipe recorded; the README has the configuration.

Learn more16

Readings
  1. CAP: The Road Ahead - Simplicity in an AI EraSAP Developers, YouTube — SAP Developers playlists
  2. Hello React & Vue : SAP CAP’s New UI Layer is Here!Yogananda, SAP Community
  3. CAP Developers - Call to Action to mitigate and Apply Solution provided in SAP Note 3747787Yogananda, SAP Community
13 more
  1. CAP, RAP, or Both: Stop Hiding Behind 'It Depends'Walter Andres Aguero Machado, SAP Community
  2. What's new in SAP Cloud Application Programming Model – January 2026BirgitS, SAP Community
  3. CAP Heaven? Not Yet — But You Can See It from HereMattias Johansson, SAP Community
  4. Declarative Programming in CAP: Less Code, More ValueBirgitS, SAP Community
  5. What's new in SAP Cloud Application Programming Model – November 2025BirgitS, SAP Community
  6. What's new in SAP Cloud Application Programming Model – September 2025BirgitS, SAP Community
  7. Don't "let it crash", is this the new CAP guideline?Dinu, SAP Community
  8. SAP CAPv7 - Node.js Highlights and Experiencesdavidtill, SAP Community
  9. Getting started with cds.ql in NodeJS for CAP - 101 on how to query dataleoirudayam, SAP Community
  10. CAP is important because it's not importantDJ Adams, SAP Community
  11. SAP Cloud Application Programming Model (CAP) - start hereDJ Adams, SAP Community
  12. Everything new: Try out the latest features in CAPDaniel Hutzel, Daniel Schlachter, SAP TechEd — session catalogue
  13. AI needs a foundation: A map of the plug-in ecosystem for CAPMike Zaschka, SAP TechEd — session catalogue
What changed
  1. v@sap/cds 10.1

    The runtime's own fetch client resolves SAP BTP destinations, which until this release needed the SAP Cloud SDK in production. It is marked beta and covers proxy type Internet with NoAuthentication, BasicAuthentication or OAuth2ClientCredentials.

    Makes stale:

    Guidance that a CAP Node.js application needs the SAP Cloud SDK to resolve a destination in production. It still does for anything outside the three authentication types named above.

13 earlier
  1. v10.1.0

    In production, messaging webhook endpoints are no longer registered anonymously when neither cds.requires.auth nor cds.requires.messaging.xsuaa is configured. A static @restrict.where on a collection-bound action is enforced, where before this release it was ignored.

    Makes stale:

    A deployment whose messaging webhooks are reached anonymously with no auth configured, or whose collection-bound action is called by users its @restrict.where excludes.

  2. v@sap/cds 10.0

    Write operations answer in one shape across application services, database services and HCQL-proxied remote services: an array carrying an .affected property. Before 10.0 the result of a write differed between an app service and a database service.

    Makes stale:

    Node.js code and posts that read the result of an INSERT, UPDATE or DELETE as a single object or a row count.

  3. v@sap/cds 10.0

    A request that carries no draft notation addresses active data, because the runtime assumes IsActiveEntity=true. Draft locks are unchanged: a direct update or delete against an instance that has a draft is rejected, as is a conflicting edit.

    Makes stale:

    Guidance that a non-Fiori client has to spell out draft notation to reach the active data of a draft-enabled entity.

  4. v10.0.0

    Node.js 22 is the minimum and Node.js 20 is no longer supported.

    Makes stale:

    Setup notes that run CAP on Node.js 20.

  5. v10.0.0

    cds.features.ieee754compatible defaults to true, so every database service returns Decimal and Int64 values as strings.

    Makes stale:

    Handlers that read Decimal or Int64 values as numbers.

  6. v10.0.0

    cds.compile.to.hdbcds() is removed in favour of cds.compile.to.hdbtable().

    Makes stale:

    Code that calls cds.compile.to.hdbcds().

  7. v9.7.0

    Express 5 is supported beside Express 4, and express moved from a peer dependency of @sap/cds to a regular one, so an application that pins it or requires it in its own code declares the dependency itself.

    Makes stale:

    Setup notes that add express to a CAP project because @sap/cds lists it as a peer dependency.

  8. v9.3.0

    cds.User.tokenInfo is deprecated in favour of cds.context.user.authInfo.token, and the undocumented cds.context.http.req.authInfo in favour of cds.context.user.authInfo; 10.0.0 removed both. Patch-level validations for drafts are on by default, switched off with cds.fiori.draft_messages=false.

    Makes stale:

    Handlers that read the token through req.user.tokenInfo or cds.context.http.req.authInfo.

  9. v9.0.0

    The generic outbox becomes CAP-native task queues: cds.queued() and cds.unqueued() replace cds.outboxed() and cds.unboxed(), cds.requires.queue replaces cds.requires.outbox, and the queue is on by default, which needs a deployment of the cds.outbox.Messages table where the outbox was not switched on before.

    Makes stale:

    Code and posts that call cds.outboxed() or configure cds.requires.outbox; a temporary compatibility layer keeps them working in 9.

  10. v9.0.0

    PATCH no longer creates a missing resource and PUT no longer resets unprovided properties to their defaults; the flags cds.runtime.patch_as_upsert and cds.runtime.put_as_replace bring the old behaviour back.

    Makes stale:

    Clients that create a record with PATCH.

  11. v9.0.0

    The legacy OData adapter, enabled with the compat flag cds.features.odata_new_adapter=false, is removed.

    Makes stale:

    Setups that set cds.features.odata_new_adapter=false.

  12. v9.0.0

    The legacy database services enabled with @sap/cds-hana or sqlite3 are removed.

    Makes stale:

    Setups that still use @sap/cds-hana or sqlite3 as the database service.

  13. v9.0.0

    cds.test requires @cap-js/cds-test to be installed.

README

quoted from @sap/cds@10.1.1, read
@sap/cds@10.1.1/README.mdOn npm

@sap/cds

The API package for the SAP Cloud Application Programming Model (CAP).

See the API documentation for more details.

excerpt, SAP DEVELOPER LICENSE AGREEMENT 3.2 CAP, read licencethe rest, on npm

History

Latest

v10.2.1

Fixes 3

  1. v10.2.0

    Removed 1, Features 5, Changed 5, Fixes 18

  2. v10.1.1

    Fixes 14

  3. v10.1.0

    Removed 1, Features 3, Changed 3, Fixes 11

  4. v10.0.6

    Fixes 6

  5. v10.0.5

    Fixes 2

  6. v10.0.4

    Fixes 4

  7. v10.0.3

    Fixes 1

  8. v10.0.2

    Features 1, Fixes 6

  9. v10.0.1

    Features 1, Fixes 7

  10. v10.0.0

    Removed 14, Features 7, Changed 18, Fixes 10

  11. v9.9.3

    Fixes 1

  12. v9.9.2

    Fixes 3

  13. v9.9.1

    Fixes 5

  14. v9.9.0

    Features 10, Changed 2, Fixes 10

  15. v9.8.5

    Fixes 4

  16. v9.8.4

    Fixes 3

  17. v9.8.3

    Fixes 1

  18. v9.8.2

    Fixes 1

  19. v9.8.1

    Fixes 3

  20. v9.8.0

    Features 8, Changed 4, Fixes 11

  21. v9.7.1

    Fixes 3

  22. v9.7.0

    Removed 1, Features 6, Changed 4, Fixes 13

  23. v9.6.4

    Fixes 2

  24. v9.6.3

    Fixes 1

  25. v9.6.2

    Fixes 5

  26. v9.6.1

    Fixes 2

  27. v9.6.0

    Features 4, Changed 2, Fixes 11

  28. v9.5.2

    Fixes 3

  29. v9.5.1

    Fixes 5

  30. v9.5.0

    Features 10, Changed 3, Fixes 11

  31. v9.4.5

    Fixes 5

  32. v9.4.4

    Fixes 4

  33. v9.4.3

    Fixes 4

  34. v9.4.2

    Fixes 2

  35. v9.4.1

    Fixes 2

  36. v9.4.0

    Features 6, Changed 4, Fixes 7

  37. v9.3.1

    Fixes 3

  38. v9.3.0

    Removed 3, Features 11, Changed 5, Fixes 7

  39. v9.2.1

    Fixes 5

  40. v9.2.0

    Features 6, Changed 3, Fixes 7

  41. v9.1.0

    Features 3, Changed 3, Fixes 8

  42. v9.0.4

    Fixes 6

  43. v9.0.3

    Fixes 3

  44. v9.0.2

    Changed 1, Fixes 1

  45. v9.0.1

    Changed 2, Fixes 9

  46. v9.0.0

    Removed 20, Features 8, Changed 13, Fixes 7

135,659downloads per week, npm
Weekly downloads for @sap/cds26 complete calendar weeks from 2026-04-20 to 2026-10-18; the latest total is 135659.20 Apr – 26 Apr: 305,59127 Apr – 3 May: 278,9674 May – 10 May: 305,88911 May – 17 May: 313,20318 May – 24 May: 320,06625 May – 31 May: 294,6141 Jun – 7 Jun: 252,8308 Jun – 14 Jun: 322,70115 Jun – 21 Jun: 313,56822 Jun – 28 Jun: 309,20429 Jun – 5 Jul: 334,0286 Jul – 12 Jul: 355,56813 Jul – 19 Jul: 374,19720 Jul – 26 Jul: 372,67927 Jul – 2 Aug: 358,8263 Aug – 9 Aug: 357,80810 Aug – 16 Aug: 280,99717 Aug – 23 Aug: 328,33424 Aug – 30 Aug: 327,60731 Aug – 6 Sept: 249,2087 Sept – 13 Sept: 182,24114 Sept – 20 Sept: 214,27621 Sept – 27 Sept: 274,77528 Sept – 4 Oct: 281,2745 Oct – 11 Oct: 245,42112 Oct – 18 Oct: 135,659

Others providing138

Authorization
  1. SAP Authorization and Trust Management serviceOAuth server issuing JWTs and holding scopes for BTP apps
  2. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  3. cap-toolkitUtility bundle for CAP handlers: builder, roles, validation, queries
  4. @sap/ams-devCompiler from AMS DCL policies to DCN for local runs and tests
  5. @sap/amsAuthorization from DCL policies for Node.js apps on SAP Cloud Identity
  6. cds-entra-idMaps Microsoft Entra ID groups and app roles onto cds.User roles
Authentication
  1. SAP Authorization and Trust Management serviceOAuth server issuing JWTs and holding scopes for BTP apps
  2. Cloud Identity ServicesIdentity Authentication and Identity Provisioning as one tenant
  3. com.sap.cds:cds-feature-identityOAuth2 token validation from XSUAA and SAP Cloud Identity Services
  4. com.sap.cds:cds-feature-xsuaaFormer XSUAA JWT validation for CAP Java, removed in CAP Java 3.0
  5. @sap/xssecToken validation and security context for XSUAA and IAS
  6. cds-azure-adAzure AD and Azure AD B2C authentication strategy for CAP
  7. cds-common-jwt-supportJWT authentication for CAP without xsuaa or xssec
Input validation
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  2. cap-toolkitUtility bundle for CAP handlers: builder, roles, validation, queries
  3. sap-cap-validator-pluginCAP plugin validating input against @Validator JSON Schema rules
  4. capvalCustom messages and handler classes for CAP input validation
  5. cds-validateZod schemas as CAP validation middleware
Error handling
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  2. cds-error-outboxCaptures CAP service errors, deduplicates them and mails alerts
Localization
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  2. @sap-ux/i18nReader and writer for i18n bundles of UI5 or CAP projects
Draft handling
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  2. cap-handler-frameworkConvention-based handler layer for CAP with draft lifecycle hooks
  3. @rizing/cds-extensionCAP plugin putting a draft-capable facade in front of imported OData
  4. @sap/cds-fioriFiori draft handling and UI-facing behaviour for CAP services
  5. cap-collaborative-draftCollaborative draft support for CAP Node.js services
Search
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  2. @kamlendra/search-vocabCDS annotation vocabulary for entity search with schema discovery
Pagination and streaming
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
Configuration
  1. com.sap.cds:cds-feature-cloudfoundryReads bound service credentials on SAP BTP, Cloud Foundry for CAP Java
  2. com.sap.cds:cds-feature-k8sReads SAP BTP Operator service bindings on Kyma for CAP Java
  3. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
Schema evolution
  1. @cap-js-community/commonSix CAP features in one package, from replication cache to rate limits
  2. cds-dbmDelta deployment and migrations for CAP database adapters
  3. @quadrio/cds-dbmFork of cds-dbm with deploy, load, diff and drop tasks
  4. @sap/cds-mtxsMultitenancy, tenant provisioning and extensibility for CAP
  5. @sap/hdi-deployNode.js deployer for SAP HANA Deployment Infrastructure containers
Seed data
  1. @animb1996/cds-data-driftCompares a CAP project's CSV data with its database rows
  2. cap-js-mockdataCSV seed data generated from @Mockdata annotations with Faker
  3. @sap/cds-common-contentISO content for CAP's countries, languages, currencies and timezones
  4. cap-mock-generatorFills db/data with relationally consistent CSV from a .cds schema
Metadata publishing
  1. com.sap.cds:cds-feature-ordGenerates Open Resource Discovery documents from a CAP Java model
  2. @cap-js/asyncapiExports AsyncAPI documents for a CAP service's events
  3. @cap-js-community/commonSix CAP features in one package, from replication cache to rate limits
  4. @cap-js/ordGenerates Open Resource Discovery documents from a CAP model
Fiori annotations
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  2. urp-vocabCDS vocabulary for User-Rendered Patterns display annotations
  3. @mpah/enum-value-helpCAP plugin generating value help for enum fields from an annotation
  4. @sap/cds-fioriFiori draft handling and UI-facing behaviour for CAP services
  5. @sap/generator-fioriEntry point for generating a Fiori application from a template
  6. @sap-ux/cds-annotation-parserParser for annotations in CDS source
  7. @sap/ux-cds-compiler-facadeWrapper around the CDS compiler for annotation handling
  8. @sap-ux/cds-odata-annotation-converterConverter from CDS annotations to their OData form
  9. @sap/ux-cds-odata-language-server-extensionOData annotation features for the @sap/vscode-cds extension
  10. @sap-ux/fiori-annotation-apiProgrammatic API for reading and writing project annotations
  11. @sap-ux/odata-vocabulariesOASIS and SAP OData vocabularies with a VocabularyService
  12. cap-js-geoloc-pluginAnnotation-driven geocoding, address correction and routing for CAP
  13. cap-user-infoUser details and quickview links for createdBy and modifiedBy
Frontend boundary
  1. @sap/appfront-cliCLI for the SAP BTP Application Frontend service
Job scheduling
  1. SAP Job Scheduling serviceCalls an application endpoint on a schedule and logs each run
  2. @cap-js-community/event-queueTransactional processing of asynchronous and periodic CAP events
Caching
  1. Redis on SAP BTP, hyperscaler optionManaged Redis from the hyperscaler via a BTP service binding
  2. @cap-js-community/commonSix CAP features in one package, from replication cache to rate limits
  3. cds-cachingCAP caching plugin for query results and remote service responses
  4. cds-data-federationData federation for CAP via delegation, caching and replication
Destinations
  1. SAP Destination serviceNamed, credentialed addresses of other systems resolved at runtime
  2. com.sap.cds:cds-feature-remote-odataRemote Services for consuming OData V2 and V4 APIs in CAP Java
  3. com.sap.cds:cds-integration-cloud-sdkSAP Cloud SDK integration for remote REST services in CAP Java
  4. capire/s4Prebuilt SAP S/4HANA integration package for CAP projects
  5. cdseDestination resolution and axios calls from CAP configuration
  6. @sap-cloud-sdk/connectivityDestination lookup and connectivity proxy for the Cloud SDK
  7. @sap-cloud-sdk/http-clientHTTP client carrying a destination's credentials
  8. @sap-cloud-sdk/odata-commonShared machinery under the Cloud SDK's OData and OpenAPI clients
  9. @sap-cloud-sdk/openapiGenerated OpenAPI clients for the Cloud SDK
  10. @sap-cloud-sdk/resilienceTimeouts, retries and circuit breaking around remote calls
  11. @sap-cloud-sdk/utilGeneral utilities shared across the Cloud SDK packages
  12. @sapmentors/cds-scp-apiNode module for CAP calling external APIs through a destination
RAG on CDS
  1. SAP AI CoreAI runtime on BTP with the Generative AI Hub
  2. SAP HANA CloudManaged SAP HANA database service on BTP
  3. @cap-js/aiValue-help recommendations and SAP AI Core as a CAP service
  4. cap-llm-pluginGenerative AI in CAP with fields anonymised through SAP HANA
  5. @mi8y/cap-agents-aicore-vectorstoreLangChain vector store on SAP AI Core Document Grounding
  6. @mi8y/cap-agents-cds-vectorstoreLangChain vector store with CDS entities for embeddings
  7. @saptarishi/cds-plugin-llmCAP service kind putting eleven model providers behind one API
  8. @saptarishi/cds-plugin-vector-hanaVector storage and similarity search on SAP HANA from CAP
Attachments
  1. SAP Document Management service, integration optionAPIs and a UI5 component for document management in apps
  2. cap-attachments-plusCAP Node.js attachments plugin with database or cloud storage
  3. com.sap.cds:cds-feature-attachmentsCAP Java attachments with database storage and an Object Store module
  4. com.sap.cds:sdmCAP Java plugin for attachments in SAP Document Management
  5. @cap-js/attachmentsCAP Node.js attachments with database, S3, Azure or GCP storage
  6. @cap-js/sdmCAP attachments stored in an SAP Document Management repository
  7. @tklein1801/cap-js-attachmentsCAP Node.js attachments plugin with Object Store and malware scanning
  8. sap-cap-sdm-pluginCAP Node.js plugin mapping CDS entities to SAP Document Management
Async processing
  1. Event MeshManaged queues and topics over AMQP, MQTT and REST
  2. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  3. @cap-js-community/event-queueTransactional processing of asynchronous and periodic CAP events
  4. @cap-js-community/sap-afc-sdkSDK for SAP Advanced Financial Closing scheduling providers on CDS
  5. cds-event-monitoringStores, browses and resends messages a CAP service receives
  6. @odatano/watchCAP plugin watching Cardano addresses and emitting events
  7. cds-natsNATS messaging service for the CAP Node.js runtime
Service integration
  1. com.sap.cds:cds-feature-remote-odataRemote Services for consuming OData V2 and V4 APIs in CAP Java
  2. capire/s4Prebuilt SAP S/4HANA integration package for CAP projects
  3. cds-data-federationData federation for CAP via delegation, caching and replication
  4. @sap/cds-dkCommand line client and development toolkit for CAP
Service composition
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  2. @sap/cds-common-contentISO content for CAP's countries, languages, currencies and timezones
Native SAP HANA artifacts
  1. cds-federation-synonymsCAP-to-CAP data federation over SAP HANA synonyms
  2. @sap/cds-dkCommand line client and development toolkit for CAP
  3. @sap/hdi-deployNode.js deployer for SAP HANA Deployment Infrastructure containers
  4. SAP-samples/hana-developer-cli-tool-exampleDeveloper-centric command line for SAP HANA
Transaction management
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
Event Mesh
  1. SAP Integration Suite, advanced event meshEvent streaming and management platform in Integration Suite
  2. Event MeshManaged queues and topics over AMQP, MQTT and REST
  3. com.sap.cds:cds-feature-advanced-event-meshCAP Java plugin for SAP Integration Suite, advanced event mesh
  4. com.sap.cds:cds-feature-enterprise-messagingConnects CAP Java messaging to SAP Event Mesh
  5. com.sap.cds:cds-feature-event-hubConnects CAP Java messaging to SAP Cloud Application Event Hub
  6. com.sap.cds:cds-feature-kafkaConnects CAP Java messaging to Apache Kafka
  7. com.sap.cds:cds-feature-redisBeta connector from CAP Java messaging to Redis Pub/Sub
  8. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  9. @cap-js/advanced-event-meshCAP integration with SAP Integration Suite advanced event mesh
  10. @cap-js/asyncapiExports AsyncAPI documents for a CAP service's events
  11. @cap-js/event-brokerConsumes events from SAP Cloud Application Event Hub in CAP
  12. cds-kafkaKafka adapter exposing topics as a CDS messaging service
  13. cds-event-monitoringStores, browses and resends messages a CAP service receives
Data federation
  1. cds-federation-synonymsCAP-to-CAP data federation over SAP HANA synonyms
  2. @cap-js-community/commonSix CAP features in one package, from replication cache to rate limits
  3. cds-data-federationData federation for CAP via delegation, caching and replication
  4. cds-data-pipelineScheduled READ, MAP, WRITE pipelines between CAP services
Data privacy
  1. @cap-js/data-privacyCAP integration with SAP Data Privacy Integration
Data modelling
  1. cds-numberrange-pluginFills a CDS element from a database-backed number range
  2. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  3. @sap/cds-common-contentISO content for CAP's countries, languages, currencies and timezones
  4. @sap/cds-compilerCompiler from CDS models to CSN, EDMX and database schemas
  5. cap-user-infoUser details and quickview links for createdBy and modifiedBy
Database connectors
  1. SAP HANA CloudManaged SAP HANA database service on BTP
  2. PostgreSQL on SAP BTP, hyperscaler optionManaged PostgreSQL from the hyperscaler via a BTP service binding
  3. com.sap.cds:cds-feature-hanaSAP HANA Cloud datasource for CAP Java applications
  4. com.sap.cds:cds-feature-jdbcJDBC runtime for H2 and SQLite in CAP Java
  5. com.sap.cds:cds-feature-postgresqlPostgreSQL datasource for CAP Java applications
  6. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  7. @cap-js/db-serviceBase service shared by CAP's SQLite, PostgreSQL and HANA services
  8. @cap-js/hanaSAP HANA database service for CAP
  9. @cap-js/postgresPostgreSQL database service for CAP
  10. @cap-js/sqliteSQLite database service for CAP, in memory during development
  11. cap-postgres-btp-connectivityTunnels CAP Node.js to a private PostgreSQL via Cloud Connector
  12. cds-mongodbMongoDB as a CAP database service through Mongoose
  13. @cds-pgroll/postgresCLI for DROP and RENAME schema changes beside @cap-js/postgres
  14. @neoimpulse/cap-js-restore-model-defined-typesCAP plugin casting read values back to CDS model types
  15. @quadrio/cds-db2DB2 adapter for CDS
  16. @sap/cds-hanaDatabase adapter for SAP HANA in CAP
  17. @sap/hana-clientSAP's Node.js driver for SAP HANA
  18. SAP HANASAP's relational database platform, on-premise and in HANA Cloud
  19. cds-pgPostgreSQL adapter for SAP CDS from the SAP Mentors community
  20. cap-snowflakeCAP database adapter for Snowflake with OData V4 support
  21. cds-mysqlMySQL and MariaDB database adapter for CAP
Local development
  1. vite-plugin-cdsServes a Vite app through cds watch and imports .cds files
  2. com.sap.cds:cds-feature-dev-dashboardBrowser dashboard for a running CAP Java service during development
  3. com.sap.cds:cds-maven-pluginMaven plugin running CDS build steps in a CAP Java project
  4. @cap-js-community/commonSix CAP features in one package, from replication cache to rate limits
  5. @neoimpulse/cap-js-bootstrapCLI starting several CAP services and an AppRouter locally together
  6. @sang2x/captoolsCLI of CAP development tools for Cloud Foundry workflows
  7. @sap/ams-devCompiler from AMS DCL policies to DCN for local runs and tests
  8. @sap/cds-dkCommand line client and development toolkit for CAP
  9. dev-approuterDev-time wrapper for the SAP Application Router
Multitenancy
  1. SAP Software-as-a-Service Provisioning serviceRegisters a multitenant application for subaccount subscriptions
  2. com.sap.cds:cds-feature-mtMultitenancy for CAP Java: tenant lifecycle and per-tenant containers
  3. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  4. @cap-js-community/mtx-toolCLI for operating tenants of multitenant CAP applications
  5. @sap/cds-mtxsMultitenancy, tenant provisioning and extensibility for CAP
  6. @sap/cds-oysterWebAssembly sandbox for tenant-specific extension code in CAP
OData
  1. com.sap.cds:cds-adapter-odata-v2OData V2 protocol adapter built into the CAP Java runtime
  2. com.sap.cds:cds-adapter-odata-v4OData V4 protocol adapter for CAP Java Application Services
  3. @cap-js-community/odata-v2-adapterExposes a CAP service as OData V2
  4. @odatano/coreCAP plugin serving the Cardano blockchain as OData V4
  5. @odatano/nightgateCAP plugin indexing the Midnight blockchain, exposed as OData V4
  6. @root3287/cap-segwCompiler from a CDS service to SEGW model and data provider classes
Status flows
  1. com.sap.cds:cds-feature-flowDeclarative status-transition flows on bound actions in CAP Java
Concurrency control
  1. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  2. cap-collaborative-draftCollaborative draft support for CAP Node.js services

Details

Connected knowledge — wider context3

Source connections explain where this sits. Implementation claims remain in their exact task assessment.

Attach a document to a business record and retrieve it later · CAP Node.js

Prototype assessment awaiting review · assessed . No Atlas runtime testing.

Related knowledge

Serving Media Data

Official reference for the streaming foundation.

Why included: Reading explains the documented implementation contribution. · SAP CAP documentation

Attachments plugin guide

Setup and storage requirements for the official plugin.

Why included: Reading explains the documented implementation contribution. · cap-js

cap-attachments-plus guide

Maintainer documentation for attachment handling and own-account storage.

Why included: Reading explains the documented implementation contribution. · npm

CAP Framework (Cloud Application Programming Model)

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: The CAP framework subject is broader than the Node.js runtime. This is a route to context, not package identity or compatibility. · SAP Developers

Why this assessment is relevant
  1. Attach a document to a business record and retrieve it later → CAP Node.js
Relationships and evidence (15)
  • cap-attachments-plus → provides → Attachments

    Adds an Attachments aspect and Fiori elements upload facet. Cloud attachment content is stored in the application owner’s AWS, Azure or GCP account using credentials from a BTP destination; local development can store content in the database.

    Basis: atlas-record

    plus — README · checked 2026-09-17Credentials come from a **BTP destination** you create yourself

    plus — README · checked 2026-09-17For 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.

    plus — README · checked 2026-09-17The plugin's own `[development]` profile default already wires up a **mocked** scanner (`kind: "malwareScanner-mocked"`) that always reports `Clean` without calling any real service.

    plus — README · checked 2026-09-17Each cloud provider reads its configuration directly from a BTP destination, pointing at your own AWS, Azure or GCP account rather than an SAP Object Store service instance.

  • @cap-js/attachments → provides → Attachments

    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.

    Basis: atlas-record

    cap-js/attachments — README · checked 2026-09-17- **AWS S3** (`kind: "s3"`) - **Azure Blob Storage** (`kind: "azure"`) - **GCP Cloud Storage** (`kind: "gcp"`)

    cap-js/attachments — README · checked 2026-09-17For 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.

    cap-js/attachments — README · checked 2026-09-17If there is no malware scanner available and the scanner is not disabled, then the upload will fail.

    cap-js/attachments — README · checked 2026-09-17For productive use, a valid object store binding is required, see [Object Stores](#object-stores) and [Storage Targets](#storage-targets).

    cap-js/attachments — README · checked 2026-09-17If you are not using SAP Fiori elements, draft enablement is not required.

  • @sap/cds → provides → Attachments

    Serves an element annotated @Core.MediaType as an OData media resource, stored in the database as a LargeBinary or redirected to an external URL, streamed to and from the client.

    Basis: atlas-record

    Serving Media Data — capire · checked 2026-09-27CAP provides out-of-the-box support for serving media and other binary data. Media data can be stored either directly in the database or in an external repository, and can be streamed to and from clients.

    Serving Media Data — capire · checked 2026-09-27The media data is streamed automatically.

  • Attach a document to a business record and retrieve it later → associatedWith → Attachments

    Discover the shared task through the Attachments concern.

    Basis: pilot-assessment

  • Serving Media Data → explains → @sap/cds

    Reading explains the documented implementation contribution.

    Basis: pilot-assessment

    CAP — Serving Media Data · checked 2026-10-06The media data is streamed automatically.

  • Attachments plugin guide → explains → @cap-js/attachments

    Reading explains the documented implementation contribution.

    Basis: pilot-assessment

    @cap-js/attachments README · checked 2026-10-06For productive use, a valid object store binding is required

  • cap-attachments-plus guide → explains → cap-attachments-plus

    Reading explains the documented implementation contribution.

    Basis: pilot-assessment

    cap-attachments-plus npm README, latest 1.0.29 at retrieval · checked 2026-10-06Credentials come from a **BTP destination** you create yourself

  • CAP Framework (Cloud Application Programming Model) → contextualizes → @sap/cds

    The CAP framework subject is broader than the Node.js runtime. This is a route to context, not package identity or compatibility.

    Basis: pilot-mapping

    Mapping: about · pending-human-review · authored from cited sources · checked 2026-10-06

    CAP — Serving Media Data · checked 2026-10-06The media data is streamed automatically.

  • CAP Node.js → assesses → Attach a document to a business record and retrieve it later

    One shared outcome, one scoped assessment.

    Basis: pilot-assessment

  • cap-attachments-plus → contributesTo → CAP Node.js

    Attachment aspect and upload/download UI; own-account AWS, Azure or GCP storage through a BTP destination.

    Basis: pilot-assessment

    cap-attachments-plus npm README, latest 1.0.29 at retrieval · checked 2026-10-06Credentials come from a **BTP destination** you create yourself

  • @cap-js/attachments → contributesTo → CAP Node.js

    Attachment handling through the official CAP Node.js plugin.

    Basis: pilot-assessment

    @cap-js/attachments README · checked 2026-10-06For productive use, a valid object store binding is required

  • @sap/cds → contributesTo → CAP Node.js

    Documented media streaming foundation rather than a complete attachment user flow.

    Basis: pilot-assessment

    CAP — Serving Media Data · checked 2026-10-06The media data is streamed automatically.

  • CAP Node.js → reading → Serving Media Data

    Curated supporting reading for this assessment.

    Basis: pilot-assessment

    CAP — Serving Media Data · checked 2026-10-06The media data is streamed automatically.

  • CAP Node.js → reading → Attachments plugin guide

    Curated supporting reading for this assessment.

    Basis: pilot-assessment

    @cap-js/attachments README · checked 2026-10-06For productive use, a valid object store binding is required

  • CAP Node.js → reading → cap-attachments-plus guide

    Curated supporting reading for this assessment.

    Basis: pilot-assessment

    cap-attachments-plus npm README, latest 1.0.29 at retrieval · checked 2026-10-06Credentials come from a **BTP destination** you create yourself

Gaps, source snapshot and retrieval limits
  • This assessment does not establish repository versioning, retention policy or tenant isolation for a chosen deployment.
  • Independent origin follows the existing atlas artifact classification; it is not a license or quality rating.
  • Retrieval uses at most four typed steps within a bounded source index. Source relationships do not establish compatibility.

Developers snapshot checked 2026-10-05 · 33 indexed records from a 9,023-node source snapshot. This is a bounded retrieval view; absence is not evidence that no solution exists. Source relationships and proximity do not establish runtime compatibility.

Mapping version: connected-tasks-2026-10-06-v4+mcp-records-b256b58cfb844590. Task and mapping evidence remain separate from implementation evidence.

Access an external system through an application MCP service · CAP Node.js application bridge for custom external APIs outside SAP Application APIs

Editorially accepted assessment · assessed . No Atlas runtime testing.

Evidence changed · needs review · evidence captured 2026-10-12, 2026-10-15, 2026-10-26

Supporting evidence changed; this accepted claim needs review.

Evidence status not tracked

Evidence observations do not cover this accepted claim; it is retained as dated history.

Related knowledge

CAP Framework (Cloud Application Programming Model)

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: The CAP framework subject is broader than the Node.js runtime. This is a route to context, not package identity or compatibility. · SAP Developers

Why this assessment is relevant
  1. Access an external system through an application MCP service → CAP Node.js application bridge for custom external APIs outside SAP Application APIs
Relationships and evidence (17)
Gaps, source snapshot and retrieval limits
  • The application integration and MCP contributions are assessed separately; no captured source shows these complete generic bridge paths working against a chosen external system.
  • The selected target API, client and backend permissions, tenant mapping and remote error behavior need a project-specific assessment.
  • A compatible component does not establish an endorsed architecture or permission to expose an SAP Application API.
  • Evidence observations do not cover this accepted claim; it is retained as dated history.
  • Supporting evidence changed; this accepted claim needs review.
  • Retrieval uses at most four typed steps within a bounded source index. Source relationships do not establish compatibility.

Developers snapshot checked 2026-10-05 · 33 indexed records from a 9,023-node source snapshot. This is a bounded retrieval view; absence is not evidence that no solution exists. Source relationships and proximity do not establish runtime compatibility.

Mapping version: connected-tasks-2026-10-06-v4+mcp-records-b256b58cfb844590. Task and mapping evidence remain separate from implementation evidence.

Access an external system through an application MCP service · CAP Node.js application bridge for SAP Application APIs

Editorially accepted assessment · assessed . No Atlas runtime testing.

Evidence changed · needs review · evidence captured 2026-10-12, 2026-10-15, 2026-10-26

Supporting evidence changed; this accepted claim needs review.

Evidence status not tracked

Evidence observations do not cover this accepted claim; it is retained as dated history.

Related knowledge

CAP Framework (Cloud Application Programming Model)

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: The CAP framework subject is broader than the Node.js runtime. This is a route to context, not package identity or compatibility. · SAP Developers

Why this assessment is relevant
  1. Access an external system through an application MCP service → CAP Node.js application bridge for SAP Application APIs
Relationships and evidence (17)
Gaps, source snapshot and retrieval limits
  • The application integration and MCP contributions are assessed separately; no captured source shows these complete generic bridge paths working against a chosen external system.
  • The selected target API, client and backend permissions, tenant mapping and remote error behavior need a project-specific assessment.
  • A compatible component does not establish an endorsed architecture or permission to expose an SAP Application API.
  • The official CAP MCP adapter is explicitly unsupported for this target scope. The community MCP implementations remain unknown for the complete SAP Application API bridge; their general service exposure does not establish that result.
  • Evidence observations do not cover this accepted claim; it is retained as dated history.
  • Supporting evidence changed; this accepted claim needs review.
  • Retrieval uses at most four typed steps within a bounded source index. Source relationships do not establish compatibility.

Developers snapshot checked 2026-10-05 · 33 indexed records from a 9,023-node source snapshot. This is a bounded retrieval view; absence is not evidence that no solution exists. Source relationships and proximity do not establish runtime compatibility.

Mapping version: connected-tasks-2026-10-06-v4+mcp-records-b256b58cfb844590. Task and mapping evidence remain separate from implementation evidence.

Sources4
npm registrydiscovered herechecked
GitHub APIdiscovered here, cap-jschecked
npm registry, @sap/cdsversion, releases, installschecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesnode
latestv10.2.1
first release
releases and cadence248, ~10d median
discovered vianpm registry, GitHub API · cap-js
first seen in the atlas
ecosystem and domaincap, operations-and-runtime
History in the atlas8
  1. HTTP, OData V4, OData V2 consumed; HTTP, OData V4 served
  2. The edge to SAP HANA Cloud, entered 2026-09-22, is removed: capire names SAP HANA as a CAP application's default database, not as a dependency of this package, whose own entry says databases arrive as plugins. The database service, @cap-js/hana, carries the edge since 2026-09-23, as cds-feature-hana does on the Java side.
  3. npm run check:usecases listed the path of answer-a-question-from-records-in-a-cap-service this entry is a part of with no edge between its parts. capire's databases overview names SAP HANA as the production default and the embeddings guide bases the vector functions on its implementations, quoted now; conditional because SQLite and PostgreSQL are named as the other databases.
  4. capire's CAP-native Embeddings guide documents the Vector type as built into CDS and vector_embedding, cosine_similarity and l2distance as functions of the query language, with a stored calculated element recomputing an embedding on write. The capability behind the CAP door carried no core edge and read community-only because of it. The edge is scoped to that modelled half in what_it_does: chunking and prompt assembly stay with the plugins and the application.
  5. The CAP Node.js runtime: it compiles the CDS model, serves the services declared in it, and answers the generic requests — read, write, draft, search, paging — before any handler of yours runs. cds.env resolves the configuration those services read, and every cds-plugin is loaded by this package. It stops at the Node.js stack and at the project's edges: the CLI that scaffolds, builds and deploys is [@sap/cds-dk](artifact:sap-cds-dk), CAP Java is a second runtime for the same model, and databases, messaging and AI arrive as plugins. In a project it is one dependency in package.json and the module every server file loads.
  6. CAP Node.js 10.1 resolves SAP BTP destinations in the runtime's own fetch client, in beta and within the limits the release note states. Until then the edge belonged to the SAP Cloud SDK packages alone, which is also why the conditional requires on @sap-cloud-sdk/http-client is recorded beside it.
  7. @sap/cds 10.0 (write result shape, drafts bypassed by default), @sap/cds 10.1 (destinations without the Cloud SDK)
  8. First seen.
For your agent