Releases: SAP/cloud-sdk-python
Releases · SAP/cloud-sdk-python
Release list
v0.43.2 - August 12, 2026
What's changed
sap.cld.subaccount_idrenamed tosap.cloud.provider.subaccount_id: The OTel resource attribute key emitted by the SDK has been updated to follow the canonical SAP cloud attribute naming convention.
Contributors
v0.43.1 - August 12, 2026
Bug Fixes
AuthTokennow surfaces Destination Service error messages: When the Destination Service returns an auth token with a non-emptyerrorfield (e.g."No consumed apis matching provided resource parameter found."),AuthToken.from_dictnow raisesDestinationOperationErrorwith the exact service-provided message. Previously, such tokens caused a generic"Empty auth header"error in the Agent Gateway LoB flow with no indication of the root cause.AuthToken.from_dictvalidates error-carrying tokens correctly: Tokens containing anerrorfield alongside emptytype/value/http_headerare now parsed and fail with a descriptive message (auth token retrieval failed: <error>) instead of the generic missing-fields error.
Contributors
v0.43.0 - August 10, 2026
Breaking Changes
⚠️ Important: This section is critical for users upgrading from previous versions
- [Breaking Change]
APPFND_UMS_DESTINATION_NAMEremoved: The environment variableAPPFND_UMS_DESTINATION_NAMEis no longer supported. To override the destination name, useExtensibilityConfig(destination_name="..."). For automatic resolution, set bothAPPFND_CONHOS_LANDSCAPEandAPPFND_CONHOS_UMS_URL. - [Breaking Change] Destination prefix renamed: The auto-constructed UMS destination name changed from
sap-managed-runtime-ums-{APPFND_CONHOS_LANDSCAPE}tosap-managed-runtime-ias-{APPFND_CONHOS_LANDSCAPE}. Deployments must have the IAS-prefixed destination available in the Destination Service. - [Breaking Change]
APPFND_CONHOS_UMS_URLis now required: The UMS base URL is no longer read from the destination'surlfield. SetAPPFND_CONHOS_UMS_URLto the UMS endpoint URL; aTransportErroris raised if it is absent.
Improvements
UmsTransport.get_extension_capability_implementationnow callsget_destinationwithConsumptionOptions(skip_token_retrieval=True), avoiding unnecessary token retrieval since only the mTLS certificate is needed from the destination.- Destination-name resolution failure is now deferred to fetch time (
get_extension_capability_implementation) rather than raised atUmsTransportconstruction, allowing the object to be created before environment variables are fully configured. - Clearer error messages guide users to set both
APPFND_CONHOS_LANDSCAPEandAPPFND_CONHOS_UMS_URLwhen automatic destination resolution fails.
Contributors
- Hari (@hariturangi)
v0.42.0 - August 07, 2026
What's New
-
bootstrapnow includes telemetry automatically: callingbootstrap(app)is all you need.from sap_cloud_sdk import bootstrap, TelemetryConfig bootstrap(app) bootstrap(app, telemetry=TelemetryConfig(disable_batch=True))
Contributors
- Lucas Soares (@LucasAlvesSoares)
v0.41.0 - August 07, 2026
What's New
-
MCP tool filtering on
list_mcp_tools: the Agent Gateway client now accepts an optionalMCPToolFilterto narrow discovered MCP tools by tool name and/or ORD ID:ord_idsis applied before fetching — non-matching MCP servers are skipped without a network round-trip — whilenamesis applied after fetching, since tool names are only known once each server has been queried. Both fields are optional and combined with AND semantics; an empty or omitted filter returns all tools. Supported for both LoB and customer agent flows.
Improvements
- Consistent filter handling across Agent Gateway discovery: the internal
list_agent_cards/AgentCardFilterflow was aligned with the new pattern so both public discovery methods accept a filter object directly. No change to the publiclist_agent_cardsAPI.
Contributors
- Application Foundation Toolkit Libraries Team
v0.40.1 - August 07, 2026
Dependency Updates
- Upgraded OpenTelemetry core (opentelemetry-api, opentelemetry-sdk, exporters) from 1.42.1 to 1.43.0.
- Upgraded all OpenTelemetry instrumentation packages from 0.63b1 to 0.64b0 (httpx, requests, grpc, logging, starlette, fastapi, aiohttp-client, sqlalchemy, django, flask).
- Upgraded setuptools constraint from ~=80.9.0 to >=83.0, resolving to 83.0.0.
- Upgraded protobuf minimum from >=4.25.0 to >=7.0.0.
- Upgraded pyasn1 (transitive, via uv.lock).
v0.40.0 - August 04, 2026
What's New
sap_cloud_sdk.outputmanagementmodule — New service integration for the SAP Output Management Service (OMS). Import viafrom sap_cloud_sdk.outputmanagement import create_client.create_client()factory function — Builds anOutputManagementClientfrom environment variables (CLOUD_SDK_OMS_DESTINATION_NAME,CLOUD_SDK_OMS_ACCESS_STRATEGY,CLOUD_SDK_OMS_INSTANCE) or explicit parameters.OutputManagementClient— Unified client with four operations:send_email(notification_template_key, to, business_document, ...)— send an email via OMSsend_email_with_mcp(tool_name, ..., mcp_tool)— async send via MCP tool integration with distributedtraceparentheadercreate_output_request(...)— build anOutputRequestobject (CloudEvents structure) without sendingsend_output_request(output_request)— submit a pre-builtOutputRequest
DestinationCredentialConfig— Pydantic model for BTP Destination-based access, supportingPROVIDER_ONLYandSUBSCRIBER_ONLYaccess strategies.- Data models:
OutputRequest,OutputRequestBuilder,OutputResponse,EmailConfiguration,AttachmentConfig,OutputManagementInfo,OutputRequestData,DirectShareConfiguration,FormConfiguration,PreGeneratedAttachment. - Enums:
FileFormat,Channel(e.g.Channel.INTERNAL_EMAIL). - Exception hierarchy:
OutputManagementException,AuthenticationException,ValidationException,NetworkException,DestinationNotFoundException,DestinationAccessException. - Full OpenTelemetry telemetry wired for all four client operations.
- User guide at
src/sap_cloud_sdk/outputmanagement/user-guide.md.
Contributors
v0.39.1 - August 03, 2026
Bug Fixes
- Agent Gateway:
get_mcp_tools_customernow returns an empty list instead of raisingAgentGatewaySDKErrorwhenintegrationDependenciesis empty inCustomerCredentials, consistent with the LOB path. - Agent Gateway: MCP server errors are now logged with richer detail — HTTP errors include the status code and response body (up to 500 chars), and
ExceptionGroupinstances from anyio are unwrapped so each inner exception is logged individually. Applies to both_customer.pyand_lob.py. - Agent Gateway:
call_mcp_tool_customerandcall_mcp_tool_lobnow log an error when a tool invocation returnsisError=True. - Agent Gateway: Fixed
streamable_http_clientunpacking to use*_instead of_, resolving a compatibility issue with newer MCP SDK versions that return more than three values.
Contributors
v0.39.0 - Jul 24, 2026
What's New
bootstrap(app)— new SDK entry point: call once at app startup to wire the SDK runtime context into your framework. Automatically detects Starlette/FastAPI and registers context middleware.sap_cloud_sdk.core.runtime_context— new module: provider-agnostic runtime context system. Any SDK module callsget_context()to read caller-identity information without coupling to a specific auth provider or framework.IASContextProvider: extractsTENANT_ID(app_tid),GLOBAL_TENANT_ID(sap_gtid), andUSER_ID(user_uuid) from the IAS JWTAuthorizationheader.SAPTriggerContextProvider: extractsTRIGGER_TYPEfrom thex-sap-originheader.DWCContextProvider: extractsDWC_SUBDOMAINandDWC_TENANTfromdwc-subdomain/dwc-tenantheaders.AuditClient.send()auto back-fill updated: now reads from the newRuntimeContextfirst, falling back to the legacy IAS auth context for apps not yet usingbootstrap().- Library instrumentation:
auto_instrument()now automatically instruments any supported HTTP client, web framework, or data library already installed in the service — no extra configuration needed. Supported libraries:httpx,requests,grpcio,starlette,fastapi,aiohttp,django,flask,sqlalchemy,redis, and stdliblogging(for log-trace correlation). Passapp=appfrom a lifespan handler for already-constructed Starlette/FastAPI apps.
Contributors
- Lucas Soares (@LucasAlvesSoares)
v0.38.0 - Jul 22, 2026
What's New
- Auto-inject tenant and user into audit log events: `AuditClient.send()` now reads the IAS claims from the current async context (set by `StarletteIASTelemetryMiddleware`) and automatically back-fills `common.tenant_id` (from `app_tid`), `common.user_initiator_id` (from `user_uuid`), and `common.timestamp` (to UTC now if not set) — callers no longer need to set these fields manually when using the middleware.
- `ias/_context.py` — new module with a `ContextVar`-backed `set_auth_context` / `get_auth_context` API to store and retrieve IAS claims for the current request lifecycle. Exported from `sap_cloud_sdk.ias`.
- `StarletteIASTelemetryMiddleware` refactored: unified `_parse_request()` helper eliminates the double token-parse and ensures the `x-sap-origin` header is always captured regardless of whether IAS claims parsing succeeds.
Contributors
- Lucas Soares (@LucasAlvesSoares)
- Tiago Kochenborger (@tiagoek)