Skip to content

Commit 3f1edf1

Browse files
2025.8.7 updates
1 parent a5573c9 commit 3f1edf1

File tree

59 files changed

+3290
-9
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+3290
-9
lines changed

.github/workflows/Nuget-publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
run: dotnet build -c Release
2727

2828
- name: Run Nuget pack
29-
run: dotnet pack -c Release --output artifacts
29+
run: dotnet pack -c Release -p:Nuspecfile=../LockstepApi.nuspec --output artifacts
3030

3131
- name: Upload Nuget package as artifact
3232
uses: actions/upload-artifact@v4
@@ -38,4 +38,4 @@ jobs:
3838

3939
- name: Push generated package to GitHub registry
4040
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
41-
run: nuget push *.nupkg -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{secrets.NUGET_API_KEY}}
41+
run: dotnet nuget push artifacts/*.nupkg --source 'https://api.nuget.org/v3/index.json' --api-key ${{secrets.NUGET_API_KEY}}

LockstepApi.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package >
33
<metadata>
44
<id>LockstepSdk</id>
5-
<version>2025.8.6</version>
5+
<version>2025.8.7</version>
66
<title>LockstepSdk</title>
77
<authors>Lockstep Network</authors>
88
<owners>Lockstep, Inc.</owners>
@@ -14,7 +14,7 @@
1414
<readme>docs/README.md</readme>
1515
<summary>Lockstep Platform SDK for CSharp</summary>
1616
<releaseNotes>
17-
# 2025.8.6
17+
# 2025.8.7
1818

1919
For full patch notes see [Patch Notes](https://medium.com/lockstep-developer/tagged/patch-notes) on the [Lockstep Developer website](https://developer.lockstep.io)
2020
</releaseNotes>

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ We use the [Query Invoices API](https://developer.lockstep.io/reference/v1_invoi
1414

1515
### Step 1: Install Lockstep SDK for C#
1616

17-
Before you start, make sure you [generated a valid API key](https://developer.lockstep.io/docs/api-keys) and saved it as an environment variable in your system (referred to as `LOCKSTEPAPI_SBX` in this example). That way, you'll have access to the server.
17+
Before you start, make sure you [generated a valid API key](https://developer.lockstep.io/docs/api-keys) and saved it as an environment variable in your system (referred to as `LOCKSTEPAPI_SANDBOX` in this example). That way, you'll have access to the server.
1818

1919
Create a new project folder with an empty `Program.cs` file inside it and add the SDK to your project:
2020

@@ -42,15 +42,15 @@ namespace LockstepExamples
4242
{
4343
public static async Task Main(string[] args)
4444
{
45-
var client = LockstepApi.WithEnvironment(LockstepEnv.SBX)
46-
.WithApiKey(Environment.GetEnvironmentVariable("LOCKSTEPAPI_SBX"));
45+
var client = LockstepApi.WithEnvironment(LockstepEnv.Sandbox)
46+
.WithApiKey(Environment.GetEnvironmentVariable("LOCKSTEPAPI_SANDBOX"));
4747

4848
// Test first API call
4949
var result = await client.Status.Ping();
5050
if (!result.Success || !result.Value.LoggedIn)
5151
{
5252
Console.WriteLine("Your API key is not valid.");
53-
Console.WriteLine("Please set the environment variable LOCKSTEPAPI_SBX and try again.");
53+
Console.WriteLine("Please set the environment variable LOCKSTEPAPI_SANDBOX and try again.");
5454
return;
5555
}
5656

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
/***
2+
* Lockstep Platform SDK for C#
3+
*
4+
* (c) 2021-2025 Lockstep, Inc.
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*
9+
* @author Lockstep Network <[email protected]>
10+
* @copyright 2021-2025 Lockstep, Inc.
11+
* @link https://github.com/Lockstep-Network/lockstep-sdk-csharp
12+
*/
13+
14+
15+
16+
using System;
17+
using System.Collections.Generic;
18+
using System.Net.Http;
19+
using System.Threading.Tasks;
20+
using LockstepSDK.Models;
21+
22+
23+
namespace LockstepSDK.Clients
24+
{
25+
/// <summary>
26+
/// API methods related to AttachmentLinks
27+
/// </summary>
28+
public class AttachmentLinksClient
29+
{
30+
private readonly LockstepApi _client;
31+
32+
/// <summary>
33+
/// Constructor
34+
/// </summary>
35+
public AttachmentLinksClient(LockstepApi client)
36+
{
37+
_client = client;
38+
}
39+
40+
/// <summary>
41+
/// Retrieves the Attachment Link with the provided Attachment Link identifier.
42+
///
43+
/// An Attachment Link is a link that associates one Attachment with one object within ADS Platform.
44+
///
45+
/// This route has been deprecated, use /Attachments
46+
///
47+
/// See [Extensibility](https://developer.lockstep.io/docs/extensibility) for more information.
48+
///
49+
/// </summary>
50+
/// <param name="attachmentId"></param>
51+
/// <param name="objectKey"></param>
52+
/// <param name="tableName"></param>
53+
[Obsolete("This endpoint is deprecated.")]
54+
public async Task<LockstepResponse<AttachmentLinkModel>> RetrieveAttachmentLink(Guid attachmentId, Guid objectKey, string tableName)
55+
{
56+
var url = $"/api/v1/AttachmentLinks";
57+
var options = new Dictionary<string, object>();
58+
options["attachmentId"] = attachmentId;
59+
options["objectKey"] = objectKey;
60+
options["tableName"] = tableName;
61+
return await _client.Request<AttachmentLinkModel>(HttpMethod.Get, url, options, null, null);
62+
}
63+
64+
/// <summary>
65+
/// Creates one Attachment Link from the provided arguments.
66+
///
67+
/// An Attachment Link is a link that associates one Attachment with one object within ADS Platform.
68+
///
69+
/// This route has been deprecated, use /Attachments
70+
///
71+
/// See [Extensibility](https://developer.lockstep.io/docs/extensibility) for more information.
72+
///
73+
/// </summary>
74+
/// <param name="body"></param>
75+
[Obsolete("This endpoint is deprecated.")]
76+
public async Task<LockstepResponse<AttachmentLinkModel[]>> UploadAttachment(AttachmentLinkModel[] body)
77+
{
78+
var url = $"/api/v1/AttachmentLinks";
79+
return await _client.Request<AttachmentLinkModel[]>(HttpMethod.Post, url, null, body, null);
80+
}
81+
82+
/// <summary>
83+
/// Delete the specified link between an object and its attachment.
84+
///
85+
/// An Attachment Link is a link that associates one Attachment with one object within ADS Platform.
86+
///
87+
/// This route has been deprecated, use /Attachments
88+
///
89+
/// See [Extensibility](https://developer.lockstep.io/docs/extensibility) for more information.
90+
///
91+
/// </summary>
92+
/// <param name="attachmentId"></param>
93+
/// <param name="objectKey"></param>
94+
/// <param name="tableName"></param>
95+
[Obsolete("This endpoint is deprecated.")]
96+
public async Task<LockstepResponse<DeleteResult>> DeleteAttachmentLink(Guid? attachmentId = null, Guid? objectKey = null, string tableName = null)
97+
{
98+
var url = $"/api/v1/AttachmentLinks";
99+
var options = new Dictionary<string, object>();
100+
if (attachmentId != null) { options["attachmentId"] = attachmentId; }
101+
if (objectKey != null) { options["objectKey"] = objectKey; }
102+
if (tableName != null) { options["tableName"] = tableName; }
103+
return await _client.Request<DeleteResult>(HttpMethod.Delete, url, options, null, null);
104+
}
105+
106+
/// <summary>
107+
/// Queries Attachment Links for this account using the specified filtering, sorting, nested fetch, and pagination rules requested.
108+
///
109+
/// More information on querying can be found on the [Searchlight Query Language](https://developer.lockstep.io/docs/querying-with-searchlight) page on the ADS Platform Developer website.
110+
///
111+
/// An Attachment Link is a link that associates one Attachment with one object within ADS Platform.
112+
///
113+
/// This route has been deprecated, use /Attachments
114+
///
115+
/// See [Extensibility](https://developer.lockstep.io/docs/extensibility) for more information.
116+
///
117+
/// </summary>
118+
/// <param name="filter">The filter to use to select from the list of available Attachments, in the [Searchlight query syntax](https://github.com/tspence/csharp-searchlight).</param>
119+
/// <param name="include">To fetch additional data on this object, specify the list of elements to retrieve. No collections are currently available for querying but may be available in the future.</param>
120+
/// <param name="order">The sort order for the results, in the [Searchlight order syntax](https://github.com/tspence/csharp-searchlight).</param>
121+
/// <param name="pageSize">The page size for results (default 250, maximum of 500)</param>
122+
/// <param name="pageNumber">The page number for results (default 0)</param>
123+
[Obsolete("This endpoint is deprecated.")]
124+
public async Task<LockstepResponse<FetchResult<AttachmentLinkModel>>> QueryAttachmentLinks(string filter = null, string include = null, string order = null, int? pageSize = null, int? pageNumber = null)
125+
{
126+
var url = $"/api/v1/AttachmentLinks/query";
127+
var options = new Dictionary<string, object>();
128+
if (filter != null) { options["filter"] = filter; }
129+
if (include != null) { options["include"] = include; }
130+
if (order != null) { options["order"] = order; }
131+
if (pageSize != null) { options["pageSize"] = pageSize; }
132+
if (pageNumber != null) { options["pageNumber"] = pageNumber; }
133+
return await _client.Request<FetchResult<AttachmentLinkModel>>(HttpMethod.Get, url, options, null, null);
134+
}
135+
}
136+
}

src/Clients/FeatureFlagsClient.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/***
2+
* Lockstep Platform SDK for C#
3+
*
4+
* (c) 2021-2025 Lockstep, Inc.
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*
9+
* @author Lockstep Network <[email protected]>
10+
* @copyright 2021-2025 Lockstep, Inc.
11+
* @link https://github.com/Lockstep-Network/lockstep-sdk-csharp
12+
*/
13+
14+
15+
16+
using System;
17+
using System.Collections.Generic;
18+
using System.Net.Http;
19+
using System.Threading.Tasks;
20+
using LockstepSDK.Models;
21+
22+
23+
namespace LockstepSDK.Clients
24+
{
25+
/// <summary>
26+
/// API methods related to FeatureFlags
27+
/// </summary>
28+
public class FeatureFlagsClient
29+
{
30+
private readonly LockstepApi _client;
31+
32+
/// <summary>
33+
/// Constructor
34+
/// </summary>
35+
public FeatureFlagsClient(LockstepApi client)
36+
{
37+
_client = client;
38+
}
39+
40+
/// <summary>
41+
/// Retrieves the specified feature flags. True if they are enabled, false otherwise.
42+
///
43+
/// </summary>
44+
/// <param name="body"></param>
45+
[Obsolete("This endpoint is deprecated.")]
46+
public async Task<LockstepResponse<FeatureFlagsResponseModel>> RetrieveFeatureFlags(FeatureFlagsRequestModel body)
47+
{
48+
var url = $"/api/v1/feature-flags";
49+
return await _client.Request<FeatureFlagsResponseModel>(HttpMethod.Post, url, null, body, null);
50+
}
51+
}
52+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/***
2+
* Lockstep Platform SDK for C#
3+
*
4+
* (c) 2021-2025 Lockstep, Inc.
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*
9+
* @author Lockstep Network <[email protected]>
10+
* @copyright 2021-2025 Lockstep, Inc.
11+
* @link https://github.com/Lockstep-Network/lockstep-sdk-csharp
12+
*/
13+
14+
15+
16+
using System;
17+
using System.Collections.Generic;
18+
using System.Net.Http;
19+
using System.Threading.Tasks;
20+
using LockstepSDK.Models;
21+
22+
23+
namespace LockstepSDK.Clients
24+
{
25+
/// <summary>
26+
/// API methods related to FinancialInstitutionAccounts
27+
/// </summary>
28+
public class FinancialInstitutionAccountsClient
29+
{
30+
private readonly LockstepApi _client;
31+
32+
/// <summary>
33+
/// Constructor
34+
/// </summary>
35+
public FinancialInstitutionAccountsClient(LockstepApi client)
36+
{
37+
_client = client;
38+
}
39+
40+
/// <summary>
41+
/// Retrieves the financial institution account specified by this unique identifier.
42+
///
43+
/// </summary>
44+
/// <param name="id">The unique ADS Platform ID number of this institution account; NOT the customer's ERP key</param>
45+
[Obsolete("This endpoint is deprecated.")]
46+
public async Task<LockstepResponse<FinancialInstitutionAccountModel>> RetrieveFinancialInstitutionAccounts(Guid id)
47+
{
48+
var url = $"/api/v1/financial-institution-accounts/{id}";
49+
return await _client.Request<FinancialInstitutionAccountModel>(HttpMethod.Get, url, null, null, null);
50+
}
51+
52+
/// <summary>
53+
///
54+
///
55+
/// </summary>
56+
/// <param name="filter">The filter for this query. See [Searchlight Query Language](https://developer.lockstep.io/docs/querying-with-searchlight)</param>
57+
/// <param name="include">To fetch additional data on this object, specify the list of elements to retrieve. No collections are currently available but may be offered in the future.</param>
58+
/// <param name="order">The sort order for this query. See See [Searchlight Query Language](https://developer.lockstep.io/docs/querying-with-searchlight)</param>
59+
/// <param name="pageSize">The page size for results (default 250, maximum of 500). See [Searchlight Query Language](https://developer.lockstep.io/docs/querying-with-searchlight)</param>
60+
/// <param name="pageNumber">The page number for results (default 0). See [Searchlight Query Language](https://developer.lockstep.io/docs/querying-with-searchlight)</param>
61+
[Obsolete("This endpoint is deprecated.")]
62+
public async Task<LockstepResponse<FetchResult<FinancialInstitutionAccountModel>>> QueryFinancialInstitutionAccounts(string filter = null, string include = null, string order = null, int? pageSize = null, int? pageNumber = null)
63+
{
64+
var url = $"/api/v1/financial-institution-accounts/query";
65+
var options = new Dictionary<string, object>();
66+
if (filter != null) { options["filter"] = filter; }
67+
if (include != null) { options["include"] = include; }
68+
if (order != null) { options["order"] = order; }
69+
if (pageSize != null) { options["pageSize"] = pageSize; }
70+
if (pageNumber != null) { options["pageNumber"] = pageNumber; }
71+
return await _client.Request<FetchResult<FinancialInstitutionAccountModel>>(HttpMethod.Get, url, options, null, null);
72+
}
73+
}
74+
}

src/Clients/GroupAccountsClient.cs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/***
2+
* Lockstep Platform SDK for C#
3+
*
4+
* (c) 2021-2025 Lockstep, Inc.
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*
9+
* @author Lockstep Network <[email protected]>
10+
* @copyright 2021-2025 Lockstep, Inc.
11+
* @link https://github.com/Lockstep-Network/lockstep-sdk-csharp
12+
*/
13+
14+
15+
16+
using System;
17+
using System.Collections.Generic;
18+
using System.Net.Http;
19+
using System.Threading.Tasks;
20+
using LockstepSDK.Models;
21+
22+
23+
namespace LockstepSDK.Clients
24+
{
25+
/// <summary>
26+
/// API methods related to GroupAccounts
27+
/// </summary>
28+
public class GroupAccountsClient
29+
{
30+
private readonly LockstepApi _client;
31+
32+
/// <summary>
33+
/// Constructor
34+
/// </summary>
35+
public GroupAccountsClient(LockstepApi client)
36+
{
37+
_client = client;
38+
}
39+
40+
/// <summary>
41+
/// Retrieves group account data for the current user.
42+
///
43+
/// </summary>
44+
[Obsolete("This endpoint is deprecated.")]
45+
public async Task<LockstepResponse<GroupAccountModel>> RetrieveGroupAccountData()
46+
{
47+
var url = $"/api/v1/GroupAccounts/me";
48+
return await _client.Request<GroupAccountModel>(HttpMethod.Get, url, null, null, null);
49+
}
50+
51+
/// <summary>
52+
/// Updates a group account that matches the specified id with the requested information.
53+
///
54+
/// The PATCH method allows you to change specific values on the object while leaving other values alone. As input you should supply a list of field names and new values. If you do not provide the name of a field, that field will remain unchanged. This allows you to ensure that you are only updating the specific fields desired.
55+
///
56+
/// </summary>
57+
/// <param name="id">The unique ID number of the Group Account to retrieve</param>
58+
/// <param name="body">A list of changes to apply to this Group Account</param>
59+
[Obsolete("This endpoint is deprecated.")]
60+
public async Task<LockstepResponse<GroupAccountModel>> UpdateGroupAccount(Guid id, object body)
61+
{
62+
var url = $"/api/v1/GroupAccounts/{id}";
63+
return await _client.Request<GroupAccountModel>(new HttpMethod("PATCH"), url, null, body, null);
64+
}
65+
}
66+
}

0 commit comments

Comments
 (0)