vmelnalksnis / nordigendotnet Goto Github PK
View Code? Open in Web Editor NEW.NET client for Nordigen API
License: Apache License 2.0
.NET client for Nordigen API
License: Apache License 2.0
Currently token access/updates in NordigenTokenCache
are not thread-safe, which might cause failed requests when refreshing/recreating tokens.
Should only be an issue in long running applications, since by default access tokens will be refreshed once in 12 hours, and the refresh token once in 15 days.
Currently the HttpClient
used to create and refresh tokens is not user configurable, and does not expose it's IHttpClientBuilder
. That means that all other endpoints can be, for example, configured with retries, but not the token endpoints.
Currently some actions only specify the major version, all actions should specify the complete version.
deployments/publish.sh should be executable by default, so that it does not have to be set in actions.
Hi,
You missed an "=" in the query after "date_from"
@VMelnalksnis.NordigenDotNet/Accounts/AccountClient.cs
@public async Task GetTransactions
@line 65
uri += $"?date_from{value.Start:yyyy-MM-dd}&date_to={value.End:yyyy-MM-dd}";
should be:
uri += $"?date_from={value.Start:yyyy-MM-dd}&date_to={value.End:yyyy-MM-dd}";
Thx
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
/Accounts/BookedTransaction.cs
to /Accounts/Transaction.cs
would resolve this, so the property is available on both booked and pending transactions/// <summary>Gets or sets a unique transaction id created by the <see cref="Institution"/>.</summary>
public string TransactionId { get; set; } = null!;
Additional context
Is your feature request related to a problem? Please describe.
Missing fields in transactions
Describe the solution you'd like
I've noticed that I'm now seeing more information available in the 'pending' data for one of my accounts.
I've have moved the following items from only being present on booked transactions to being present on all transactions: BookingDate
, CreditorName
, EntryReference
.
I've also added support for the following new fields:
CurrencyExchange
- exchange rateBookingDateTime
- combined date and time for transaction bookingValueDateTime
- combined date and time for transaction valueThere's some example data here too:
"pending": [
{
"transactionId": "XXXX",
"entryReference": "XXXX",
"bookingDate": "2023-11-08",
"bookingDateTime": "2023-11-08T10:05:00Z",
"transactionAmount": {
"amount": "-10.00",
"currency": "GBP"
},
"currencyExchange": {
"sourceCurrency": "GBP",
"exchangeRate": "0.0"
},
"creditorName": "EXAMPLE",
"remittanceInformationUnstructured": "EXAMPLE-123",
"additionalInformation": "XXXX",
"merchantCategoryCode": "000"
}
]
Describe alternatives you've considered
Adding additional fields to transactions
Additional context
Add any other context or screenshots about the feature request here.
Currently the access token is acquired once when the client is created. In ASP.NET Core, when used from a controller, that means that INordigenClient
authenticates once per incoming request, which works, but is a bit wasteful.
NordigenHttpClient
should preserve the token and automatically refresh it.
Describe the bug
Transacciont record does not contains a property to save "remittanceInformationStructured"
To Reproduce
Transacctions retrieved from this intitution_id => ABANCA_CAGLESMM needs to get "remittanceInformationStructured" whit the transacction description.
Expected behavior
Get the "remittanceInformationStructured" from Nordigen API
/// <summary>Gets or sets structured information about the transaction, usually added by the debtor.</summary>
[JsonPropertyName("remittanceInformationStructured")]
public string StructuredInformation { get; set; } = null!;
Describe the bug
The property LastAccesed for the Account class is not nullable but the Nordigen documentation describes it as optional.
It should be nullable.
Now:
///
Should be;
///
To Reproduce
Steps to reproduce the behavior:
Getting de account for the institution_id => ABANCA_CAGLESMM does not return last_accesed property and return a format exception during serialization when try to parse the NodaTime Instant
Expected behavior
Set LastAccessed property as nullable
///
Additional context
Add any other context about the problem here.
Currently I have no plans of using/paying for the premium endpoints, I don't plan to add support for them.
If those are needed, either provide a sample of the data returned by the endpoints, as I don't trust their documentation, or open a pull request.
DotNet.ReproducibleBuilds.Isolated
NuGet package should have <PrivateAssets>all</PrivateAssets>
, so that it is not added as a dependency to all projects using this package.
Is your feature request related to a problem? Please describe.
After support for ValueDateTime
and BookingDateTime
being implemented, I've found that in addition to some banks supporting Zulu Time (i.e. 2023-11-08T10:05:00Z
) as shown in the documentation, some banks also return an offset instead (like 2023-11-08T10:05:00+00:00
) which the instant
date type is not able to handle when parsed.
The below exception is thrown when returning transacitons for a bank that returns with such data:
Describe the solution you'd like
I suggest that the ValueDateTime
and BookingDateTime
parameters instead become OffsetDateTime
data types, to add support for offset timezones which may be returned from banks in practice.
Is your feature request related to a problem? Please describe.
When looking at some account types, I noticed that the account fields maskedPan
and details
are not passed through the library, this PR adds support for these types.
A sample sanitised API response from the /api/v2/accounts/:id/details/
endpoint:
{
"account": {
"resourceId": "resource_id",
"currency": "GBP",
"ownerName": "Account User",
"cashAccountType": "CARD",
"status": "enabled",
"maskedPan": "XXXX-XXXXXX-12345",
"details": "A Sample Card"
}
}
Describe the solution you'd like
Adding support for the maskedPan
and details
items in the API
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
The version
file seems redundant, since the same information is in the git tag
that triggers the release.
Enable trimming to allow applications to remove unused code, see https://docs.microsoft.com/en-us/dotnet/core/deploying/trimming/trim-self-contained#enable-trimming.
Should also add methods for using end-user agreement endpoints, see https://nordigen.com/en/docs/account-information/integration/parameters-and-responses/#/agreements.
Is your feature request related to a problem? Please describe.
The APIs have undocumented rate limits which are being hit during integration tests.
Describe the solution you'd like
The client contains retry policies which handles standard rate limiting.
Describe alternatives you've considered
Additional context
Example rate limited response:
{"summary":"Rate limit exceeded","detail":"The rate limit for this resource is 300/minute. Please try again in 20 seconds","status_code":429}
09:57:02 [INF] [System.Net.Http.HttpClient.Nordigen.ClientHandler] Sending HTTP request GET https://ob.nordigen.com/api/v2/requisitions/?limit=100&offset=0
09:57:02 [VRB] [System.Net.Http.HttpClient.Nordigen.ClientHandler] Request Headers:
User-Agent: VMelnalksnis.NordigenDotNet/1.0.0.0
Authorization: Bearer ********
09:57:02 [INF] [System.Net.Http.HttpClient.Nordigen.ClientHandler] Received HTTP response headers after 405.6839ms - 429
09:57:02 [VRB] [System.Net.Http.HttpClient.Nordigen.ClientHandler] Response Headers:
Date: Sat, 03 Feb 2024 07:57:41 GMT
Connection: keep-alive
Server: nginx
Vary: Accept, Accept-Language
X-C-UUID: 6ab1565a-81d2-4dcb-a899-c4150e3d55c6
X-U-UUID: 08027fea-7f3f-43fc-bee6-e2e68a844a59
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: same-origin
Content-Type: application/json
Content-Length: 141
Allow: GET, POST, HEAD, OPTIONS
Content-Language: en
09:57:02 [INF] [System.Net.Http.HttpClient.Nordigen.LogicalHandler] End processing HTTP request after 980.0212ms - 429
09:57:02 [VRB] [System.Net.Http.HttpClient.Nordigen.LogicalHandler] Response Headers:
Date: Sat, 03 Feb 2024 07:57:41 GMT
Connection: keep-alive
Server: nginx
Vary: Accept, Accept-Language
X-C-UUID: 6ab1565a-81d2-4dcb-a899-c4150e3d55c6
X-U-UUID: 08027fea-7f3f-43fc-bee6-e2e68a844a59
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: same-origin
Content-Type: application/json
Content-Length: 141
Allow: GET, POST, HEAD, OPTIONS
Content-Language: en
Should add instructions on how to configure and use the client.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.