Portal Community

Node Config Fields

Every operation on this node accepts the same three top-level fields, plus operation-specific ones:

FieldTypeRequiredDescription
resourceselect✓ YesOne of assets, attestations, chains, limits, status, tickers. Defaults to assets.
operationselect✓ YesThe operation within that resource, e.g. getPrice. Defaults to getAllPrices.
credentialIDtext✓ YesVault reference to a stored Ondo API key. The node resolves this to a Bearer token at execution time — the key itself is never entered directly on the node.
apiBaseUrltextNoOverrides the Ondo API base URL. Defaults to https://api.ondo.finance. Useful for pointing at a sandbox/test environment.
Missing credential: If credentialID doesn't resolve to a usable API key, every call fails fast with AUTH_MISSING_KEY before any HTTP request is made — see Troubleshooting.

appsettings.json

The API base URL can also be set once for the whole application rather than per-node:

{
  "Ondo": {
    "ApiBaseUrl": "https://api.ondo.finance"
  }
}

AddDependenciesOndoServices(apiBaseUrl) reads this at startup and configures the underlying HttpClient's BaseAddress accordingly. If omitted, the client falls back to the production URL above.

HTTP Client Behavior

SettingValue
Request timeout30 seconds per request
Rate-limit retryUp to 3 retries on HTTP 429, exponential backoff (1s, 2s, 4s)
Connection pooling5-minute handler lifetime (SetHandlerLifetime)
AuthenticationAuthorization: Bearer <apiKey> on every request

Registration

OndoNodeExecutorDependency.RegisterDefaults(services) registers everything the node needs:

Host apps must also add an explicit registration call: alongside the standard DI registration, add new OndoNodeExecutorDependency().RegisterDefaults(services); to your node-plugin bootstrap (Plugins_RegisterAllNodes(...) in ServiceCollectionExtensionsForAI.cs) so the assembly is force-loaded and discoverable at runtime. Without this line the node type won't appear in the workflow designer even though the package is referenced.

Project Layout

The node ships as three .NET 9 projects:

Project Responsibility
BizFirst.Integration.Ondo.Domain Sealed result records and supporting models (prices, markets, balances, limits, statuses). Zero external dependencies.
BizFirst.Integration.Ondo.Services OndoApiClient (Bearer auth, retry, error mapping) and one service per resource (assets/attestations/chains/limits/status/tickers).
BizFirst.Ai.ExecutionNodes.Ondo The executor: operation routing, config parsing, per-operation validation, operation-info DTOs.

Error Code Reference

HTTP StatusError Code
400VALIDATION_ERROR
401AUTH_UNAUTHORIZED
403AUTH_FORBIDDEN (or MARKET_CLOSED for trading operations)
404RESOURCE_NOT_FOUND
429RATE_LIMIT_EXCEEDED (retried automatically before surfacing)
5xxSERVER_ERROR / SERVICE_UNAVAILABLE