tokenised_fund.asseto.offchain_api

Documentation for eth_defi.tokenised_fund.asseto.offchain_api Python module.

Read public Asseto product metadata from its web-application API.

Asseto’s website exposes product information through an undocumented JSON API. The API is useful for discovering current product descriptions, displayed TVL and APY, but it is not a versioned developer interface. Use on-chain token supply and Pricer contracts for canonical valuation.

The public endpoints used here are:

  • GET /api/home/products — product registry

  • GET /api/product/get — detailed product description

  • GET /api/product/price/list — displayed historical price series

Reference: https://asseto.finance/product

Module Attributes

ASSETO_API_BASE_URL

Asseto web-application API origin.

ASSETO_API_SUCCESS_CODE

Asseto API success code returned in JSON envelopes.

DEFAULT_ASSETO_API_TIMEOUT

Timeout for a public Asseto API request.

ASSETO_PARTNER_ORGANISATIONS_BY_LOGO_URL

Partner organisation names resolved from the public product API's logo URLs.

Functions

fetch_asseto_price_history(product_id[, ...])

Fetch Asseto's public display-price history for one product.

fetch_asseto_product_detail(product_name[, ...])

Fetch the richer public description for an Asseto product.

fetch_asseto_product_roles(product_name[, ...])

Fetch partner roles for a public Asseto product.

fetch_asseto_products([api_base_url, timeout])

Fetch public EVM product metadata from Asseto's application registry.

Classes

AssetoOffchainProduct

An EVM Asseto product from the public product registry.

AssetoPricePoint

One Asseto display-price history observation.

AssetoProductDetail

Detailed public metadata for one Asseto EVM product.

AssetoRoleInfo

One Asseto product partner role from the public application API.

Exceptions

AssetoAPIError

Raised when the public Asseto application API returns an error.

ASSETO_API_BASE_URL = 'https://asseto.finance'

Asseto web-application API origin.

ASSETO_API_SUCCESS_CODE = 10000

Asseto API success code returned in JSON envelopes.

DEFAULT_ASSETO_API_TIMEOUT = 20.0

Timeout for a public Asseto API request.

ASSETO_PARTNER_ORGANISATIONS_BY_LOGO_URL: dict[str, str] = {'https://static.asseto.finance/asseto/2025-12-25/df750zdneb1gfnxhyx.png': 'Mourant', 'https://static.asseto.finance/asseto/2026-02-01/dg392jckx5iud6zpxg.svg': 'CMS Asset Management (HK)', 'https://static.asseto.finance/asseto/2026-02-01/dg3ccuy5kq0icjvmb1.svg': 'Ogier', 'https://static.asseto.finance/asseto/2026-02-01/dg3m1sh2qakpuofuls.svg': 'Ogier', 'https://static.asseto.finance/asseto/2026-02-25/dgnvdq14496mckrjjs.svg': 'Four Seasons', 'https://static.asseto.finance/asseto/2026-03-19/dh6vej2bje9qdnvcrx.svg': 'DL Holdings', 'https://static.asseto.finance/asseto/2026-03-19/dh6vernck42mtc73wr.svg': 'Vistra', 'https://static.asseto.finance/asseto/2026-03-19/dh6vf4e5plwyumvdew.svg': 'Howse Williams', 'https://static.asseto.finance/asseto/2026-03-19/dh6virggiynbuf4t21.svg': 'CMS Asset Management (HK)', 'https://static.asseto.finance/asseto/2026-03-19/dh6vislm02h0udjoml.svg': 'CMS Asset Management (HK)', 'https://static.asseto.finance/asseto/2026-03-19/dh6viwd1w5vga7fyow.svg': 'Guotai Haitong Securities', 'https://static.asseto.finance/asseto/2026-03-19/dh6viy5gpe9osnj3uv.svg': 'DBS', 'https://static.asseto.finance/asseto/2026-04-28/di4nd2gbtx2fdogdvq.svg': 'JunHe LLP', 'https://static.asseto.finance/asseto/2026-04-28/di4ney6lbp8nncbmog.svg': 'Ogier', 'https://static.asseto.finance/asseto/2026-04-28/di4nfht721exvtcnfh.svg': 'Ogier', 'https://static.asseto.finance/asseto/2026-04-29/di5d7fnwts858eqeen.svg': 'Bank of Communications Trustee Limited', 'https://static.asseto.finance/asseto/2026-04-29/di5didybcyuypabu83.svg': 'DFZQ / Orient Securities International', 'https://static.asseto.finance/asseto/250918/dcvw2q0pbabijptu6r.svg': 'Komainu', 'https://static.asseto.finance/asseto/250918/dcvw451g68jhrw7ibq.png': 'Harneys', 'https://static.asseto.finance/asseto/3_883aeba6-19b2-493f-afe7-196465dd3727_1740491891.svg': 'Komainu', 'https://static.asseto.finance/asseto/3_894f868c-1d82-4720-a6bf-3eaf66abf513_1741070229.svg': 'Komainu', 'https://static.asseto.finance/asseto/3_a6d22914-27ef-43de-8820-6dd6e6ded69a_1740491887.svg': 'China CITIC Bank International', 'https://static.asseto.finance/asseto/3_fc850198-10cb-4bf6-ac0b-443407985e31_1741070226.svg': 'China CITIC Bank International'}

Partner organisation names resolved from the public product API’s logo URLs.

Asseto exposes a partner role and logo URL, but not a text organisation name. These mappings are deliberately exact so an unrecognised or changed logo is surfaced as None instead of being guessed.

exception AssetoAPIError

Bases: RuntimeError

Raised when the public Asseto application API returns an error.

__init__(*args, **kwargs)
__new__(**kwargs)
add_note(note, /)

Add a note to the exception

with_traceback(tb, /)

Set self.__traceback__ to tb and return self.

class AssetoOffchainProduct

Bases: object

An EVM Asseto product from the public product registry.

The Asseto registry also has XRPL products. Those are intentionally omitted because this integration is for EVM VaultBase adapters.

Variables
  • product_id – Asseto’s off-chain product identifier.

  • product_name – Product key required by the detail endpoint’s productName header.

  • contract_address – Token contract address used for matching an EVM vault adapter.

product_id: int

Asseto’s off-chain product identifier.

product_name: str

Product key used in API request headers.

full_name: Optional[str]

Human-readable product name.

symbol: Optional[str]

Token symbol.

product_type: Optional[str]

Asseto product category, such as uda or stoken.

chain_id: int

EVM chain id hosting the token.

chain_name: Optional[str]

Human-readable EVM chain name.

contract_address: eth_typing.evm.HexAddress

Token contract address.

denomination_symbol: Optional[str]

Product denomination token symbol.

denomination_address: Optional[eth_typing.evm.HexAddress]

Product denomination token address.

tvl: Optional[decimal.Decimal]

Asseto-displayed total value locked in the denomination.

apy: Optional[decimal.Decimal]

Asseto-displayed annual percentage yield as a percentage.

introduction: Optional[str]

Short product introduction.

protocol: Optional[str]

Product protocol and legal disclosure text.

__init__(product_id, product_name, full_name, symbol, product_type, chain_id, chain_name, contract_address, denomination_symbol, denomination_address, tvl, apy, introduction, protocol)
Parameters
Return type

None

class AssetoProductDetail

Bases: object

Detailed public metadata for one Asseto EVM product.

Variables
  • product – Product metadata normalised from the detail response.

  • description – Long-form product description supplied by Asseto.

  • price – Latest displayed NAV/share. It is informational only; use the product’s on-chain Pricer for scanner valuation.

product: eth_defi.tokenised_fund.asseto.offchain_api.AssetoOffchainProduct

Product metadata normalised from the detail response.

description: Optional[str]

Long-form product description.

price: Optional[decimal.Decimal]

Informational displayed NAV/share.

price_24h: Optional[decimal.Decimal]

Informational displayed price change over 24 hours.

apy_calculation_method: Optional[str]

Asseto’s method label for the displayed APY.

__init__(product, description, price, price_24h, apy_calculation_method)
Parameters
Return type

None

class AssetoRoleInfo

Bases: object

One Asseto product partner role from the public application API.

Asseto uses a role label and a logo URL for partner information. The application does not export a textual organisation name, so organisation_name is resolved only for known official logo assets.

Variables
  • role – Asseto partner role, such as Investment Manager or Investment Advisor.

  • organisation_name – Organisation resolved from the official Asseto logo asset, or None when the logo is unknown.

  • logo_url – Asseto-hosted partner logo URL used for the resolution.

role: str

Asseto’s role label for the partner.

organisation_name: Optional[str]

Organisation name resolved from the logo, when known.

logo_url: str

Asseto-hosted partner logo asset.

__init__(role, organisation_name, logo_url)
Parameters
Return type

None

class AssetoPricePoint

Bases: object

One Asseto display-price history observation.

Variables
  • timestamp – Unix timestamp in seconds.

  • value – Displayed NAV/share value in the product denomination.

timestamp: int

Unix timestamp in seconds.

value: decimal.Decimal

Displayed NAV/share value.

__init__(timestamp, value)
Parameters
Return type

None

fetch_asseto_products(api_base_url='https://asseto.finance', timeout=20.0)

Fetch public EVM product metadata from Asseto’s application registry.

This is an undocumented application endpoint and its response schema may change without notice. It is suitable for optional discovery and descriptions, not for canonical TVL or NAV calculations.

Parameters
  • api_base_url (str) – Asseto application API origin. Override in tests only.

  • timeout (float) – HTTP request timeout in seconds.

Returns

Iterator over parseable EVM product records.

Raises

AssetoAPIError – If the public endpoint returns an invalid response envelope.

Return type

collections.abc.Iterator[eth_defi.tokenised_fund.asseto.offchain_api.AssetoOffchainProduct]

fetch_asseto_product_detail(product_name, api_base_url='https://asseto.finance', timeout=20.0)

Fetch the richer public description for an Asseto product.

The application requires the registry product key in a productName request header. Products without a parseable EVM address return None.

Parameters
  • product_name (str) – Registry product key, for example "AoABT".

  • api_base_url (str) – Asseto application API origin. Override in tests only.

  • timeout (float) – HTTP request timeout in seconds.

Returns

Public product detail, or None for a non-EVM/malformed product.

Raises

AssetoAPIError – If the public endpoint returns an invalid response envelope.

Return type

Optional[eth_defi.tokenised_fund.asseto.offchain_api.AssetoProductDetail]

fetch_asseto_product_roles(product_name, api_base_url='https://asseto.finance', timeout=20.0)

Fetch partner roles for a public Asseto product.

The application API only supplies role labels and logo URLs. This helper resolves a textual organisation name from Asseto’s known official logo assets, retaining unknown assets as None rather than inferring them. See https://asseto.finance/product for the source application.

Parameters
  • product_name (str) – Registry product key, for example "AoABT".

  • api_base_url (str) – Asseto application API origin. Override in tests only.

  • timeout (float) – HTTP request timeout in seconds.

Returns

Iterator over well-formed public partner roles in API response order.

Raises

AssetoAPIError – If the public endpoint returns an invalid response envelope.

Return type

collections.abc.Iterator[eth_defi.tokenised_fund.asseto.offchain_api.AssetoRoleInfo]

fetch_asseto_price_history(product_id, days=365, api_base_url='https://asseto.finance', timeout=20.0)

Fetch Asseto’s public display-price history for one product.

This feed is informational and can be incomplete; callers must not use it in place of the on-chain NAV source used by AssetoVault.

Parameters
  • product_id (int) – Asseto registry product identifier.

  • days (int) – Requested lookback period. Asseto currently serves a one-year history for AoABT.

  • api_base_url (str) – Asseto application API origin. Override in tests only.

  • timeout (float) – HTTP request timeout in seconds.

Returns

Iterator over parseable price observations, sorted by API response order.

Raises

AssetoAPIError – If the public endpoint returns an invalid response envelope.

Return type

collections.abc.Iterator[eth_defi.tokenised_fund.asseto.offchain_api.AssetoPricePoint]