Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
"""SAP Ariba Output Management Service SDK for Python."""
"""SAP Ariba Agent Output Tools SDK for Python."""

import logging
import os
from typing import Optional

from .client import OutputManagementClient
from ._service_client import OutputManagementServiceClient
from .client import AgentOutputToolsClient
from ._service_client import AgentOutputToolsServiceClient
from ._models import (
OutputRequest,
OutputRequestBuilder,
Expand All @@ -21,7 +21,7 @@
from .config import DestinationCredentialConfig
from .constants import FileFormat, Channel
from .exceptions import (
OutputManagementException,
AgentOutputToolsException,
AuthenticationException,
ValidationException,
NetworkException,
Expand All @@ -37,9 +37,9 @@ def create_client(
destination_name: Optional[str] = None,
access_strategy: Optional[str] = None,
instance: Optional[str] = None,
) -> OutputManagementClient:
) -> AgentOutputToolsClient:
"""
Create an Output Management client with configuration from environment or parameters.
Create an Agent Output Tools client with configuration from environment or parameters.

This is the recommended factory function for creating clients. It follows the SDK's
standard pattern of reading configuration from environment variables with optional overrides.
Expand All @@ -60,15 +60,15 @@ def create_client(
CLOUD_SDK_OMS_INSTANCE environment variable or defaults to "default".

Returns:
Configured OutputManagementClient instance
Configured AgentOutputToolsClient instance

Raises:
ValidationException: If destination_name is not provided and not found in environment
(when destination_credential_config is not provided)

Example:
```python
from sap_cloud_sdk.outputmanagement import create_client, DestinationCredentialConfig
from sap_cloud_sdk.agentoutputtools import create_client, DestinationCredentialConfig

# Using environment variables
client = create_client()
Expand Down Expand Up @@ -100,7 +100,7 @@ def create_client(
if destination_credential_config is not None:
destination_config = destination_credential_config
logger.info(
f"Creating Output Management client with provided DestinationCredentialConfig: "
f"Creating Agent Output Tools client with provided DestinationCredentialConfig: "
f"destination '{destination_config.destination_name}'"
)
else:
Expand All @@ -120,7 +120,7 @@ def create_client(
)

logger.info(
f"Creating Output Management client with destination '{dest_name}', "
f"Creating Agent Output Tools client with destination '{dest_name}', "
f"access_strategy '{access_strat}', instance '{inst}'"
)

Expand All @@ -139,19 +139,19 @@ def create_client(
logger.info(f"Retrieved destination base URL: {base_url}")

# Create service client directly
service_client = OutputManagementServiceClient(
service_client = AgentOutputToolsServiceClient(
base_url=base_url,
destination=http_destination,
destination_instance=destination_config.instance or "default",
)

# Wrap it in the unified OutputManagementClient
return OutputManagementClient(service_client)
# Wrap it in the unified Agent Output Tools client
return AgentOutputToolsClient(service_client)


__all__ = [
# Main client and factory function
"OutputManagementClient",
"AgentOutputToolsClient",
"create_client",
# Models
"OutputRequest",
Expand All @@ -170,7 +170,7 @@ def create_client(
"FileFormat",
"Channel",
# Exceptions
"OutputManagementException",
"AgentOutputToolsException",
"AuthenticationException",
"ValidationException",
"NetworkException",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Data models for SAP Output Management Service."""
"""Data models for SAP Agent Output Tools Service."""

from __future__ import annotations

Expand All @@ -16,14 +16,14 @@


class FormConfiguration(BaseModel):
"""Form channel configuration.
"""Form channel configuration for Agent Output Tools.

Attributes:
form_id: Form identifier
form_name: Form name (required by Output Management service)
form_template_name: Form template name (required by Output Management service)
form_language: Form language code (required by Output Management service)
file_format: File format for the generated form (required by Output Management service)
form_name: Form name (required by Agent Output Tools service)
form_template_name: Form template name (required by Agent Output Tools service)
form_language: Form language code (required by Agent Output Tools service)
file_format: File format for the generated form (required by Agent Output Tools service)
form_data: Optional form data
callback_url: Optional callback URL for form submission
"""
Expand Down Expand Up @@ -69,7 +69,7 @@ class PreGeneratedAttachment(BaseModel):

Example:
```python
from sap_cloud_sdk.outputmanagement._models import PreGeneratedAttachment
from sap_cloud_sdk.agentoutputtools._models import PreGeneratedAttachment

attachment = PreGeneratedAttachment(
url="https://dms.example.com/browser/root?objectId=12345&cmisselector=content",
Expand Down Expand Up @@ -136,8 +136,8 @@ class AttachmentConfig(BaseModel):

Example - Generated Attachment:
```python
from sap_cloud_sdk.outputmanagement._models import AttachmentConfig, FormConfiguration
from sap_cloud_sdk.outputmanagement.constants import FileFormat
from sap_cloud_sdk.agentoutputtools._models import AttachmentConfig, FormConfiguration
from sap_cloud_sdk.agentoutputtools.constants import FileFormat

form_config = FormConfiguration(
form_name="PurchaseOrderForm",
Expand All @@ -151,7 +151,7 @@ class AttachmentConfig(BaseModel):

Example - Pre-generated Attachment from DMS:
```python
from sap_cloud_sdk.outputmanagement._models import AttachmentConfig, PreGeneratedAttachment
from sap_cloud_sdk.agentoutputtools._models import AttachmentConfig, PreGeneratedAttachment

pre_gen_attachment = PreGeneratedAttachment(
url="https://dms.example.com/browser/root?objectId=12345&cmisselector=content",
Expand Down Expand Up @@ -216,7 +216,7 @@ class EmailConfiguration(BaseModel):

Example - Simple Notification:
```python
from sap_cloud_sdk.outputmanagement._models import EmailConfiguration
from sap_cloud_sdk.agentoutputtools._models import EmailConfiguration

config = EmailConfiguration(
emailNotificationTemplateKey="PO_APPROVAL_NOTIFICATION",
Expand All @@ -228,12 +228,12 @@ class EmailConfiguration(BaseModel):

Example - With Document Attachment:
```python
from sap_cloud_sdk.outputmanagement._models import (
from sap_cloud_sdk.agentoutputtools._models import (
EmailConfiguration,
AttachmentConfig,
FormConfiguration
)
from sap_cloud_sdk.outputmanagement.constants import FileFormat
from sap_cloud_sdk.agentoutputtools.constants import FileFormat

form_config = FormConfiguration(
form_name="PurchaseOrderForm",
Expand Down Expand Up @@ -336,7 +336,7 @@ class Config:

class OutputManagementInfo(BaseModel):
"""
Contains information required by Output Management to decide on how to orchestrate the output.
Contains information required by Agent Output Tools to decide on how to orchestrate the output.

This class encapsulates the configuration and metadata needed for output processing,
including business document identification, delivery channels, and channel-specific configurations.
Expand All @@ -353,11 +353,11 @@ class OutputManagementInfo(BaseModel):

Example:
```python
from sap_cloud_sdk.outputmanagement._models import (
from sap_cloud_sdk.agentoutputtools._models import (
OutputManagementInfo,
EmailConfiguration
)
from sap_cloud_sdk.outputmanagement.constants import Channel
from sap_cloud_sdk.agentoutputtools.constants import Channel

email_config = EmailConfiguration(
emailNotificationTemplateKey="PO_NOTIFICATION",
Expand Down Expand Up @@ -435,7 +435,7 @@ class Config:

class OutputRequestData(BaseModel):
"""
Container for the data payload of an Output Management request.
Container for the data payload of an Agent Output request.

This class serves as the envelope for the actual request data, containing two essential components:
- OutputManagement: Metadata and configuration for output orchestration
Expand Down Expand Up @@ -463,16 +463,16 @@ class OutputRequestData(BaseModel):
```

Attributes:
output_management: Information required by Output Management for orchestration (required)
output_management: Information required by Agent Output Tools for orchestration (required)
business_document: The business document as a dictionary/JSON object (required)

Example:
```python
from sap_cloud_sdk.outputmanagement._models import (
from sap_cloud_sdk.agentoutputtools._models import (
OutputRequestData,
OutputManagementInfo
)
from sap_cloud_sdk.outputmanagement.constants import Channel
from sap_cloud_sdk.agentoutputtools.constants import Channel

output_mgmt = OutputManagementInfo(
businessDocumentType="com.sap.procurement.PurchaseOrder",
Expand All @@ -499,7 +499,7 @@ class OutputRequestData(BaseModel):
output_management: OutputManagementInfo = Field(
...,
alias="OutputManagement",
description="Information required by Output Management to orchestrate the output",
description="Information required by Agent Output Tools to orchestrate the output",
)

business_document: Dict[str, Any] = Field(
Expand All @@ -521,10 +521,10 @@ class Config:

class OutputRequest(BaseModel):
"""
Represents an Output Management request following the CloudEvents 1.0 specification.
Represents an Agent Output Tools request following the CloudEvents 1.0 specification.

This is the main request object that encapsulates all information required to trigger
document generation and delivery through the Output Management service. It follows the
document generation and delivery through the Agent Output Tools service. It follows the
CloudEvents specification for event-driven architectures.

Attributes:
Expand All @@ -541,13 +541,13 @@ class OutputRequest(BaseModel):

Example:
```python
from sap_cloud_sdk.outputmanagement._models import (
from sap_cloud_sdk.agentoutputtools._models import (
OutputRequest,
OutputRequestData,
OutputManagementInfo,
EmailConfiguration
)
from sap_cloud_sdk.outputmanagement.constants import Channel
from sap_cloud_sdk.agentoutputtools.constants import Channel

# Create email configuration
email_config = EmailConfiguration(
Expand Down Expand Up @@ -771,7 +771,7 @@ class Config:
class OutputResponse(BaseModel):
"""Output response wrapper.

Response object for Output Management service operations.
Response object for Agent Output Tools service operations.
Contains the request identifier or error information.
"""

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Output Management service client implementation."""
"""Agent Output Tools client implementation."""

import base64
import logging
Expand Down Expand Up @@ -27,8 +27,8 @@
logger = logging.getLogger(__name__)


class OutputManagementServiceClient:
"""Service client for Output Management.
class AgentOutputToolsServiceClient:
"""Service client for Agent Output Tools.

Handles low-level HTTP communication, authentication (OAuth with mTLS),
certificate management, and request/response processing.
Expand Down Expand Up @@ -61,10 +61,10 @@ def __init__(
f"Loaded SENDER_PROVIDER_SUBACCOUNT_ID: {self._sender_provider_subaccount_id}"
)

logger.info(f"Initialized Output Management Service client for {base_url}")
logger.info(f"Initialized Agent Output Tools Service client for {base_url}")

def send_output_request(self, output_request: OutputRequest) -> OutputResponse:
"""Send an output request to the Output Management service.
"""Send an output request to the Agent Output service.

Args:
output_request: The output request to submit
Expand Down
Loading