# finbourne/lusid-sdk-python architecture

> Architecture diagram of the GitHub repository finbourne/lusid-sdk-python, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/finbourne/lusid-sdk-python
- Repository: https://github.com/finbourne/lusid-sdk-python

## Overview

The repository is a Python SDK for calling the LUSID investment-management API, not the platform’s server-side implementation. Its main workflow is to configure a client, build a domain API wrapper, make an endpoint request, and receive a decoded response. The README documents broad portfolio, accounting, market-data, order, compliance, and related capabilities; these appear here as API surfaces rather than inferred server-side processing stages. Source excerpts show the factory/client pattern and endpoint request handling; unsampled API families are represented by their exact paths, with only documented general wiring shown.

Main entry points: [`sdk/lusid/api_client.py`](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api_client.py) (API client), [`sdk/lusid/extensions/api_client_factory.py`](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/api_client_factory.py) (Client factory), [`sdk/lusid/extensions/rest.py`](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/rest.py) (REST transport), [`sdk/lusid/api/transaction_portfolios_api.py`](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/transaction_portfolios_api.py) (Portfolio APIs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client setup"]
  node_factory["Client factory"]
  node_config["Configuration"]
  node_loaders["Config loaders"]
end

subgraph group_domains["Domain APIs"]
  node_portfolio["Portfolio APIs"]
  node_accounting["Accounting APIs<br/>[abor_api.py]"]
  node_market["Market data APIs<br/>[quotes_api.py]"]
  node_orders["Order APIs<br/>[orders_api.py]"]
  node_compliance["Compliance APIs<br/>[compliance_api.py]"]
  node_reconciliation["Reconciliation APIs"]
  node_analytics["Analytics APIs<br/>[aggregation_api.py]"]
  node_reference["Reference data APIs<br/>[instruments_api.py]"]
  node_funds["Fund APIs<br/>[funds_api.py]"]
end

subgraph group_models["Request models"]
  node_querymodel["Cash-flow query"]
  node_transactionmodel["Transaction query"]
end

subgraph group_transport["HTTP transport"]
  node_api_client["API client<br/>[api_client.py]"]
  node_rest["REST transport<br/>[rest.py]"]
  node_retry["Retry handling<br/>[retry.py]"]
end

node_engineer(("SDK user"))
node_lusid{{"LUSID API"}}

node_engineer -->|"configures client"| node_factory
node_factory -->|"loads settings"| node_loaders
node_factory -->|"builds configuration"| node_config
node_factory -->|"creates client"| node_api_client
node_engineer -->|"calls endpoint"| node_portfolio
node_engineer -->|"calls endpoint"| node_accounting
node_engineer -->|"calls endpoint"| node_market
node_engineer -->|"calls endpoint"| node_orders
node_engineer -->|"calls endpoint"| node_compliance
node_engineer -->|"calls endpoint"| node_reconciliation
node_engineer -->|"calls endpoint"| node_analytics
node_engineer -->|"calls endpoint"| node_reference
node_engineer -->|"calls endpoint"| node_funds
node_portfolio -->|"sends request"| node_api_client
node_accounting -->|"sends request"| node_api_client
node_market -->|"sends request"| node_api_client
node_orders -->|"sends request"| node_api_client
node_compliance -->|"sends request"| node_api_client
node_reconciliation -->|"sends request"| node_api_client
node_analytics -->|"sends request"| node_api_client
node_reference -->|"sends request"| node_api_client
node_funds -->|"sends request"| node_api_client
node_portfolio -->|"accepts query model"| node_transactionmodel
node_analytics -->|"accepts query model"| node_querymodel
node_api_client -->|"dispatches HTTP"| node_rest
node_rest -->|"sends request"| node_lusid
node_lusid -->|"returns response"| node_rest
node_rest -->|"returns data"| node_api_client

click node_factory "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/api_client_factory.py"
click node_config "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/api_configuration.py"
click node_loaders "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/configuration_loaders.py"
click node_portfolio "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/transaction_portfolios_api.py"
click node_accounting "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/abor_api.py"
click node_market "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/quotes_api.py"
click node_orders "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/orders_api.py"
click node_compliance "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/compliance_api.py"
click node_reconciliation "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/reconciliations_api.py"
click node_analytics "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/aggregation_api.py"
click node_reference "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/instruments_api.py"
click node_funds "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/funds_api.py"
click node_querymodel "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/models/query_bucketed_cash_flows_request.py"
click node_transactionmodel "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/models/transaction_query_parameters.py"
click node_api_client "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api_client.py"
click node_rest "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/rest.py"
click node_retry "https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/retry.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_factory,node_config,node_loaders,node_engineer toneBlue
class node_portfolio,node_accounting,node_market,node_orders,node_compliance,node_reconciliation,node_analytics,node_reference,node_funds toneAmber
class node_querymodel,node_transactionmodel,node_lusid toneMint
class node_api_client,node_rest,node_retry toneRose
```

## Components

### Client setup

- [Client factory](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/api_client_factory.py): `sdk/lusid/extensions/api_client_factory.py`
- [Configuration](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/api_configuration.py): `sdk/lusid/extensions/api_configuration.py`
- [Config loaders](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/configuration_loaders.py): `sdk/lusid/extensions/configuration_loaders.py`

### Domain APIs

- [Portfolio APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/transaction_portfolios_api.py): `sdk/lusid/api/transaction_portfolios_api.py`
- [Accounting APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/abor_api.py): `sdk/lusid/api/abor_api.py`
- [Market data APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/quotes_api.py): `sdk/lusid/api/quotes_api.py`
- [Order APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/orders_api.py): `sdk/lusid/api/orders_api.py`
- [Compliance APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/compliance_api.py): `sdk/lusid/api/compliance_api.py`
- [Reconciliation APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/reconciliations_api.py): `sdk/lusid/api/reconciliations_api.py`
- [Analytics APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/aggregation_api.py): `sdk/lusid/api/aggregation_api.py`
- [Reference data APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/instruments_api.py): `sdk/lusid/api/instruments_api.py`
- [Fund APIs](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api/funds_api.py): `sdk/lusid/api/funds_api.py`

### Request models

- [Cash-flow query](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/models/query_bucketed_cash_flows_request.py): `sdk/lusid/models/query_bucketed_cash_flows_request.py`
- [Transaction query](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/models/transaction_query_parameters.py): `sdk/lusid/models/transaction_query_parameters.py`

### HTTP transport

- [API client](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/api_client.py): `sdk/lusid/api_client.py`
- [REST transport](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/rest.py): `sdk/lusid/extensions/rest.py`
- [Retry handling](https://github.com/finbourne/lusid-sdk-python/blob/main/sdk/lusid/extensions/retry.py): `sdk/lusid/extensions/retry.py`

### Other components

- **SDK user**
- **LUSID API**

## Connections

- SDK user → Client factory: configures client
- Client factory → Config loaders: loads settings
- Client factory → Configuration: builds configuration
- Client factory → API client: creates client
- SDK user → Portfolio APIs: calls endpoint
- SDK user → Accounting APIs: calls endpoint
- SDK user → Market data APIs: calls endpoint
- SDK user → Order APIs: calls endpoint
- SDK user → Compliance APIs: calls endpoint
- SDK user → Reconciliation APIs: calls endpoint
- SDK user → Analytics APIs: calls endpoint
- SDK user → Reference data APIs: calls endpoint
- SDK user → Fund APIs: calls endpoint
- Portfolio APIs → API client: sends request
- Accounting APIs → API client: sends request
- Market data APIs → API client: sends request
- Order APIs → API client: sends request
- Compliance APIs → API client: sends request
- Reconciliation APIs → API client: sends request
- Analytics APIs → API client: sends request
- Reference data APIs → API client: sends request
- Fund APIs → API client: sends request
- Portfolio APIs → Transaction query: accepts query model
- Analytics APIs → Cash-flow query: accepts query model
- API client → REST transport: dispatches HTTP
- REST transport → LUSID API: sends request
- LUSID API → REST transport: returns response
- REST transport → API client: returns data
