{"ref":"capability:odata","page":"/capabilities/odata","json":"/capabilities/odata.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"odata","name":"OData","domain":"protocols-and-apis","ecosystems":["cap","abap"],"universal":true,"description":"Exposing 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.","short":"Exposing data and operations through OData","core_coverage":{"state":"core-and-community","assessed_at":"2026-09-27","what_core_does":"V4 is what the core serves: capire states CAP defaults to it, and the runtime generates the service from the model with no adapter in between. For V2 the core documents the fallback and names the route — capire tells Node.js projects to npm add @cap-js-community/odata-v2-adapter. It takes a position on V2; it does not ship the runtime. Bound and unbound actions and functions declared in the service definition are served as OData operations, and their implementation is always a custom handler. cds.serve exposes a service at a protocol of its own: plain rest, odata without the Fiori extensions, or fiori, which is OData with drafts and the other Fiori extensions enabled.","where_it_stops":"It stops at the V2 runtime. capire marks OData V2 deprecated and recommends it only for existing UIs or for controls that V4 does not support yet. The translation between the two protocols is community code.","sources":[{"url":"https://cap.cloud.sap/docs/guides/protocols/odata","title":"Serving OData APIs — default version","checked":"2026-09-07","quote":"While CAP defaults to OData V4, the latest protocol version, older projects may need to fall back to OData V2"},{"url":"https://cap.cloud.sap/docs/guides/protocols/odata#odata-v2-adapter-node","title":"Serving OData APIs — Enabling OData V2 via CDS OData V2 Adapter in Node.js Apps","checked":"2026-09-26","quote":"CAP Node.js supports serving the OData V2 protocol through the OData V2 adapter for CDS, which translates between the OData V2 and V4 protocols."},{"url":"https://cap.cloud.sap/docs/guides/protocols/odata#v2-support","title":"Serving OData APIs — V2 deprecated","checked":"2026-09-07","quote":"OData V2 is deprecated. Use OData V2 only if you need to support existing UIs or if you need to use specific controls that don't work with V4 yet"},{"url":"https://cap.cloud.sap/docs/guides/protocols/","title":"Service Protocols in CAP — capire","checked":"2026-09-27","quote":"OData: A widely used protocol for building and consuming RESTful APIs. CAP provides built-in support for OData v2 and v4, allowing you to easily expose your data models as OData services."},{"url":"https://cap.cloud.sap/docs/guides/services/custom-actions","title":"Custom Actions and Functions — capire","checked":"2026-09-27","quote":"In addition to common CRUD operations, you can declare domain-specific custom operations as shown below. These custom operations always need custom implementations in corresponding events handlers."},{"url":"https://cap.cloud.sap/docs/node.js/cds-serve","title":"Serving Provided Services — capire","checked":"2026-09-27","quote":"Allows to specify the protocol through which to expose the service."},{"url":"https://cap.cloud.sap/docs/node.js/cds-serve","title":"Serving Provided Services — capire","checked":"2026-09-27","quote":"fiori OData protocol with all Fiori-specific extensions like Draft enabled"},{"url":"https://cap.cloud.sap/docs/node.js/core-services#serving-provided-services-cds-serve","title":"Core Services (Node.js) — capire","checked":"2026-09-27","quote":"When starting a server with cds watch or cds run this uses cds.serve to automatically create instances of cds.Service for all such service definitions found in our models, and serve them to respective endpoints via corresponding protocols."}],"relationship":"narrow-by-design"},"changed_in":[{"version":"@cap-js-community/odata-v2-adapter 1.10.0","date":"2023-04-05","what_changed":"The OData V2 adapter left SAP and became a community package. SAP's `@sap/cds-odata-v2-adapter-proxy` stopped at 1.9.21 on 2023-03-24 and now carries a deprecation notice naming its replacement; `@cap-js-community/odata-v2-adapter` picked the version series up at 1.10.0 twelve days later, which is what makes this a handover rather than a fork. What the adapter does did not change. Who publishes it did.","invalidates":"Any instruction to install `@sap/cds-odata-v2-adapter-proxy`. That package has not been published since March 2023 and is deprecated, so guidance written before then names a dependency you should no longer add — including a good deal of the V2 writing from 2019 to 2022.","source":{"url":"https://registry.npmjs.org/@sap%2Fcds-odata-v2-adapter-proxy/1.9.21","title":"npm registry — @sap/cds-odata-v2-adapter-proxy 1.9.21, its last release","checked":"2026-09-08","quote":"Package no longer supported. Use package @cap-js-community/odata-v2-adapter instead."},"applies_to":{"ecosystems":["cap"]}}],"history":[{"date":"2026-08-31","field":"core_coverage.state","from":"left-open-on-purpose","to":"core-and-community","reason":"States renamed to describe who is present rather than to interpret intent. left-open-on-purpose asserted a motive; core-and-community states a fact, with relationship carrying the intent separately."},{"date":"2026-08-31","field":"core_coverage.what_core_does","from":"Enabling OData V2 via CDS, plus a V2 adapter for Node.js and V2 support in Java. The core is V4-first, but not V4-only.","to":"Documents V2 as a supported fallback and names the route: for Node.js capire tells you to npm add @cap-js-community/odata-v2-adapter. The core takes a position; it does not ship the adapter.","reason":"Two errors, found by sourcing. 'Nothing' was wrong — capire has a V2 Support section. But reading it also showed the section points at @cap-js-community/odata-v2-adapter, so a first correction claiming the core ships an adapter was wrong in the other direction. What the core actually does is document the fallback, deprecate it, and delegate the runtime. That is what community-owns-it means, now evidenced rather than assumed."},{"date":"2026-08-31","field":"core_coverage.where_it_stops","from":"It stops at the decision itself: V2 is explicitly out of scope for the core, and the adapter is community-maintained on purpose rather than by omission.","to":"It stops at the runtime. capire marks OData V2 deprecated and recommends it only for existing UIs or controls that V4 does not support yet, such as tree tables. The translation itself is community code.","reason":"The old sentence said V2 is 'explicitly out of scope for the core', which the V2 Support section disproves. It is in scope as documentation and out of scope as runtime — a narrower and more useful distinction."},{"date":"2026-09-07","field":"id","from":"odata-v2-bridge","to":"odata","reason":"Merged with odata-v4 into one capability. Two tiles for one protocol split the artifacts that answer it — the V2 adapter sat alone on one and everything else on the other — while the question a reader arrives with is 'how does my CDS model become an OData service', not 'which version'. Version is what the coverage assessment and each artifact's edge say, not a capability boundary."},{"date":"2026-09-07","field":"core_coverage","from":"community-only (odata-v4) and core-and-community (odata-v2-bridge)","to":"core-and-community","reason":"odata-v4 was an unassessed stub marked community-only, which was wrong on its face — V4 is what the core serves by default. Reassessed against capire for the merged capability: core-and-community, with the V4 default and the delegated V2 runtime both sourced."},{"date":"2026-09-07","field":"core_coverage.relationship","from":"community-owns-it","to":"narrow-by-design","reason":"community-owns-it described V2 alone. Across the whole capability the core owns V4 and stops at the V2 runtime on purpose, having deprecated it — the core is narrow here by decision, not by absence."},{"date":"2026-09-14","field":"ecosystems","from":"cap","to":"cap, abap","reason":"building_gateway_services and odata-fw build OData services inside an ABAP system, through SEGW and through a framework that replaces its generated classes, so the concern has answers behind the ABAP door."},{"date":"2026-09-14","field":"description","from":"Serving a CDS model as OData — V4, which CAP generates by default, and V2 for the clients that cannot move: older Fiori applications, SAPUI5 smart controls and integrations built against V2.","to":"Serving a model as OData — V4, which CAP generates by default from CDS, and V2 for the clients that cannot move: older Fiori applications, SAPUI5 smart controls and integrations built against V2.","reason":"The old wording made the model a CDS model, which is false for a Gateway service modelled in SEGW. CDS now qualifies what CAP generates from rather than the concern."},{"date":"2026-09-27","field":"core_coverage","from":"without the runtime's page","to":"cites the runtime's page","reason":"P1 backfill 2026-09-27: the paragraph and the runtime edge now rest on a page in common."},{"date":"2026-09-27","field":"core_coverage","from":"without the page","to":"cites the page","reason":"capire audit 2026-09-27, proposed pages read once more: a page this capability owns was cited nowhere."},{"date":"2026-09-27","field":"core_coverage.sources","from":"cds.serve named from its API page","to":"and from the core services page that says bootstrapping serves every service definition","reason":"capire audit 2026-09-27, judgement pages read a fourth time: the paragraph says the runtime generates the service from the model with no adapter in between, and the core services page states that bootstrapping does so for every service definition automatically."},{"date":"2026-09-27","field":"facets","from":"no protocols facet","to":"a protocols facet, many, from the shared protocol vocabulary","reason":"A role in a design is filled from evidence that an option speaks what the fixed part exposes, and that join runs over one protocol vocabulary (docs/concepts/design-roles-and-interfaces.md, P2). Declared here so options can state it; absent stays \"does not say\"."},{"date":"2026-10-17","field":"description","from":"Serving a model as OData — V4, which CAP generates by default from CDS, and V2 for the clients that cannot move: older Fiori applications, SAPUI5 smart controls and integrations built against V2.","to":"Exposing 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.","reason":"Keep the default capability wording neutral; preserve the previous wording in framing_by_ecosystem.cap. Maintainer-requested scope audit."},{"date":"2026-10-26","field":"coverage_by_ecosystem.abap.note","from":"The repositories here are independent: one builds services on its own framework and one is the code from a talk on building Gateway services. How they relate to the Service Builder has not been assessed.","to":"The community answers beside the Service Builder in several ways: odata-fw replaces its generated classes, cap-segw generates the Gateway classes from a CDS service, and Open Steamgate and open-abap-odata run SEGW services outside an SAP system. Smaller pieces ship a single service. How these relate to the Service Builder has not been assessed.","reason":"Reassessed against the graph (check:capabilities): the note counted the repositories and named none of the kinds that arrived since the block was assessed; it now names the kinds and links the ones that define them. State unchanged."}],"coverage_by_ecosystem":{"abap":{"state":"core-and-community","assessed_at":"2026-09-14","what_core_does":"SAP Gateway Service Builder (transaction SEGW) is the design-time transaction for OData services, from modelling through the service development life cycle; a generated service is then registered and activated before a client can reach it.","where_it_stops":"At the generated project. A model change goes back through the Service Builder, and each entity carries the generated CRUD methods whether it uses them or not, which is the ground a lighter framework takes.","sources":[{"url":"https://help.sap.com/doc/saphelp_nw74/7.4.16/en-us/9d/b1ea508f88bb7ee10000000a445394/content.htm?no_cache=true","title":"SAP Gateway Service Builder — SAP NetWeaver 7.4, SAP Help Portal","checked":"2026-09-14","quote":"SAP Gateway Service Builder (transaction SEGW) provides an easy-to-use set of tools for creating OData services."},{"url":"https://help.sap.com/doc/saphelp_nw75/7.5.5/en-US/3c/7822518bc72214e10000000a44176d/content.htm?no_cache=true","title":"Generating an SAP Gateway Service for OData — SAP NetWeaver 7.5, SAP Help Portal","checked":"2026-09-14","quote":"you need to register and activate the service"}],"relationship":"unassessed","note":"The community answers beside the Service Builder in several ways: [odata-fw](artifact:miggi92-odata-fw) replaces its generated classes, [cap-segw](artifact:root3287-cap-segw) generates the Gateway classes from a CDS service, and [Open Steamgate](artifact:oisee-open-steamgate) and [open-abap-odata](artifact:open-abap-open-abap-odata) run SEGW services outside an SAP system. Smaller pieces ship a single service. How these relate to the Service Builder has not been assessed."}},"framing_by_ecosystem":{"abap":{"description":"In ABAP the OData service is built inside the system that holds the data: modelled in the SAP Gateway Service Builder, implemented as ABAP classes, and registered on the Gateway before a client can call it."},"cap":{"description":"Serving a model as OData — V4, which CAP generates by default from CDS, and V2 for the clients that cannot move: older Fiori applications, SAPUI5 smart controls and integrations built against V2."}},"drafted_with_ai":true,"facets":[{"key":"protocols","label":"Protocols","kind":"many","vocabulary":"protocol","group":"Reach"}]},"sap_delivery":{"door":"cap","all":{"built_in":[{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json"}],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:cap-java-cds-adapter-odata-v2","name":"com.sap.cds:cds-adapter-odata-v2","json":"/artifacts/cap-java-cds-adapter-odata-v2.json"},{"ref":"artifact:cap-java-cds-adapter-odata-v4","name":"com.sap.cds:cds-adapter-odata-v4","json":"/artifacts/cap-java-cds-adapter-odata-v4.json"}]},"by_flavor":{"node":{"built_in":[{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json"}],"documented_pattern":[],"announced":[],"packages":[]},"java":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:cap-java-cds-adapter-odata-v2","name":"com.sap.cds:cds-adapter-odata-v2","json":"/artifacts/cap-java-cds-adapter-odata-v2.json"},{"ref":"artifact:cap-java-cds-adapter-odata-v4","name":"com.sap.cds:cds-adapter-odata-v4","json":"/artifacts/cap-java-cds-adapter-odata-v4.json"}]}}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:cap-js-community-odata-v2-adapter","name":"@cap-js-community/odata-v2-adapter","json":"/artifacts/cap-js-community-odata-v2-adapter.json","ecosystem":"cap","origin_ring":"community-org"},{"ref":"artifact:odatano-core","name":"@odatano/core","json":"/artifacts/odatano-core.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:odatano-nightgate","name":"@odatano/nightgate","json":"/artifacts/odatano-nightgate.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:root3287-cap-segw","name":"@root3287/cap-segw","json":"/artifacts/root3287-cap-segw.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:cap-java-cds-adapter-odata-v2","name":"com.sap.cds:cds-adapter-odata-v2","json":"/artifacts/cap-java-cds-adapter-odata-v2.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:cap-java-cds-adapter-odata-v4","name":"com.sap.cds:cds-adapter-odata-v4","json":"/artifacts/cap-java-cds-adapter-odata-v4.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:abap2ui5-addons-launchpad-kpi","name":"launchpad-kpi","json":"/artifacts/abap2ui5-addons-launchpad-kpi.json","ecosystem":"abap","origin_ring":"community-org"},{"ref":"artifact:xexer-odata-batch-creator","name":"OData Batch Creator","json":"/artifacts/xexer-odata-batch-creator.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:miggi92-odata-fw","name":"odata-fw","json":"/artifacts/miggi92-odata-fw.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:open-abap-open-abap-odata","name":"open-abap-odata","json":"/artifacts/open-abap-open-abap-odata.json","ecosystem":"abap","origin_ring":"community-org"},{"ref":"artifact:oisee-open-steamgate","name":"open-steamgate","json":"/artifacts/oisee-open-steamgate.json","ecosystem":"abap","origin_ring":"independent"}],"samples":[{"ref":"artifact:gregorwolf-bookshop-demo","name":"bookshop-demo","json":"/artifacts/gregorwolf-bookshop-demo.json"},{"ref":"artifact:grahamrobbo-building-gateway-services","name":"building_gateway_services","json":"/artifacts/grahamrobbo-building-gateway-services.json"},{"ref":"artifact:miyasuta-fiori-invoke-function","name":"fiori-invoke-function","json":"/artifacts/miyasuta-fiori-invoke-function.json"},{"ref":"artifact:marianfoo-fiori-table-maintenance","name":"fiori-table-maintenance","json":"/artifacts/marianfoo-fiori-table-maintenance.json"},{"ref":"artifact:sap-samples-odata-dd-server","name":"SAP-samples/odata-dd-server","json":"/artifacts/sap-samples-odata-dd-server.json"},{"ref":"artifact:marianfoo-ui5-call-action","name":"ui5-call-action","json":"/artifacts/marianfoo-ui5-call-action.json"}],"explained_by":[{"ref":"content:devtoberfest-2026-rap-draft-handling","name":"What's new with draft handling in RAP?","json":"/content/devtoberfest-2026-rap-draft-handling.json"},{"ref":"content:a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e","name":"A Guide to CDS Metadata Extensions, Fiori App Generation and SAP UI5 Controller Extensions","json":"/content/a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e.json"},{"ref":"content:the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb","name":"The Fourth Way to Go Offline in UI5 (And Why the Service Worker Stays Dumb)","json":"/content/the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb.json"},{"ref":"content:from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana","name":"From SEGW to @OData.publish: Expose Your CDS View as OData in S/4HANA","json":"/content/from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana.json"},{"ref":"content:how-to-rename-an-odata-v4-service","name":"How to rename an OData V4 service?","json":"/content/how-to-rename-an-odata-v4-service.json"},{"ref":"content:adding-immutable-blockchain-proofs-to-sap-with-cap","name":"Adding Immutable Blockchain Proofs to SAP With CAP - Cardano and OData V4","json":"/content/adding-immutable-blockchain-proofs-to-sap-with-cap.json"},{"ref":"content:odata-batch-deleting-records-across-multiple-tables-in-single-transaction","name":"OData $batch Deleting Records Across Multiple Tables in Single Transaction","json":"/content/odata-batch-deleting-records-across-multiple-tables-in-single-transaction.json"},{"ref":"content:extending-standard-s-4-hana-odata-api-s","name":"Extending Standard S/4 HANA OData API's","json":"/content/extending-standard-s-4-hana-odata-api-s.json"},{"ref":"content:moving-from-hub-gateway-to-direct-s-4hana-odata-v4-a-customized-reusable-rap-pro","name":"Moving from Hub Gateway to Direct S/4HANA OData V4: A Customized Reusable RAP Processing Framework","json":"/content/moving-from-hub-gateway-to-direct-s-4hana-odata-v4-a-customized-reusable-rap-pro.json"},{"ref":"content:ui-for-the-btp-application-vulnerability-report","name":"UI for the BTP Application Vulnerability Report","json":"/content/ui-for-the-btp-application-vulnerability-report.json"},{"ref":"content:s-4hana-abap","name":"S/4HANA公有云版的内部ABAP拓展","json":"/content/s-4hana-abap.json"},{"ref":"content:odata-deep-insert-implementation-and-real-life-examples","name":"OData Deep Insert: Implementation and Real-Life Examples","json":"/content/odata-deep-insert-implementation-and-real-life-examples.json"},{"ref":"content:create-cds-views-and-expose-them-through-odata-in-capm","name":"Create CDS Views and expose through OData service in CAPM","json":"/content/create-cds-views-and-expose-them-through-odata-in-capm.json"},{"ref":"content:step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell","name":"Step-by-Step Guide to Display System Details on SAP Fiori Launchpad Shell","json":"/content/step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell.json"},{"ref":"content:the-complete-guide-to-calling-actions-in-ui5-with-custom-code","name":"The Complete Guide to Calling Actions in UI5 with Custom Code","json":"/content/the-complete-guide-to-calling-actions-in-ui5-with-custom-code.json"},{"ref":"content:how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","name":"How to Perform Initial Loads from S/4HANA to Advanced Event Mesh with Odata Poll","json":"/content/how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll.json"},{"ref":"content:generating-adobe-form-using-rap-framework-odata-services","name":"Generating Adobe Form Using RAP framework OData Services","json":"/content/generating-adobe-form-using-rap-framework-odata-services.json"},{"ref":"content:calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app","name":"Calling bound / unbound CAP actions from Fiori elements application.","json":"/content/calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app.json"},{"ref":"content:graph-intro-series-part-8-use-graph-with-odata-v4","name":"Graph intro series, part 8: Use Graph With OData v4","json":"/content/graph-intro-series-part-8-use-graph-with-odata-v4.json"},{"ref":"content:sap-cap-cloud-application-programming","name":"SAP CAP(Cloud Application Programming)开发框架概述","json":"/content/sap-cap-cloud-application-programming.json"},{"ref":"content:exposing-calculation-view-with-dynamic-client-via-odata-api","name":"Exposing Calculation View with Dynamic Client via OData API","json":"/content/exposing-calculation-view-with-dynamic-client-via-odata-api.json"},{"ref":"content:use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy","name":"Use Aspects, Association and Convert OData V4 to V2 using Proxy","json":"/content/use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy.json"},{"ref":"content:btp-sapcap-quirky-nuggets-n03-n04","name":"#BTP #SAPCAP: Quirky Nuggets (N03-N04)","json":"/content/btp-sapcap-quirky-nuggets-n03-n04.json"},{"ref":"content:sap-cap-function-and-action-with-unstructured-dynamic-type-input-output","name":"SAP CAP function and action with Unstructured/Dynamic Type Input/Output","json":"/content/sap-cap-function-and-action-with-unstructured-dynamic-type-input-output.json"},{"ref":"content:messaging-system-for-odata-error-warning-and-information-messages","name":"Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client Applications","json":"/content/messaging-system-for-odata-error-warning-and-information-messages.json"},{"ref":"content:extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","name":"Extend SAP SuccessFactors on SAP BTP with CAP - Create the CAP Service","json":"/content/extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service.json"},{"ref":"content:sap-cap-adapter-to-expose-odata-as-custom-rest-service","name":"SAP CAP Adapter to expose OData as custom REST Service","json":"/content/sap-cap-adapter-to-expose-odata-as-custom-rest-service.json"},{"ref":"content:dynamic-odata-from-any-api-through-sap-btp-kyma","name":"Dynamic OData from \"any\" API through SAP BTP Kyma","json":"/content/dynamic-odata-from-any-api-through-sap-btp-kyma.json"},{"ref":"content:create-a-business-service-using-cds-nodejs-sqlite-and-odata","name":"Create a Business Service using CDS, Node.js, SQLite and a OData service","json":"/content/create-a-business-service-using-cds-nodejs-sqlite-and-odata.json"},{"ref":"content:sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project","name":"SAP Tech Bytes: Adding Service Implementation to an SAP HANA Project","json":"/content/sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project.json"},{"ref":"content:the-end2end-journey-advocates-service-odata-v2-v4-and-rest","name":"The End2End Journey: Advocates Service – CAP Service, OData V2/4 & REST in One single Project","json":"/content/the-end2end-journey-advocates-service-odata-v2-v4-and-rest.json"},{"ref":"content:custom-functions-in-odata-v4-in-cap","name":"Custom Functions in OData V4 – SAP Cloud Application Programming Model","json":"/content/custom-functions-in-odata-v4-in-cap.json"},{"ref":"content:sap-btp-sdk-for-ios-and-cap-with-odata-v4-support","name":"SAP BTP SDK for iOS & CAP with OData V4 support","json":"/content/sap-btp-sdk-for-ios-and-cap-with-odata-v4-support.json"},{"ref":"content:is-it-time-to-switch-to-odata-v4","name":"Is it time to switch to OData v4?","json":"/content/is-it-time-to-switch-to-odata-v4.json"},{"ref":"content:sap-hana-xsa-part-2-smart-variants-and-odata-v4-to-v2","name":"SAP HANA XSA pt. 2 – Smart variants, OData v4 -> v2","json":"/content/sap-hana-xsa-part-2-smart-variants-and-odata-v4-to-v2.json"},{"ref":"content:resolving-date-serialization-issues-with-an-external-odata-v2-service","name":"Resolving date serialization issues when using an external OData v2 service with CAP","json":"/content/resolving-date-serialization-issues-with-an-external-odata-v2-service.json"},{"ref":"content:how-to-add-odata-v2-adapter-proxy-to-your-cap-project","name":"How to add OData v2 adapter proxy to your CAP project","json":"/content/how-to-add-odata-v2-adapter-proxy-to-your-cap-project.json"},{"ref":"content:cap-deep-insert-5-consume-remote-service-with-cloud-sdk","name":"SAP Cloud Application Programming Model: Deep Insert (5) Consume Remote Service with SAP Cloud SDK","json":"/content/cap-deep-insert-5-consume-remote-service-with-cloud-sdk.json"},{"ref":"content:cap-deep-insert-4-consume-remote-service","name":"SAP Cloud Application Programming Model: Deep Insert (4) Consume Remote Service","json":"/content/cap-deep-insert-4-consume-remote-service.json"},{"ref":"content:sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation","name":"SAP Cloud Platform Backend service: Tutorial [11]: CDS : magic: key: generation","json":"/content/sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation.json"},{"ref":"content:sap-group-consume-remote-services-in-a-full-stack-cap-application","name":"Consume Remote Services in a Full-Stack CAP Application","json":"/content/sap-group-consume-remote-services-in-a-full-stack-cap-application.json"},{"ref":"content:sap-mission-extend-successfactors-with-cap","name":"Extend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming Model","json":"/content/sap-mission-extend-successfactors-with-cap.json"},{"ref":"content:teched-2026-ct1207","name":"OData entity as a governed query surface for agents, not a tool","json":"/content/teched-2026-ct1207.json"},{"ref":"content:teched-2026-ct1239","name":"AI-assisted full stack development using model context protocol servers","json":"/content/teched-2026-ct1239.json"},{"ref":"content:teched-2026-jw213","name":"SAP Fiori elements and the age of AI: Build apps that are future ready","json":"/content/teched-2026-jw213.json"}],"normative_context":[]}}