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
91 changes: 91 additions & 0 deletions .codeboarding/Delivery API Interface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
```mermaid
graph LR
DeliveryApiClient["DeliveryApiClient"]
DeliveryDataModels["DeliveryDataModels"]
DecisioningEngine["DecisioningEngine"]
SDKCore["SDKCore"]
SDKTools["SDKTools"]
SDKCore -- "Initiates API calls" --> DeliveryApiClient
SDKCore -- "Configures API client" --> DeliveryApiClient
DeliveryApiClient -- "Serializes/Deserializes" --> DeliveryDataModels
DeliveryApiClient -- "Uses for request/response structures" --> DeliveryDataModels
SDKCore -- "Constructs requests using" --> DeliveryDataModels
SDKCore -- "Processes responses from" --> DeliveryDataModels
DecisioningEngine -- "Constructs notifications using" --> DeliveryDataModels
DecisioningEngine -- "Validates requests using" --> DeliveryDataModels
SDKTools -- "Creates instances of" --> DeliveryDataModels
SDKTools -- "Manipulates" --> DeliveryDataModels
SDKCore -- "Leverages for internal decisioning" --> DecisioningEngine
DecisioningEngine -- "Utilizes helper functions from" --> SDKTools
```
[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/GeneratedOnBoardings)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/demo)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org)

## Component Details

The `target-python-sdk` provides a comprehensive interface for interacting with the Adobe Target Delivery API. It orchestrates the process of constructing and sending delivery requests, handling API responses, and performing client-side decisioning. The SDK leverages dedicated components for managing network communication, defining data structures, and implementing decisioning logic, ensuring efficient and structured interaction with the Adobe Target service.

### DeliveryApiClient
This component is responsible for all network communication with the Adobe Target Delivery API. It manages the underlying HTTP requests, handles API configuration, processes responses, and deals with various API-related exceptions, acting as the primary interface for sending and receiving data from the Target service. It also handles request serialization, response deserialization, and error handling for network communication.


**Related Classes/Methods**:

- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/api/delivery_api.py#L27-L209" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.api.delivery_api.DeliveryApi` (27:209)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/api_client.py#L39-L723" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.api_client.ApiClient` (39:723)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/rest.py#L50-L296" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.rest.RESTClientObject` (50:296)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/configuration.py#L39-L311" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.configuration.Configuration` (39:311)</a>
- `target-python-sdk.delivery_api_client.exceptions` (full file reference)


### DeliveryDataModels
This component defines the structured data models used for all requests and responses exchanged with the Adobe Target Delivery API. It provides the blueprints for various entities such as DeliveryRequest, DeliveryResponse, MboxResponse, Notification, and Context, ensuring consistent data formatting across the SDK and the API.


**Related Classes/Methods**:

- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/Model/delivery_request.py#L19-L463" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.Model.delivery_request.DeliveryRequest` (19:463)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/Model/delivery_response.py#L19-L300" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.Model.delivery_response.DeliveryResponse` (19:300)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/Model/mbox_response.py#L19-L252" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.Model.mbox_response.MboxResponse` (19:252)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/Model/notification.py#L19-L440" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.Model.notification.Notification` (19:440)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/Model/context.py#L19-L379" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.Model.context.Context` (19:379)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/Model/geo.py#L19-L286" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.Model.geo.Geo` (19:286)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/delivery_api_client/Model/visitor_id.py#L19-L204" target="_blank" rel="noopener noreferrer">`target-python-sdk.delivery_api_client.Model.visitor_id.VisitorId` (19:204)</a>


### DecisioningEngine
This component encapsulates the internal logic for processing and managing decisions within the Target Python SDK. It handles tasks such as adding and sending notifications, validating incoming requests, and mapping geographical data, often interacting with the Delivery Data Models to structure its operations.


**Related Classes/Methods**:

- <a href="https://github.com/adobe/target-python-sdk/blob/master/target_decisioning_engine/notification_provider.py#L29-L114" target="_blank" rel="noopener noreferrer">`target_decisioning_engine.notification_provider.NotificationProvider` (29:114)</a>
- `target_decisioning_engine.request_provider` (full file reference)
- <a href="https://github.com/adobe/target-python-sdk/blob/master/target_decisioning_engine/decision_provider.py#L60-L313" target="_blank" rel="noopener noreferrer">`target_decisioning_engine.decision_provider.DecisionProvider` (60:313)</a>
- <a href="https://github.com/adobe/target-python-sdk/blob/master/target_decisioning_engine/types/decision_provider_response.py#L14-L23" target="_blank" rel="noopener noreferrer">`target_decisioning_engine.types.decision_provider_response.DecisionProviderResponse` (14:23)</a>
- `target_decisioning_engine.geo_provider` (full file reference)


### SDKCore
This component represents the high-level interface and core orchestration logic of the Target Python SDK. It provides methods for initiating delivery requests, handling responses, and managing the overall interaction flow with the Target service, often leveraging helper functions for request construction and response processing.


**Related Classes/Methods**:

- `target_python_sdk.helper` (full file reference)
- `target_python_sdk.target` (full file reference)
- `target_python_sdk.TargetClient` (full file reference)


### SDKTools
This component provides a set of utility functions and helper classes that support various operations within the Target Python SDK. These tools assist in tasks such as creating structured response objects, managing properties, and general data manipulation, contributing to the overall functionality and ease of use of the SDK.


**Related Classes/Methods**:

- `target_tools.response_helpers` (full file reference)
- `target_tools.utils` (full file reference)




### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq)
174 changes: 174 additions & 0 deletions .codeboarding/Local Decisioning Core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
```mermaid
graph LR
DecisionProvider["DecisionProvider"]
RuleEvaluator["RuleEvaluator"]
AllocationProvider["AllocationProvider"]
ArtifactProvider["ArtifactProvider"]
GeoProvider["GeoProvider"]
ContextProvider["ContextProvider"]
RequestProvider["RequestProvider"]
TraceProvider["TraceProvider"]
NotificationProvider["NotificationProvider"]
PostProcessors["PostProcessors"]
DecisionProvider -- "uses" --> RuleEvaluator
DecisionProvider -- "sends to" --> NotificationProvider
DecisionProvider -- "uses" --> ContextProvider
RuleEvaluator -- "uses" --> ContextProvider
RuleEvaluator -- "uses" --> AllocationProvider
DecisionProvider -- "uses" --> PostProcessors
ArtifactProvider -- "uses" --> TraceProvider
ContextProvider -- "uses" --> GeoProvider
ArtifactProvider -- "uses" --> GeoProvider
```
[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/GeneratedOnBoardings)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/demo)[![Contact](https://img.shields.io/badge/Contact%20us%20-%20contact@codeboarding.org-lightgrey?style=flat-square)](mailto:contact@codeboarding.org)

## Component Details

The Local Decisioning Core encapsulates the essential logic for evaluating rules and making personalized content decisions directly within the application. It orchestrates the retrieval and management of decisioning artifacts, constructs various context objects from input data, and handles the tracing and dispatching of notifications and telemetry related to local decisions. This core subsystem ensures efficient and accurate content delivery based on predefined rules and real-time contextual information.

### DecisionProvider
Responsible for executing the core decisioning logic. It takes a delivery request, applies rules, and generates a decisioning response, handling both execute and prefetch requests. It also integrates with tracing and notification mechanisms.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.decision_provider.DecisionProvider` (60:313)
- `target_python_sdk.target_decisioning_engine.decision_provider.DecisionProvider:__init__` (full file reference)
- `target_python_sdk.target_decisioning_engine.decision_provider.DecisionProvider:_get_decisions` (full file reference)
- `target_python_sdk.target_decisioning_engine.decision_provider.DecisionProvider:_prepare_notification` (full file reference)
- `target_python_sdk.target_decisioning_engine.decision_provider.DecisionProvider:_get_execute_decisions` (full file reference)
- `target_python_sdk.target_decisioning_engine.decision_provider.DecisionProvider:_get_prefetch_decisions` (full file reference)
- `target_python_sdk.target_decisioning_engine.decision_provider.DecisionProvider:run` (full file reference)


### RuleEvaluator
Evaluates decisioning rules against the provided context. It processes individual rules and determines if they match the current request and context, often involving context creation and allocation computations.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.rule_evaluator.RuleEvaluator` (21:68)
- `target_python_sdk.target_decisioning_engine.rule_evaluator.RuleEvaluator:process_rule` (full file reference)


### AllocationProvider
Manages visitor ID generation and allocation computations. It ensures valid TNT IDs, creates UUIDs for new visitors, and calculates allocation based on memoized functions.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.allocation_provider` (full file reference)
- `target_python_sdk.target_decisioning_engine.allocation_provider:valid_tnt_id` (full file reference)
- `target_python_sdk.target_decisioning_engine.allocation_provider:get_or_create_visitor_id` (full file reference)
- `target_python_sdk.target_decisioning_engine.allocation_provider:_calculate_allocation` (full file reference)
- `target_python_sdk.target_decisioning_engine.allocation_provider:compute_allocation` (full file reference)


### ArtifactProvider
Manages the decisioning artifact, which contains the rules and other data needed for decisioning. It handles initialization, polling for updates, fetching artifacts, and providing tracing for artifact-related operations.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider` (53:231)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:__init__` (full file reference)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:_get_polling_interval` (full file reference)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:initialize` (full file reference)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:_fetch_and_schedule` (full file reference)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:resume_polling` (full file reference)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:_get_initial_artifact` (full file reference)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:_artifact_tracer_update` (full file reference)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:get_trace` (full file reference)
- `target_python_sdk.target_decisioning_engine.artifact_provider.ArtifactProvider:_fetch_artifact` (full file reference)


### GeoProvider
Provides geographical context information for decisioning.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.geo_provider.GeoProvider` (121:200)
- `target_python_sdk.target_decisioning_engine.geo_provider` (full file reference)


### ContextProvider
Responsible for creating various context objects (browser, URL, page, referring, geo, timing, and decisioning context) that are used during the decisioning process to evaluate rules.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.context_provider` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:get_lower_case_attributes` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:_create_browser_context` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:_create_url_context` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:create_page_context` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:create_referring_context` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:with_lowercase_string_values` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:create_mbox_context` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:create_geo_context` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:_create_timing_context` (full file reference)
- `target_python_sdk.target_decisioning_engine.context_provider:create_decisioning_context` (full file reference)


### RequestProvider
Validates and processes incoming delivery requests. It checks for valid visitor IDs and ensures the overall delivery request structure is correct before further processing.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.request_provider` (full file reference)
- `target_python_sdk.target_decisioning_engine.request_provider:get_customer_id` (full file reference)
- `target_python_sdk.target_decisioning_engine.request_provider:_no_ids` (full file reference)
- `target_python_sdk.target_decisioning_engine.request_provider:valid_visitor_id` (full file reference)
- `target_python_sdk.target_decisioning_engine.request_provider:valid_delivery_request` (full file reference)


### TraceProvider
Provides tracing capabilities for decisioning requests and artifact updates. It records details about request processing and rule evaluations to help in debugging and understanding the decision flow.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.trace_provider.TraceProvider` (33:83)
- `target_python_sdk.target_decisioning_engine.trace_provider.RequestTracer` (86:217)
- `target_python_sdk.target_decisioning_engine.trace_provider.ArtifactTracer` (220:261)
- `target_python_sdk.target_decisioning_engine.trace_provider.TraceProvider:__init__` (full file reference)
- `target_python_sdk.target_decisioning_engine.trace_provider.RequestTracer:trace_request` (full file reference)
- `target_python_sdk.target_decisioning_engine.trace_provider.RequestTracer:trace_rule_evaluated` (full file reference)
- `target_python_sdk.target_decisioning_engine.trace_provider.RequestTracer:get_trace_result` (full file reference)
- `target_python_sdk.target_decisioning_engine.trace_provider.ArtifactTracer:__init__` (full file reference)


### NotificationProvider
Handles the creation and sending of notifications and telemetry data. It allows adding individual notifications and telemetry entries, and then sending them as part of a delivery request.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.notification_provider.NotificationProvider` (29:114)
- `target_python_sdk.target_decisioning_engine.notification_provider.NotificationProvider:__init__` (full file reference)
- `target_python_sdk.target_decisioning_engine.notification_provider.NotificationProvider:add_notification` (full file reference)
- `target_python_sdk.target_decisioning_engine.notification_provider.NotificationProvider:add_telemetry_entry` (full file reference)
- `target_python_sdk.target_decisioning_engine.notification_provider.NotificationProvider:send_notifications` (full file reference)


### PostProcessors
Applies various post-processing steps to the decisioning responses, such as preparing execute and prefetch responses, adding response tokens, and replacing campaign macros within the content.


**Related Classes/Methods**:

- `target_python_sdk.target_decisioning_engine.post_processors` (full file reference)
- `target_python_sdk.target_decisioning_engine.post_processors:prepare_execute_response` (full file reference)
- `target_python_sdk.target_decisioning_engine.post_processors:prepare_prefetch_response` (full file reference)
- `target_python_sdk.target_decisioning_engine.post_processors:create_response_tokens_post_processor` (full file reference)
- `target_python_sdk.target_decisioning_engine.post_processors:add_campaign_macro_values` (full file reference)
- `target_python_sdk.target_decisioning_engine.post_processors:update_action_campaign_content` (full file reference)
- `target_python_sdk.target_decisioning_engine.post_processors:update_option_campaign_content` (full file reference)
- `target_python_sdk.target_decisioning_engine.post_processors:replace_campaign_macros` (full file reference)




### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq)
Loading