Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

FINBOURNE Java SDK

FINBOURNE Java SDK for accessing LUSID and related APIs.

Requirements

  • Java 21+
  • Maven 3.8.3+ or Gradle 7.2+

Installation

Maven

<dependency>
<groupId>com.finbourne.sdk</groupId>
<artifactId>finbourne.sdk</artifactId>
<version>0.0.49</version>
</dependency>

Gradle

implementation "com.finbourne.sdk:finbourne.sdk:0.0.49"

Authentication

The SDK supports two authentication methods: short-lived OAuth2 tokens (username/password + client credentials) and long-lived Personal Access Tokens.

Configuration is loaded from a secrets.json file or from environment variables. The SDK tries the secrets file first, then falls back to environment variables.

Secrets file

Create a secrets.json file with profiles:

Using OAuth2 credentials:

{
"profiles": {
"default": {
"tokenUrl": "https://<your-domain>.lusid.com/oauth2/token",
"baseUrl": "https://<your-domain>.lusid.com/api",
"username": "<your-username>",
"password": "<your-password>",
"clientId": "<your-client-id>",
"clientSecret": "<your-client-secret>"
}
}
}

Using a Personal Access Token:

{
"profiles": {
"default": {
"baseUrl": "https://<your-domain>.lusid.com/api",
"accessToken": "<your-access-token>"
}
}
}

Environment variables

VariableDescription
FBN_TOKEN_URLOAuth2 token endpoint
FBN_BASE_URLAPI base URL (required)
FBN_USERNAMEOAuth2 username
FBN_PASSWORDOAuth2 password
FBN_CLIENT_IDOAuth2 client ID
FBN_CLIENT_SECRETOAuth2 client secret
FBN_ACCESS_TOKENPersonal Access Token (alternative to OAuth2)

Optional configuration:

VariableDefaultDescription
FBN_TOTAL_TIMEOUT_MS1800000Total request timeout (ms)
FBN_CONNECT_TIMEOUT_MS30000Connection timeout (ms)
FBN_READ_TIMEOUT_MS30000Read timeout (ms)
FBN_WRITE_TIMEOUT_MS30000Write timeout (ms)
FBN_RATE_LIMIT_RETRIES2Retries on HTTP 429

Getting Started

Basic usage with a secrets file

importcom.finbourne.sdk.extensions.ApiFactory;
importcom.finbourne.sdk.extensions.ApiFactoryBuilder;
importcom.finbourne.sdk.services.lusid.api.PortfoliosApi;
importcom.finbourne.sdk.services.lusid.model.ResourceListOfPortfolio;
publicclassExample {
publicstaticvoidmain(String[] args) throwsException {
// Build a factory from a secrets fileApiFactoryfactory = newApiFactoryBuilder()
.withConfigurationFile("secrets.json")
.build();
// Create an API instancePortfoliosApiportfoliosApi = factory.build(PortfoliosApi.class);
// Make a requestResourceListOfPortfolioportfolios = portfoliosApi.listPortfoliosForScope("my-scope")
.execute();
System.out.println("Found " + portfolios.getValues().size() + " portfolios");
}
}

Using a named profile

ApiFactoryfactory = newApiFactoryBuilder()
.withConfigurationFile("secrets.json")
.withProfileName("production")
.build();

Using environment variables

// Reads FBN_* environment variables automatically when no secrets file is providedApiFactoryfactory = newApiFactoryBuilder().build();

Overriding timeouts

importcom.finbourne.sdk.core.config.ConfigurationOptions;
ConfigurationOptionsopts = newConfigurationOptions();
opts.setTotalTimeoutMs(30000);
opts.setConnectTimeoutMs(5000);
ApiFactoryfactory = newApiFactoryBuilder()
.withConfigurationFile("secrets.json")
.withConfigurationOptions(opts)
.build();

Documentation

Refer to the docs folder for API endpoint and model documentation.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages