Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/finbourne/workflow-sdk-csharp
https://github.com/finbourne/workflow-sdk-csharp
Last synced: 22 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/finbourne/workflow-sdk-csharp
- Owner: finbourne
- License: mit
- Created: 2023-11-02T11:45:11.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-22T11:23:35.000Z (8 months ago)
- Last Synced: 2024-05-22T12:35:37.675Z (8 months ago)
- Language: C#
- Size: 847 KB
- Stars: 0
- Watchers: 7
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: docs/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
![LUSID_by_Finbourne](./resources/Finbourne_Logo_Teal.svg)
# C# SDK for the FINBOURNE Workflow API
## Contents
- [Summary](#summary)
- [Versions](#versions)
- [Requirements](#requirements)
- [Installation](#installation)
- [Getting Started](#getting-started)
* [Environment variables](#environment-variables)
* [Secrets file](#secrets-file)
* [Example](#example)
- [Endpoints and models](#endpoints-and-models)## Summary
This is the C# SDK for the FINBOURNE Workflow API, part of the [LUSID by FINBOURNE](https://www.finbourne.com/lusid-technology) platform. To use it you'll need a LUSID account - [sign up for free at lusid.com](https://www.lusid.com/app/signup).
Workflow provides functionality for automating the LUSID platform - see https://support.lusid.com/knowledgebase/article/KA-02181/ to learn more.
For more details on other applications in the LUSID platform, see [Understanding all the applications in the LUSID platform](https://support.lusid.com/knowledgebase/article/KA-01787).
This sdk supports `Production`, `Early Access`, `Beta` and `Experimental` API endpoints. For more details on API endpoint categories, see [What is the LUSID feature release lifecycle](https://support.lusid.com/knowledgebase/article/KA-01786). To find out which category an API endpoint falls into, see the [swagger page](https://fbn-prd.lusid.com/workflow/swagger/index.html).
This code is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
## Versions
- API version: 0.1.1359
- SDK version: 2.0.0## Requirements
- net6.0+
## Installation
The NuGet package for the FINBOURNE Workflow API SDK can installed from https://www.nuget.org/packages/Finbourne.Workflow.Sdk using the following
```
$ dotnet add package Finbourne.Workflow.Sdk
```## Getting Started
You'll need to provide some configuration to connect to the FINBOURNE Workflow API - see the articles about [short-lived access tokens](https://support.lusid.com/knowledgebase/article/KA-01654) and a [long-lived Personal Access Token](https://support.lusid.com/knowledgebase/article/KA-01774). This configuration can be provided using a secrets file or environment variables.
For some configuration it is also possible to override the global configuration at the ApiFactory level, or at the request level. For the set of configuration which can be overridden, please see [ConfigurationOptions](sdk/Finbourne.Workflow.Sdk/Extensions/ConfigurationOptions.cs). For a code illustration of this configuration being overridden, please see the [example](#example).
### Environment variables
Required for a short-lived access token
```
FBN_TOKEN_URL
FBN_WORKFLOW_URL
FBN_USERNAME
FBN_PASSWORD
FBN_CLIENT_ID
FBN_CLIENT_SECRET
```Required for a long-lived access token
```
FBN_WORKFLOW_URL
FBN_ACCESS_TOKEN
```You can send your requests to the FINBOURNE Workflow API via a proxy, by setting `FBN_PROXY_ADDRESS`. If your proxy has basic auth enabled, you must also set `FBN_PROXY_USERNAME` and `FBN_PROXY_PASSWORD`.
Other optional configuration
```bash
# the sdk client timeout in milliseconds, the default is 1800000 (30 minutes)
# values must be between 1 and 2147483647
# please note - the chances of seeing a network issue increases with the duration of the request
# for this reason, rather than increasing the timeout, it will be more reliable to use an alternate polling style endpoint where these exist
FBN_TIMEOUT_MS
# the retries when being rate limited, the default is 2
FBN_RATE_LIMIT_RETRIES
```### Secrets file
The secrets file must be in the current working directory. By default the SDK looks for a secrets file called `secrets.json`
Required for a short-lived access token
```json
{
"api":
{
"tokenUrl":"",
"workflowUrl":"https://.lusid.com/workflow",
"username":"",
"password":"",
"clientId":"",
"clientSecret":""
}
}
```Required for a long-lived access token
```json
{
"api":
{
"workflowUrl":"https://.lusid.com/workflow",
"accessToken":""
}
}
```You can send your requests to the FINBOURNE Workflow API via a proxy, by adding a proxy section. If your proxy has basic auth enabled, you must also supply a `username` and `password` in this section.
```json
{
"api":
{
"workflowUrl":"https://.lusid.com/workflow",
"accessToken":""
},
"proxy":
{
"address":"",
"username":"",
"password":""
}
}
```Other optional configuration
```javascript
{
"api":
{
// the sdk client timeout in milliseconds, the default is 1800000 (30 minutes)
// values must be between 1 and 2147483647
// please note - the chances of seeing a network issue increases with the duration of the request
// for this reason, rather than increasing the timeout, it will be more reliable to use an alternate polling style endpoint where these exist
"timeoutMs":"",
// the retries when being rate limited, the default is 2
"rateLimitRetries":
}
}
```### Example
```csharp
using System.Collections.Generic;
using Finbourne.Workflow.Sdk.Api;
using Finbourne.Workflow.Sdk.Client;
using Finbourne.Workflow.Sdk.Extensions;
using Finbourne.Workflow.Sdk.Model;
using Newtonsoft.Json;namespace Examples
{
public static class Program
{
public static void Main()
{
var secretsFilename = "secrets.json";
var path = Path.Combine(Directory.GetCurrentDirectory(), secretsFilename);
// Replace with the relevant values
File.WriteAllText(
path,
@"{
""api"": {
""tokenUrl"": """",
""workflowUrl"": ""https://.lusid.com/workflow"",
""username"": """",
""password"": """",
""clientId"": """",
""clientSecret"": """"
}
}");// uncomment the below to use configuration overrides
// var opts = new ConfigurationOptions();
// opts.TimeoutMs = 30_000;// uncomment the below to use an api factory with overrides
// var apiInstance = ApiFactoryBuilder.Build(secretsFilename, opts: opts).Api();var apiInstance = ApiFactoryBuilder.Build(secretsFilename).Api();
var id = "id_example"; // string | The Action Idtry
{
// uncomment the below to set overrides at the request level
// ActionLog result = apiInstance.GetActionLogs(id, opts: opts);// [EXPERIMENTAL] GetActionLogs: Get the Action Logs for an Action Id
ActionLog result = apiInstance.GetActionLogs(id);
Console.WriteLine(JsonConvert.SerializeObject(result, Formatting.Indented));
}
catch (ApiException e)
{
Console.WriteLine("Exception when calling ActionLogsApi.GetActionLogs: " + e.Message);
Console.WriteLine("Status Code: " + e.ErrorCode);
Console.WriteLine(e.StackTrace);
}
}
}
}
```## Endpoints and models
- See [Documentation for API Endpoints](sdk/README.md#documentation-for-api-endpoints) for a description of each endpoint
- See [Documentation for Models](sdk/README.md#documentation-for-models) for descriptions of the models used