From 796e09b5d0b30c50813ad126fb1ae355d6fd5e72 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Mon, 7 Sep 2026 17:41:38 +0200 Subject: [PATCH 01/25] docs: document native BTP Destination Service client for Node.js - Update guides/deploy/to-cf.md: fix outdated native fetch warning and selection rules to reflect BTP Destination Service support - Update guides/services/consuming-services.md: add native fetch destination support section, tip callout, and update OAuth2 ClientCredentials in auth types table --- guides/deploy/to-cf.md | 12 +++--- guides/services/consuming-services.md | 55 ++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 7 deletions(-) diff --git a/guides/deploy/to-cf.md b/guides/deploy/to-cf.md index b83cb60553..04bbf5334b 100644 --- a/guides/deploy/to-cf.md +++ b/guides/deploy/to-cf.md @@ -146,17 +146,17 @@ npm add @sap-cloud-sdk/resilience [Learn more about consuming remote services with SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} #### Native Fetch Client {#native-fetch} - -CAP provides a built-in remote client that uses the native Node.js `fetch` API. For limitations, see the warning below. During local development, you don't need SAP Cloud SDK, but you can still use it. For production, you still need SAP Cloud SDK. For example, you use it to resolve named destinations through the SAP BTP Destination service. +CAP provides a built-in remote client that uses the native Node.js `fetch` API, including support for resolving named destinations from the SAP BTP Destination service. +During local development, you don't need SAP Cloud SDK. +For production, SAP Cloud SDK is only required if you use authentication types or proxy configurations not yet supported by the native client (see warning below). CAP selects the native fetch client for each outgoing request according to the following rules: -1. If the destination requires features only available in SAP Cloud SDK (for example, SAP BTP Destination service resolution or non-basic authentication), CAP always uses SAP Cloud SDK. -2. If you explicitly set cds.remote.native_fetch to `true` or `false`, CAP uses that setting. -3. Otherwise, CAP uses native fetch when you haven't installed `@sap-cloud-sdk/http-client`. +1. If you explicitly set cds.remote.native_fetch to `true` or `false`, CAP uses that setting. +2. Otherwise, CAP uses native fetch when you haven't installed `@sap-cloud-sdk/http-client`. ::: warning Current limitations -The native fetch client does not yet support named destinations using the SAP BTP Destination service. It supports only [application-defined destinations](../services/consuming-services#use-application-defined-destinations). In addition, it limits authentication to `NoAuthentication` and `BasicAuthentication`. +The native fetch client supports only proxy type `Internet` and authentication types `NoAuthentication`, `BasicAuthentication`, and `OAuth2ClientCredentials`. Other authentication types are resolved on a best-effort basis via the native destination client. ::: diff --git a/guides/services/consuming-services.md b/guides/services/consuming-services.md index 30d4060b61..6415bb456d 100644 --- a/guides/services/consuming-services.md +++ b/guides/services/consuming-services.md @@ -1010,6 +1010,59 @@ Read [Destination Cache](https://sap.github.io/cloud-sdk/docs/js/features/connec If you want to configure additional headers for the HTTP request to the system behind the destination, for example an Application Interface Register (AIR) header, you can specify such headers in the destination definition itself using the property [_URL.headers.\_](https://help.sap.com/docs/CP_CONNECTIVITY/cca91383641e40ffbe03bdc78f00f681/4e1d742a3d45472d83b411e141729795.html?q=URL.headers). +> [!tip] Native Fetch Client +> When using the [native fetch client](../../guides/deploy/to-cf#native-fetch), CAP resolves BTP destinations directly — without SAP Cloud SDK. Bind a Destination service instance to your app (see [Deployment](#deployment)) and CAP handles tenant-aware resolution, token exchange, and caching automatically. The `destinationOptions` block above is Cloud SDK-specific and has no effect with the native client. + +[Learn more about native fetch destination support.](#native-fetch-destinations){.learn-more} + +##### Native Fetch Client Destination Support {#native-fetch-destinations} + +When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active, CAP resolves BTP destinations natively without SAP Cloud SDK. Bind the Destination service to your application as described in [Deployment](#deployment). + +**Supported authentication types:** + +| Authentication | Supported | +|---|:---:| +| `NoAuthentication` | ✓ | +| `BasicAuthentication` | ✓ | +| `OAuth2ClientCredentials` | ✓ | +| Others | Best-effort via native client | + +**Tenant resolution:** CAP reads the tenant from the incoming request JWT (claims `zid`, `app_tid`, or `zone_uuid`), falls back to `cds.context`, and tries the subscriber tenant first before falling back to the provider tenant. + +**Caching:** Destination and token responses are cached with TTL derived from the token's `expiresIn` value. Concurrent requests for the same destination are deduplicated automatically. + +**Configuration** (`cds.remote`): + +| Property | Default | Description | +|---|---|---| +| `cache_size` | `0` (disabled) | Max number of cached destination/token entries (LRU) | +| `cache_expiry_buffer` | `'5min'` | Time subtracted from token TTL before cache expiry | +| `timeout` | `'10s'` | Timeout for destination service HTTP requests | + +```jsonc +// package.json +{ + "cds": { + "remote": { + "native_fetch": true, + "cache_size": 500, + "cache_expiry_buffer": "2min" + } + } +} +``` + +The Destination service binding is picked up automatically from `cds.requires.destinations`. You can bind it using: + +```sh +cds bind -2 my-destination-service-instance +``` + +::: warning Proxy type limitation +Only destinations with proxy type `Internet` are fully supported. On-premise destinations (proxy type `OnPremise`) require SAP Cloud SDK. +::: + ##### Use Destinations with Java Destinations are configured in Spring Boot's _application.yaml_ file: @@ -1679,5 +1732,5 @@ This list specifies the properties for application defined destinations. | NoAuthentication | | | | BasicAuthentication | | | | TokenForwarding | |
Use `forwardAuthToken` | -| OAuth2ClientCredentials | [code only](../../java/cqn-services/remote-services#programmatic-destinations) | | +| OAuth2ClientCredentials | [code only](../../java/cqn-services/remote-services#programmatic-destinations) |
(native fetch only) | | UserTokenAuthentication | [code only](../../java/cqn-services/remote-services#programmatic-destinations) | | From 93a1f09c5897aa51d6d4394b80a121f43c0d5640 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Mon, 7 Sep 2026 17:42:35 +0200 Subject: [PATCH 02/25] docs: move destination docs to service-bindings, revert consuming-services - Add Destinations section to guides/integration/service-bindings.md covering BTP Destination Service (native fetch + Cloud SDK) and application-defined destinations - Revert guides/services/consuming-services.md (deprecated guide) --- guides/integration/service-bindings.md | 113 +++++++++++++++++++++++++ guides/services/consuming-services.md | 55 +----------- 2 files changed, 114 insertions(+), 54 deletions(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index 5a5c1863bb..f1c4849f62 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -110,5 +110,118 @@ cds env requires -b ## Destinations +Destinations contain the necessary information to connect to a remote system — essentially an advanced URL with additional metadata such as authentication details. + +You can use [SAP BTP Destination Service](#btp-destination-service) destinations or [application-defined destinations](#application-defined-destinations) inline in your CAP configuration. + +### BTP Destination Service {#btp-destination-service} + +CAP supports resolving named destinations from the SAP BTP Destination Service. Configure the destination name in the `credentials` block of the required service: + +```json +"cds": { + "requires": { + "API_BUSINESS_PARTNER": { + "kind": "odata", + "model": "srv/external/API_BUSINESS_PARTNER", + "[production]": { + "credentials": { + "destination": "S4HANA", + "path": "/sap/opu/odata/sap/API_BUSINESS_PARTNER" + } + } + } + } +} +``` + +Bind the Destination service to your application: + +```sh +cds add destination +``` + +#### Native Fetch Client {#native-fetch-destinations} + +When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active, CAP resolves BTP destinations natively without SAP Cloud SDK. + +**Supported authentication types:** + +| Authentication | Supported | +|---|:---:| +| `NoAuthentication` | ✓ | +| `BasicAuthentication` | ✓ | +| `OAuth2ClientCredentials` | ✓ | +| Others | Best-effort via native client | + +**Tenant resolution:** CAP reads the tenant from the incoming request JWT (claims `zid`, `app_tid`, or `zone_uuid`), falls back to `cds.context`, and tries the subscriber tenant first before falling back to the provider tenant. + +**Caching:** Destination and token responses are cached with TTL derived from the token's `expiresIn` value. Concurrent requests for the same destination are deduplicated automatically. + +**Configuration** (`cds.remote`): + +| Property | Default | Description | +|---|---|---| +| `cache_size` | `0` (disabled) | Max number of cached destination/token entries (LRU) | +| `cache_expiry_buffer` | `'5min'` | Time subtracted from token TTL before cache expiry | +| `timeout` | `'10s'` | Timeout for destination service HTTP requests | + +```jsonc +// package.json +{ + "cds": { + "remote": { + "native_fetch": true, + "cache_size": 500, + "cache_expiry_buffer": "2min" + } + } +} +``` + +::: warning Proxy type limitation +Only destinations with proxy type `Internet` are fully supported. On-premise destinations (proxy type `OnPremise`) require SAP Cloud SDK. +::: + +#### SAP Cloud SDK + +When the native fetch client is not active, CAP uses the SAP Cloud SDK to resolve BTP destinations. Additional `destinationOptions` can be passed to control resolution behavior: + +```jsonc +"[production]": { + "credentials": { ... }, + "destinationOptions": { + "selectionStrategy": "alwaysSubscriber", + "useCache": true + } +} +``` + +[Learn more about destinations with SAP Cloud SDK.](../services/consuming-services#use-sap-btp-destinations){.learn-more} + +### Application-Defined Destinations {#application-defined-destinations} + +If you don't want to use the BTP Destination Service, you can define the URL and authentication details directly in your CAP configuration: + +```jsonc +"cds": { + "requires": { + "REVIEWS": { + "kind": "odata", + "[production]": { + "credentials": { + "url": "https://reviews.ondemand.com/reviews", + "authentication": "BasicAuthentication", + "username": "", + "password": "" + } + } + } + } +} +``` + +[Learn more about application-defined destinations.](../services/consuming-services#use-application-defined-destinations){.learn-more} + ## Service Keys ## Using API Keys diff --git a/guides/services/consuming-services.md b/guides/services/consuming-services.md index 6415bb456d..30d4060b61 100644 --- a/guides/services/consuming-services.md +++ b/guides/services/consuming-services.md @@ -1010,59 +1010,6 @@ Read [Destination Cache](https://sap.github.io/cloud-sdk/docs/js/features/connec If you want to configure additional headers for the HTTP request to the system behind the destination, for example an Application Interface Register (AIR) header, you can specify such headers in the destination definition itself using the property [_URL.headers.\_](https://help.sap.com/docs/CP_CONNECTIVITY/cca91383641e40ffbe03bdc78f00f681/4e1d742a3d45472d83b411e141729795.html?q=URL.headers). -> [!tip] Native Fetch Client -> When using the [native fetch client](../../guides/deploy/to-cf#native-fetch), CAP resolves BTP destinations directly — without SAP Cloud SDK. Bind a Destination service instance to your app (see [Deployment](#deployment)) and CAP handles tenant-aware resolution, token exchange, and caching automatically. The `destinationOptions` block above is Cloud SDK-specific and has no effect with the native client. - -[Learn more about native fetch destination support.](#native-fetch-destinations){.learn-more} - -##### Native Fetch Client Destination Support {#native-fetch-destinations} - -When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active, CAP resolves BTP destinations natively without SAP Cloud SDK. Bind the Destination service to your application as described in [Deployment](#deployment). - -**Supported authentication types:** - -| Authentication | Supported | -|---|:---:| -| `NoAuthentication` | ✓ | -| `BasicAuthentication` | ✓ | -| `OAuth2ClientCredentials` | ✓ | -| Others | Best-effort via native client | - -**Tenant resolution:** CAP reads the tenant from the incoming request JWT (claims `zid`, `app_tid`, or `zone_uuid`), falls back to `cds.context`, and tries the subscriber tenant first before falling back to the provider tenant. - -**Caching:** Destination and token responses are cached with TTL derived from the token's `expiresIn` value. Concurrent requests for the same destination are deduplicated automatically. - -**Configuration** (`cds.remote`): - -| Property | Default | Description | -|---|---|---| -| `cache_size` | `0` (disabled) | Max number of cached destination/token entries (LRU) | -| `cache_expiry_buffer` | `'5min'` | Time subtracted from token TTL before cache expiry | -| `timeout` | `'10s'` | Timeout for destination service HTTP requests | - -```jsonc -// package.json -{ - "cds": { - "remote": { - "native_fetch": true, - "cache_size": 500, - "cache_expiry_buffer": "2min" - } - } -} -``` - -The Destination service binding is picked up automatically from `cds.requires.destinations`. You can bind it using: - -```sh -cds bind -2 my-destination-service-instance -``` - -::: warning Proxy type limitation -Only destinations with proxy type `Internet` are fully supported. On-premise destinations (proxy type `OnPremise`) require SAP Cloud SDK. -::: - ##### Use Destinations with Java Destinations are configured in Spring Boot's _application.yaml_ file: @@ -1732,5 +1679,5 @@ This list specifies the properties for application defined destinations. | NoAuthentication | | | | BasicAuthentication | | | | TokenForwarding | |
Use `forwardAuthToken` | -| OAuth2ClientCredentials | [code only](../../java/cqn-services/remote-services#programmatic-destinations) |
(native fetch only) | +| OAuth2ClientCredentials | [code only](../../java/cqn-services/remote-services#programmatic-destinations) | | | UserTokenAuthentication | [code only](../../java/cqn-services/remote-services#programmatic-destinations) | | From c4c9722a60bc74f097273e9bbe5abce8feb25f42 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Mon, 7 Sep 2026 17:48:30 +0200 Subject: [PATCH 03/25] docs: fix destination intro sentence to match existing wording --- guides/integration/service-bindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index f1c4849f62..b44896db5f 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -110,7 +110,7 @@ cds env requires -b ## Destinations -Destinations contain the necessary information to connect to a remote system — essentially an advanced URL with additional metadata such as authentication details. +Destinations contain the necessary information to connect to a remote system. They're basically an advanced URL, that can carry additional metadata like, for example, the authentication information. You can use [SAP BTP Destination Service](#btp-destination-service) destinations or [application-defined destinations](#application-defined-destinations) inline in your CAP configuration. From 44348dcad600a7539692fd838a605e1aa6df5cc1 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Mon, 7 Sep 2026 17:59:44 +0200 Subject: [PATCH 04/25] docs: move native fetch to node.js/remote-services, link from to-cf --- guides/deploy/to-cf.md | 12 ++---------- node.js/remote-services.md | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/guides/deploy/to-cf.md b/guides/deploy/to-cf.md index 04bbf5334b..12b6b31574 100644 --- a/guides/deploy/to-cf.md +++ b/guides/deploy/to-cf.md @@ -146,18 +146,10 @@ npm add @sap-cloud-sdk/resilience [Learn more about consuming remote services with SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} #### Native Fetch Client {#native-fetch} -CAP provides a built-in remote client that uses the native Node.js `fetch` API, including support for resolving named destinations from the SAP BTP Destination service. -During local development, you don't need SAP Cloud SDK. -For production, SAP Cloud SDK is only required if you use authentication types or proxy configurations not yet supported by the native client (see warning below). -CAP selects the native fetch client for each outgoing request according to the following rules: +CAP also provides a built-in HTTP client based on the native Node.js `fetch` API, which does not require SAP Cloud SDK. -1. If you explicitly set cds.remote.native_fetch to `true` or `false`, CAP uses that setting. -2. Otherwise, CAP uses native fetch when you haven't installed `@sap-cloud-sdk/http-client`. - -::: warning Current limitations -The native fetch client supports only proxy type `Internet` and authentication types `NoAuthentication`, `BasicAuthentication`, and `OAuth2ClientCredentials`. Other authentication types are resolved on a best-effort basis via the native destination client. -::: +[Learn more about the native fetch client.](../../node.js/remote-services#native-fetch){.learn-more} ### 4. MTA-Based Deployment {#add-mta-yaml} diff --git a/node.js/remote-services.md b/node.js/remote-services.md index 5199b85cc0..54a91e9c1b 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -29,6 +29,33 @@ The `cds.RemoteService` configuration allows you to define various options for c +### HTTP Client {#http-client} + +CAP supports two HTTP clients for outgoing remote service calls. + +#### SAP Cloud SDK + +By default, CAP uses the SAP Cloud SDK HTTP client when `@sap-cloud-sdk/http-client` is installed. This provides full support for all BTP Destination Service features including on-premise connectivity. + +[Learn more about SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} + +#### Native Fetch Client {#native-fetch} + +CAP provides a built-in remote client that uses the native Node.js `fetch` API, including support for resolving named destinations from the SAP BTP Destination service. +During local development, you don't need SAP Cloud SDK. +For production, SAP Cloud SDK is only required if you use authentication types or proxy configurations not yet supported by the native client (see warning below). + +CAP selects the native fetch client for each outgoing request according to the following rules: + +1. If you explicitly set cds.remote.native_fetch to `true` or `false`, CAP uses that setting. +2. Otherwise, CAP uses native fetch when you haven't installed `@sap-cloud-sdk/http-client`. + +::: warning Current limitations +The native fetch client supports only proxy type `Internet` and authentication types `NoAuthentication`, `BasicAuthentication`, and `OAuth2ClientCredentials`. Other authentication types are resolved on a best-effort basis via the native destination client. +::: + +[Learn more about BTP Destination Service support for the native fetch client.](../guides/integration/service-bindings#native-fetch-destinations){.learn-more} + ### CSRF-Token Handling If the remote system you want to consume requires it, you can enable the new CSRF-token handling of `@sap-cloud-sdk/core` via configuration options `csrf` and `csrfInBatch`. These options allow to configure CSRF-token handling for each remote service separately. From b3041b20ab32804d565fd10f6baefd20a71a7572 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Mon, 7 Sep 2026 18:01:20 +0200 Subject: [PATCH 05/25] docs: merge Cloud SDK and native fetch sections in to-cf.md --- guides/deploy/to-cf.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/guides/deploy/to-cf.md b/guides/deploy/to-cf.md index 12b6b31574..903643111e 100644 --- a/guides/deploy/to-cf.md +++ b/guides/deploy/to-cf.md @@ -131,11 +131,7 @@ The roles/scopes are derived from authorization-related annotations in your CDS ### 3. Remote Service Consumption {#remote-services} -CAP supports two HTTP clients for remote service calls. - -#### SAP Cloud SDK {#add-cloud-sdk} - -If you intend to consume remote services in production, for example, via [BTP Destinations](https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/destination-service), add the requisite SAP Cloud SDK packages, like that for Node.js: +CAP supports two HTTP clients for remote service calls. If you need full BTP Destination Service support including on-premise connectivity, add the SAP Cloud SDK packages: ```shell npm add @sap-cloud-sdk/connectivity @@ -145,9 +141,7 @@ npm add @sap-cloud-sdk/resilience [Learn more about consuming remote services with SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} -#### Native Fetch Client {#native-fetch} - -CAP also provides a built-in HTTP client based on the native Node.js `fetch` API, which does not require SAP Cloud SDK. +Alternatively, CAP's built-in native fetch client supports BTP destinations without SAP Cloud SDK. [Learn more about the native fetch client.](../../node.js/remote-services#native-fetch){.learn-more} From f673da81d0c426c95d2f6ac11a0aa8e18daf2cc3 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Mon, 7 Sep 2026 18:06:50 +0200 Subject: [PATCH 06/25] docs: beta tag on native fetch headings, remove tenant resolution paragraph --- guides/integration/service-bindings.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index b44896db5f..1695b5ac1a 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -141,7 +141,7 @@ Bind the Destination service to your application: cds add destination ``` -#### Native Fetch Client {#native-fetch-destinations} +#### Native Fetch Client {#native-fetch-destinations} When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active, CAP resolves BTP destinations natively without SAP Cloud SDK. @@ -154,8 +154,6 @@ When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active | `OAuth2ClientCredentials` | ✓ | | Others | Best-effort via native client | -**Tenant resolution:** CAP reads the tenant from the incoming request JWT (claims `zid`, `app_tid`, or `zone_uuid`), falls back to `cds.context`, and tries the subscriber tenant first before falling back to the provider tenant. - **Caching:** Destination and token responses are cached with TTL derived from the token's `expiresIn` value. Concurrent requests for the same destination are deduplicated automatically. **Configuration** (`cds.remote`): From ed1e36208851149458df491122714d7d42f4ea63 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 11:25:29 +0200 Subject: [PATCH 07/25] docs: refine native fetch config and timeout documentation --- guides/integration/service-bindings.md | 8 ++------ node.js/remote-services.md | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index 1695b5ac1a..d1c9fe5491 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -152,7 +152,6 @@ When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active | `NoAuthentication` | ✓ | | `BasicAuthentication` | ✓ | | `OAuth2ClientCredentials` | ✓ | -| Others | Best-effort via native client | **Caching:** Destination and token responses are cached with TTL derived from the token's `expiresIn` value. Concurrent requests for the same destination are deduplicated automatically. @@ -160,9 +159,7 @@ When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active | Property | Default | Description | |---|---|---| -| `cache_size` | `0` (disabled) | Max number of cached destination/token entries (LRU) | -| `cache_expiry_buffer` | `'5min'` | Time subtracted from token TTL before cache expiry | -| `timeout` | `'10s'` | Timeout for destination service HTTP requests | +| `timeout` | `'10s'` | Timeout for BTP Destination Service and token requests | ```jsonc // package.json @@ -170,8 +167,7 @@ When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active "cds": { "remote": { "native_fetch": true, - "cache_size": 500, - "cache_expiry_buffer": "2min" + "timeout": "30s" } } } diff --git a/node.js/remote-services.md b/node.js/remote-services.md index 54a91e9c1b..cc2a221973 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -121,7 +121,7 @@ The `requestTimeout` setting in the `cds.RemoteService` configuration specifies ``` ::: tip -See [Using Destinations](../guides/services/consuming-services#using-destinations) for more details on destination configuration. +See [BTP Destination Service](../guides/integration/service-bindings#btp-destination-service) for more details on destination configuration. ::: ## More to Come From 11dcf208ea121fa91ee416db64c09967f2120c6b Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 11:39:27 +0200 Subject: [PATCH 08/25] docs: fix snippet style and content in service-bindings.md --- guides/integration/service-bindings.md | 45 +++++++++++++++++--------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index d1c9fe5491..77c612681d 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -161,14 +161,11 @@ When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active |---|---|---| | `timeout` | `'10s'` | Timeout for BTP Destination Service and token requests | -```jsonc -// package.json -{ - "cds": { - "remote": { - "native_fetch": true, - "timeout": "30s" - } +```json +"cds": { + "remote": { + "native_fetch": true, + "timeout": "30s" } } ``` @@ -182,11 +179,20 @@ Only destinations with proxy type `Internet` are fully supported. On-premise des When the native fetch client is not active, CAP uses the SAP Cloud SDK to resolve BTP destinations. Additional `destinationOptions` can be passed to control resolution behavior: ```jsonc -"[production]": { - "credentials": { ... }, - "destinationOptions": { - "selectionStrategy": "alwaysSubscriber", - "useCache": true +"cds": { + "requires": { + "API_BUSINESS_PARTNER": { + /* ... */ + "[production]": { + "credentials": { + /* ... */ + }, + "destinationOptions": { + "selectionStrategy": "alwaysSubscriber", + "useCache": true + } + } + } } } ``` @@ -197,17 +203,24 @@ When the native fetch client is not active, CAP uses the SAP Cloud SDK to resolv If you don't want to use the BTP Destination Service, you can define the URL and authentication details directly in your CAP configuration: -```jsonc +```json "cds": { "requires": { "REVIEWS": { "kind": "odata", + "model": "srv/external/REVIEWS", "[production]": { "credentials": { "url": "https://reviews.ondemand.com/reviews", "authentication": "BasicAuthentication", - "username": "", - "password": "" + "username": "", + "password": "", + "headers": { + "my-header": "header value" + }, + "queries": { + "my-url-param": "url param value" + } } } } From 6703c1a91dbe021a0c2dcc3c8114952039194e42 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 11:42:39 +0200 Subject: [PATCH 09/25] docs: use lowercase 'Destination service' in body text --- guides/deploy/to-cf.md | 2 +- guides/integration/service-bindings.md | 6 +++--- node.js/remote-services.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/guides/deploy/to-cf.md b/guides/deploy/to-cf.md index 903643111e..1573e754a5 100644 --- a/guides/deploy/to-cf.md +++ b/guides/deploy/to-cf.md @@ -131,7 +131,7 @@ The roles/scopes are derived from authorization-related annotations in your CDS ### 3. Remote Service Consumption {#remote-services} -CAP supports two HTTP clients for remote service calls. If you need full BTP Destination Service support including on-premise connectivity, add the SAP Cloud SDK packages: +CAP supports two HTTP clients for remote service calls. If you need full BTP Destination service support including on-premise connectivity, add the SAP Cloud SDK packages: ```shell npm add @sap-cloud-sdk/connectivity diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index 77c612681d..aa762db21d 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -116,7 +116,7 @@ You can use [SAP BTP Destination Service](#btp-destination-service) destinations ### BTP Destination Service {#btp-destination-service} -CAP supports resolving named destinations from the SAP BTP Destination Service. Configure the destination name in the `credentials` block of the required service: +CAP supports resolving named destinations from the SAP BTP Destination service. Configure the destination name in the `credentials` block of the required service: ```json "cds": { @@ -159,7 +159,7 @@ When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active | Property | Default | Description | |---|---|---| -| `timeout` | `'10s'` | Timeout for BTP Destination Service and token requests | +| `timeout` | `'10s'` | Timeout for BTP Destination service and token requests | ```json "cds": { @@ -201,7 +201,7 @@ When the native fetch client is not active, CAP uses the SAP Cloud SDK to resolv ### Application-Defined Destinations {#application-defined-destinations} -If you don't want to use the BTP Destination Service, you can define the URL and authentication details directly in your CAP configuration: +If you don't want to use the BTP Destination service, you can define the URL and authentication details directly in your CAP configuration: ```json "cds": { diff --git a/node.js/remote-services.md b/node.js/remote-services.md index cc2a221973..849bb122c4 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -35,7 +35,7 @@ CAP supports two HTTP clients for outgoing remote service calls. #### SAP Cloud SDK -By default, CAP uses the SAP Cloud SDK HTTP client when `@sap-cloud-sdk/http-client` is installed. This provides full support for all BTP Destination Service features including on-premise connectivity. +By default, CAP uses the SAP Cloud SDK HTTP client when `@sap-cloud-sdk/http-client` is installed. This provides full support for all BTP Destination service features including on-premise connectivity. [Learn more about SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} @@ -54,7 +54,7 @@ CAP selects the native fetch client for each outgoing request according to the f The native fetch client supports only proxy type `Internet` and authentication types `NoAuthentication`, `BasicAuthentication`, and `OAuth2ClientCredentials`. Other authentication types are resolved on a best-effort basis via the native destination client. ::: -[Learn more about BTP Destination Service support for the native fetch client.](../guides/integration/service-bindings#native-fetch-destinations){.learn-more} +[Learn more about BTP Destination service support for the native fetch client.](../guides/integration/service-bindings#native-fetch-destinations){.learn-more} ### CSRF-Token Handling From 2a9407cc270d10fd449a7f1d26151725974a83a0 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 11:44:03 +0200 Subject: [PATCH 10/25] docs: remove caching section from native fetch destinations --- guides/integration/service-bindings.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index aa762db21d..31e2e97c7c 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -153,8 +153,6 @@ When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active | `BasicAuthentication` | ✓ | | `OAuth2ClientCredentials` | ✓ | -**Caching:** Destination and token responses are cached with TTL derived from the token's `expiresIn` value. Concurrent requests for the same destination are deduplicated automatically. - **Configuration** (`cds.remote`): | Property | Default | Description | From 8b3089c64641df8c616d6fdf233eec2e9cd84b1f Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 11:46:48 +0200 Subject: [PATCH 11/25] docs: fix whitespace in consuming-services.md --- guides/services/consuming-services.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/guides/services/consuming-services.md b/guides/services/consuming-services.md index 30d4060b61..56a5f9eefe 100644 --- a/guides/services/consuming-services.md +++ b/guides/services/consuming-services.md @@ -517,7 +517,7 @@ External service definitions, like [generated CDS or CSN files during import](#i It's best practice to use your own "interface" to the external service and define the relevant fields in a projection in your namespace. Your implementation is then independent of the remote service implementation and you request only the information that you require. ```cds -using {  API_BUSINESS_PARTNER as bupa } from '../srv/external/API_BUSINESS_PARTNER'; +using { API_BUSINESS_PARTNER as bupa } from '../srv/external/API_BUSINESS_PARTNER'; entity Suppliers as projection on bupa.A_BusinessPartner { key BusinessPartner as ID, @@ -590,7 +590,7 @@ What you need to do depends on [the scenarios](#sample-scenario-from-end-to-end- To expose a remote service entity, you add a projection on it to your CAP service: ```cds -using {  API_BUSINESS_PARTNER as bupa } from '../srv/external/API_BUSINESS_PARTNER'; +using { API_BUSINESS_PARTNER as bupa } from '../srv/external/API_BUSINESS_PARTNER'; extend service RiskService with { entity BusinessPartners as projection on bupa.A_BusinessPartner; @@ -680,7 +680,7 @@ module.exports = cds.service.impl(async function() { It's possible to expose associations of a remote service entity. You can adjust the [projection for the association target](#model-projections) and change the name of the association: ```cds -using { API_BUSINESS_PARTNER as bupa } from '../srv/external/API_BUSINESS_PARTNER'; +using { API_BUSINESS_PARTNER as bupa } from '../srv/external/API_BUSINESS_PARTNER'; extend service RiskService with { entity Suppliers as projection on bupa.A_BusinessPartner { From 00ff097980fbba8a45df20227428badc2228d1d7 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 11:50:43 +0200 Subject: [PATCH 12/25] docs: clean up native fetch destination section formatting --- guides/integration/service-bindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index 31e2e97c7c..0ac982f177 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -153,7 +153,7 @@ When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active | `BasicAuthentication` | ✓ | | `OAuth2ClientCredentials` | ✓ | -**Configuration** (`cds.remote`): +**Configuration:** | Property | Default | Description | |---|---|---| From ca7861bb60eab939b72096b21db21a7e077d5267 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 11:53:13 +0200 Subject: [PATCH 13/25] docs: fix broken native-fetch link in service-bindings.md --- guides/integration/service-bindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index 0ac982f177..f16b6c7c83 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -143,7 +143,7 @@ cds add destination #### Native Fetch Client {#native-fetch-destinations} -When the [native fetch client](../../guides/deploy/to-cf#native-fetch) is active, CAP resolves BTP destinations natively without SAP Cloud SDK. +When the [native fetch client](../../node.js/remote-services#native-fetch) is active, CAP resolves BTP destinations natively without SAP Cloud SDK. **Supported authentication types:** From 381187a1a15ee6128241661e42c762cc7beb7dea Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 13:26:50 +0200 Subject: [PATCH 14/25] Newline --- node.js/remote-services.md | 1 - 1 file changed, 1 deletion(-) diff --git a/node.js/remote-services.md b/node.js/remote-services.md index 849bb122c4..13cad977d0 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -28,7 +28,6 @@ The `cds.RemoteService` configuration allows you to define various options for c - ### HTTP Client {#http-client} CAP supports two HTTP clients for outgoing remote service calls. From b74e42fde4a429eaa3b86ca587c7fea6dc9af323 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 18:19:54 +0200 Subject: [PATCH 15/25] docs: refine HTTP client section wording and formatting --- guides/deploy/to-cf.md | 2 +- node.js/remote-services.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/guides/deploy/to-cf.md b/guides/deploy/to-cf.md index 1573e754a5..af6a7326a7 100644 --- a/guides/deploy/to-cf.md +++ b/guides/deploy/to-cf.md @@ -131,7 +131,7 @@ The roles/scopes are derived from authorization-related annotations in your CDS ### 3. Remote Service Consumption {#remote-services} -CAP supports two HTTP clients for remote service calls. If you need full BTP Destination service support including on-premise connectivity, add the SAP Cloud SDK packages: +CAP supports two HTTP clients for remote service calls: [SAP Cloud SDK](../../node.js/remote-services#sap-cloud-sdk) and CAP's built-in [native fetch client](../../node.js/remote-services#native-fetch). If you need full BTP Destination service support including on-premise connectivity, add the SAP Cloud SDK packages: ```shell npm add @sap-cloud-sdk/connectivity diff --git a/node.js/remote-services.md b/node.js/remote-services.md index 13cad977d0..edbb0596c0 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -30,9 +30,9 @@ The `cds.RemoteService` configuration allows you to define various options for c ### HTTP Client {#http-client} -CAP supports two HTTP clients for outgoing remote service calls. +CAP supports two HTTP clients for outgoing remote service calls: [SAP Cloud SDK](#sap-cloud-sdk) and CAP's built-in [native fetch client](#native-fetch). -#### SAP Cloud SDK +#### SAP Cloud SDK {#sap-cloud-sdk} By default, CAP uses the SAP Cloud SDK HTTP client when `@sap-cloud-sdk/http-client` is installed. This provides full support for all BTP Destination service features including on-premise connectivity. From 190d14bd65f12d7d93ad64c01c51784e523a5dfa Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 18:22:49 +0200 Subject: [PATCH 16/25] docs: split remote service consumption intro into two paragraphs --- guides/deploy/to-cf.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guides/deploy/to-cf.md b/guides/deploy/to-cf.md index af6a7326a7..9773f20816 100644 --- a/guides/deploy/to-cf.md +++ b/guides/deploy/to-cf.md @@ -131,7 +131,9 @@ The roles/scopes are derived from authorization-related annotations in your CDS ### 3. Remote Service Consumption {#remote-services} -CAP supports two HTTP clients for remote service calls: [SAP Cloud SDK](../../node.js/remote-services#sap-cloud-sdk) and CAP's built-in [native fetch client](../../node.js/remote-services#native-fetch). If you need full BTP Destination service support including on-premise connectivity, add the SAP Cloud SDK packages: +CAP supports two HTTP clients for remote service calls: [SAP Cloud SDK](../../node.js/remote-services#sap-cloud-sdk) and CAP's built-in [native fetch client](../../node.js/remote-services#native-fetch). + +If you need full BTP Destination service support including on-premise connectivity, add the SAP Cloud SDK packages: ```shell npm add @sap-cloud-sdk/connectivity From 357dfcf0687f13a204ca90c49a62f8576977309a Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Wed, 9 Sep 2026 18:25:56 +0200 Subject: [PATCH 17/25] docs: simplify client selection sentence --- node.js/remote-services.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node.js/remote-services.md b/node.js/remote-services.md index edbb0596c0..09327c61f4 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -44,7 +44,7 @@ CAP provides a built-in remote client that uses the native Node.js `fetch` API, During local development, you don't need SAP Cloud SDK. For production, SAP Cloud SDK is only required if you use authentication types or proxy configurations not yet supported by the native client (see warning below). -CAP selects the native fetch client for each outgoing request according to the following rules: +CAP selects the client as follows: 1. If you explicitly set cds.remote.native_fetch to `true` or `false`, CAP uses that setting. 2. Otherwise, CAP uses native fetch when you haven't installed `@sap-cloud-sdk/http-client`. From 44aa0c947d7c6f20efa877d4475acde7b3573b39 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Thu, 10 Sep 2026 10:41:22 +0200 Subject: [PATCH 18/25] docs: reword destination and application-defined destination intros --- guides/integration/service-bindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index f16b6c7c83..d0eb54a082 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -110,7 +110,7 @@ cds env requires -b ## Destinations -Destinations contain the necessary information to connect to a remote system. They're basically an advanced URL, that can carry additional metadata like, for example, the authentication information. +Destinations provide the connectivity details needed to reach a remote system, essentially a named URL enriched with metadata such as authentication configuration. You can use [SAP BTP Destination Service](#btp-destination-service) destinations or [application-defined destinations](#application-defined-destinations) inline in your CAP configuration. From c59cfb4fdbe91119fa033b13e545816b671f1065 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Thu, 10 Sep 2026 10:44:50 +0200 Subject: [PATCH 19/25] docs: reword application-defined destinations intro --- guides/integration/service-bindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index d0eb54a082..a55bc56260 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -199,7 +199,7 @@ When the native fetch client is not active, CAP uses the SAP Cloud SDK to resolv ### Application-Defined Destinations {#application-defined-destinations} -If you don't want to use the BTP Destination service, you can define the URL and authentication details directly in your CAP configuration: +If you don't want to use SAP BTP destinations, you can define the URL, authentication details, and additional metadata directly in your CAP configuration: ```json "cds": { From 4011813ff985de1f6adead654e65f65da8f0e60e Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Thu, 10 Sep 2026 10:47:06 +0200 Subject: [PATCH 20/25] docs: use SAP BTP consistently throughout --- guides/deploy/to-cf.md | 4 ++-- guides/integration/service-bindings.md | 8 ++++---- node.js/remote-services.md | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/guides/deploy/to-cf.md b/guides/deploy/to-cf.md index 9773f20816..02bf311af3 100644 --- a/guides/deploy/to-cf.md +++ b/guides/deploy/to-cf.md @@ -133,7 +133,7 @@ The roles/scopes are derived from authorization-related annotations in your CDS CAP supports two HTTP clients for remote service calls: [SAP Cloud SDK](../../node.js/remote-services#sap-cloud-sdk) and CAP's built-in [native fetch client](../../node.js/remote-services#native-fetch). -If you need full BTP Destination service support including on-premise connectivity, add the SAP Cloud SDK packages: +If you need full SAP BTP Destination service support including on-premise connectivity, add the SAP Cloud SDK packages: ```shell npm add @sap-cloud-sdk/connectivity @@ -143,7 +143,7 @@ npm add @sap-cloud-sdk/resilience [Learn more about consuming remote services with SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} -Alternatively, CAP's built-in native fetch client supports BTP destinations without SAP Cloud SDK. +Alternatively, CAP's built-in native fetch client supports SAP BTP destinations without SAP Cloud SDK. [Learn more about the native fetch client.](../../node.js/remote-services#native-fetch){.learn-more} diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index a55bc56260..31fcff1596 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -114,7 +114,7 @@ Destinations provide the connectivity details needed to reach a remote system, e You can use [SAP BTP Destination Service](#btp-destination-service) destinations or [application-defined destinations](#application-defined-destinations) inline in your CAP configuration. -### BTP Destination Service {#btp-destination-service} +### SAP BTP Destination Service {#btp-destination-service} CAP supports resolving named destinations from the SAP BTP Destination service. Configure the destination name in the `credentials` block of the required service: @@ -143,7 +143,7 @@ cds add destination #### Native Fetch Client {#native-fetch-destinations} -When the [native fetch client](../../node.js/remote-services#native-fetch) is active, CAP resolves BTP destinations natively without SAP Cloud SDK. +When the [native fetch client](../../node.js/remote-services#native-fetch) is active, CAP resolves SAP BTP destinations natively without SAP Cloud SDK. **Supported authentication types:** @@ -157,7 +157,7 @@ When the [native fetch client](../../node.js/remote-services#native-fetch) is ac | Property | Default | Description | |---|---|---| -| `timeout` | `'10s'` | Timeout for BTP Destination service and token requests | +| `timeout` | `'10s'` | Timeout for SAP BTP Destination service and token requests | ```json "cds": { @@ -174,7 +174,7 @@ Only destinations with proxy type `Internet` are fully supported. On-premise des #### SAP Cloud SDK -When the native fetch client is not active, CAP uses the SAP Cloud SDK to resolve BTP destinations. Additional `destinationOptions` can be passed to control resolution behavior: +When the native fetch client is not active, CAP uses the SAP Cloud SDK to resolve SAP BTP destinations. Additional `destinationOptions` can be passed to control resolution behavior: ```jsonc "cds": { diff --git a/node.js/remote-services.md b/node.js/remote-services.md index 09327c61f4..c9ca2b406c 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -34,7 +34,7 @@ CAP supports two HTTP clients for outgoing remote service calls: [SAP Cloud SDK] #### SAP Cloud SDK {#sap-cloud-sdk} -By default, CAP uses the SAP Cloud SDK HTTP client when `@sap-cloud-sdk/http-client` is installed. This provides full support for all BTP Destination service features including on-premise connectivity. +By default, CAP uses the SAP Cloud SDK HTTP client when `@sap-cloud-sdk/http-client` is installed. This provides full support for all SAP BTP Destination service features including on-premise connectivity. [Learn more about SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} @@ -53,7 +53,7 @@ CAP selects the client as follows: The native fetch client supports only proxy type `Internet` and authentication types `NoAuthentication`, `BasicAuthentication`, and `OAuth2ClientCredentials`. Other authentication types are resolved on a best-effort basis via the native destination client. ::: -[Learn more about BTP Destination service support for the native fetch client.](../guides/integration/service-bindings#native-fetch-destinations){.learn-more} +[Learn more about SAP BTP Destination service support for the native fetch client.](../guides/integration/service-bindings#native-fetch-destinations){.learn-more} ### CSRF-Token Handling @@ -120,7 +120,7 @@ The `requestTimeout` setting in the `cds.RemoteService` configuration specifies ``` ::: tip -See [BTP Destination Service](../guides/integration/service-bindings#btp-destination-service) for more details on destination configuration. +See [SAP BTP Destination Service](../guides/integration/service-bindings#btp-destination-service) for more details on destination configuration. ::: ## More to Come From 99a743f8cb3eed9dfa6cb4725d3e62c198441bd8 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Thu, 10 Sep 2026 10:51:08 +0200 Subject: [PATCH 21/25] docs: reword destinations intro sentence --- guides/integration/service-bindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index 31fcff1596..d22322cc93 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -112,7 +112,7 @@ cds env requires -b Destinations provide the connectivity details needed to reach a remote system, essentially a named URL enriched with metadata such as authentication configuration. -You can use [SAP BTP Destination Service](#btp-destination-service) destinations or [application-defined destinations](#application-defined-destinations) inline in your CAP configuration. +CAP supports named destinations from the [SAP BTP Destination Service](#btp-destination-service) as well as [application-defined destinations](#application-defined-destinations) configured directly in your project. ### SAP BTP Destination Service {#btp-destination-service} From d026436f1244dfad4a0aee76e59d6b145c199387 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Thu, 10 Sep 2026 10:52:56 +0200 Subject: [PATCH 22/25] docs: fix consecutive CAP supports paragraphs --- guides/integration/service-bindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index d22322cc93..69751cf640 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -116,7 +116,7 @@ CAP supports named destinations from the [SAP BTP Destination Service](#btp-dest ### SAP BTP Destination Service {#btp-destination-service} -CAP supports resolving named destinations from the SAP BTP Destination service. Configure the destination name in the `credentials` block of the required service: +Named destinations are resolved from the SAP BTP Destination service. Configure the destination name in the `credentials` block of the required service: ```json "cds": { From 826ef54020edfe995c1a3611642e77a67e98c40e Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Thu, 10 Sep 2026 11:06:13 +0200 Subject: [PATCH 23/25] docs: refine wording and phrasing --- guides/integration/service-bindings.md | 2 +- node.js/remote-services.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index 69751cf640..1d27745eff 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -112,7 +112,7 @@ cds env requires -b Destinations provide the connectivity details needed to reach a remote system, essentially a named URL enriched with metadata such as authentication configuration. -CAP supports named destinations from the [SAP BTP Destination Service](#btp-destination-service) as well as [application-defined destinations](#application-defined-destinations) configured directly in your project. +CAP supports named destinations from the [SAP BTP Destination service](#btp-destination-service) as well as [application-defined destinations](#application-defined-destinations) configured directly in your project. ### SAP BTP Destination Service {#btp-destination-service} diff --git a/node.js/remote-services.md b/node.js/remote-services.md index c9ca2b406c..a8d316daea 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -34,7 +34,7 @@ CAP supports two HTTP clients for outgoing remote service calls: [SAP Cloud SDK] #### SAP Cloud SDK {#sap-cloud-sdk} -By default, CAP uses the SAP Cloud SDK HTTP client when `@sap-cloud-sdk/http-client` is installed. This provides full support for all SAP BTP Destination service features including on-premise connectivity. +If the SAP Cloud SDK HTTP client (`@sap-cloud-sdk/http-client`) is installed, CAP uses it by default. This provides full support for all SAP BTP Destination service features including on-premise connectivity. [Learn more about SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} @@ -44,7 +44,7 @@ CAP provides a built-in remote client that uses the native Node.js `fetch` API, During local development, you don't need SAP Cloud SDK. For production, SAP Cloud SDK is only required if you use authentication types or proxy configurations not yet supported by the native client (see warning below). -CAP selects the client as follows: +Which client is used depends on: 1. If you explicitly set cds.remote.native_fetch to `true` or `false`, CAP uses that setting. 2. Otherwise, CAP uses native fetch when you haven't installed `@sap-cloud-sdk/http-client`. @@ -120,7 +120,7 @@ The `requestTimeout` setting in the `cds.RemoteService` configuration specifies ``` ::: tip -See [SAP BTP Destination Service](../guides/integration/service-bindings#btp-destination-service) for more details on destination configuration. +See [Using Destinations](../guides/integration/service-bindings#destinations) for more details on destination configuration. ::: ## More to Come From 7b0ca20c8200ef0d9f7ae6789eccdade41e759e2 Mon Sep 17 00:00:00 2001 From: Mahati Shankar <93712176+smahati@users.noreply.github.com> Date: Thu, 10 Sep 2026 12:51:38 +0200 Subject: [PATCH 24/25] cosmetics --- guides/integration/service-bindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/integration/service-bindings.md b/guides/integration/service-bindings.md index 1d27745eff..cf2d768113 100644 --- a/guides/integration/service-bindings.md +++ b/guides/integration/service-bindings.md @@ -174,7 +174,7 @@ Only destinations with proxy type `Internet` are fully supported. On-premise des #### SAP Cloud SDK -When the native fetch client is not active, CAP uses the SAP Cloud SDK to resolve SAP BTP destinations. Additional `destinationOptions` can be passed to control resolution behavior: +When the native fetch client isn't active, CAP uses the SAP Cloud SDK to resolve SAP BTP destinations. Additional `destinationOptions` can be passed to control resolution behavior: ```jsonc "cds": { From 9ddf391487ec632d014276f42e465b919a0c8f67 Mon Sep 17 00:00:00 2001 From: Mahati Shankar <93712176+smahati@users.noreply.github.com> Date: Thu, 10 Sep 2026 14:16:05 +0200 Subject: [PATCH 25/25] cosmetics --- node.js/remote-services.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/node.js/remote-services.md b/node.js/remote-services.md index a8d316daea..eaf48173e6 100644 --- a/node.js/remote-services.md +++ b/node.js/remote-services.md @@ -34,25 +34,25 @@ CAP supports two HTTP clients for outgoing remote service calls: [SAP Cloud SDK] #### SAP Cloud SDK {#sap-cloud-sdk} -If the SAP Cloud SDK HTTP client (`@sap-cloud-sdk/http-client`) is installed, CAP uses it by default. This provides full support for all SAP BTP Destination service features including on-premise connectivity. +If the SAP Cloud SDK HTTP client (`@sap-cloud-sdk/http-client`) is installed, CAP uses it by default. The client provides full support for all SAP BTP Destination service features including on-premise connectivity. [Learn more about SAP Cloud SDK.](https://sap.github.io/cloud-sdk/docs/js/overview){.learn-more} #### Native Fetch Client {#native-fetch} CAP provides a built-in remote client that uses the native Node.js `fetch` API, including support for resolving named destinations from the SAP BTP Destination service. -During local development, you don't need SAP Cloud SDK. -For production, SAP Cloud SDK is only required if you use authentication types or proxy configurations not yet supported by the native client (see warning below). - -Which client is used depends on: - -1. If you explicitly set cds.remote.native_fetch to `true` or `false`, CAP uses that setting. -2. Otherwise, CAP uses native fetch when you haven't installed `@sap-cloud-sdk/http-client`. ::: warning Current limitations The native fetch client supports only proxy type `Internet` and authentication types `NoAuthentication`, `BasicAuthentication`, and `OAuth2ClientCredentials`. Other authentication types are resolved on a best-effort basis via the native destination client. ::: +You don't need SAP Cloud SDK for local development. For production, the SAP Cloud SDK is only required if you use authentication types or proxy configurations not yet supported by the native client. + +The client selection follows this priority: + +1. **Explicit configuration** - set cds.remote.native_fetch to `true` or `false`, CAP uses that setting. +2. **Default behavior** - CAP uses native fetch when you haven't installed `@sap-cloud-sdk/http-client`. + [Learn more about SAP BTP Destination service support for the native fetch client.](../guides/integration/service-bindings#native-fetch-destinations){.learn-more} ### CSRF-Token Handling