Releases: RobinTTY/NordigenApiClient
v11.0.0
Changes to align the client with GoCardless Banking API changes, removing deprecated payment-related filters and adding support for agreement reconfirmation functionality. Please refer to the full release notes.
Full Changelog: v10.1.0...v11.0.0
v10.1.0
Added the ability to check newly introduced rate limits in the GoCardless API.
Please refer to the documentation for more information. You can also see the announcement from GoCardless.
Full Changelog: v10.0.0...v10.1.0
v10.0.0
Breaking Changes
InstitutionsEndpoint class
The signature of the method GetInstitutions changed. The argument readDebtorAccountSupported was newly added.
v9.0.0
public async Task<NordigenApiResponse<List<Institution>, BasicResponse>> GetInstitutions(string? country = null,
bool? accessScopesSupported = null, bool? accountSelectionSupported = null,
bool? businessAccountsSupported = null, bool? cardAccountsSupported = null,
bool? corporateAccountsSupported = null, bool? privateAccountsSupported = null,
bool? readRefundAccountSupported = null, bool? paymentsEnabled = null, bool? paymentSubmissionSupported = null,
bool? pendingTransactionsSupported = null, bool? ssnVerificationSupported = null,
CancellationToken cancellationToken = default)v10.0.0
public async Task<NordigenApiResponse<List<Institution>, BasicResponse>> GetInstitutions(string? country = null,
bool? accessScopesSupported = null, bool? accountSelectionSupported = null,
bool? businessAccountsSupported = null, bool? cardAccountsSupported = null,
bool? corporateAccountsSupported = null, bool? privateAccountsSupported = null,
bool? readRefundAccountSupported = null, bool? readDebtorAccountSupported = null,
bool? paymentsEnabled = null, bool? paymentSubmissionSupported = null,
bool? pendingTransactionsSupported = null, bool? ssnVerificationSupported = null,
CancellationToken cancellationToken = default)NordigenClient class
The TokenPairUpdated event is now raised whenever the JsonWebTokenPair property is successfully updated. Not only when it was automatically updated but also when done so by the user.
Other improvements
A full documentation of the library is now available at: https://robintty.github.io/NordigenApiClient/
Full Changelog: v9.0.0...v10.0.0
v9.0.0
Breaking Changes
Removed request model classes in favor of additional parameters in methods and default values are now provided to simplify the usage. The following method signatures have changed accordingly:
CreateAgreement
// Previous to version v9.0.0
Task<NordigenApiResponse<Agreement, CreateAgreementError>> CreateAgreement(CreateAgreementRequest agreement,
CancellationToken cancellationToken = default)
// version v9.0.0
Task<NordigenApiResponse<Agreement, CreateAgreementError>> CreateAgreement(string institutionId,
uint accessValidForDays = 90, uint maxHistoricalDays = 90, List<AccessScope>? accessScope = null,
CancellationToken cancellationToken = default)Usage example
// Previous to version v9.0.0
var agreementRequest = new CreateAgreementRequest(90, 90, ["balances", "details", "transactions"], "SANDBOXFINANCE_SFIN0000");
var createResponse = await client.AgreementsEndpoint.CreateAgreement(agreementRequest);
// version v9.0.0
var createResponse = await client.AgreementsEndpoint.CreateAgreement("SANDBOXFINANCE_SFIN0000");AcceptAgreement
// Previous to version v9.0.0
Task<NordigenApiResponse<Agreement, BasicResponse>> AcceptAgreement(Guid id, AcceptAgreementRequest metadata,
CancellationToken cancellationToken = default);
Task<NordigenApiResponse<Agreement, BasicResponse>> AcceptAgreement(string id, AcceptAgreementRequest metadata,
CancellationToken cancellationToken = default);
// version v9.0.0
Task<NordigenApiResponse<Agreement, BasicResponse>> AcceptAgreement(Guid id, string userAgent, string ipAddress,
CancellationToken cancellationToken = default);
Task<NordigenApiResponse<Agreement, BasicResponse>> AcceptAgreement(string id, string userAgent, string ipAddress,
CancellationToken cancellationToken = default);Usage example
// Previous to version v9.0.0
var agreementId = "3fa85f64-5717-4562-b3fc-2c963f66afa6"
var acceptMetadata = new AcceptAgreementRequest("example_user_agent", "192.168.178.1");
var acceptResponse = await client.AgreementsEndpoint.AcceptAgreement(agreementId, acceptMetadata);
// version v9.0.0
var agreementId = "3fa85f64-5717-4562-b3fc-2c963f66afa6"
var acceptResponse = await client.AgreementsEndpoint.AcceptAgreement(agreementId , "example_user_agent", "192.168.178.1");CreateRequisition
// Previous to version v9.0.0
Task<NordigenApiResponse<Requisition, CreateRequisitionError>> CreateRequisition(
CreateRequisitionRequest requisition, CancellationToken cancellationToken = default);
// version v9.0.0
Task<NordigenApiResponse<Requisition, CreateRequisitionError>> CreateRequisition(string institutionId,
Uri redirect, Guid? agreementId = null, string? reference = null, string userLanguage = "EN",
string? socialSecurityNumber = null, bool accountSelection = false, bool redirectImmediate = false,
CancellationToken cancellationToken = default);Usage example
// Previous to version v9.0.0
var requisitionRequest = new CreateRequisitionRequest(redirect, institutionId, $"reference_{i}", "EN", agreementId);
var createResponse = await client.RequisitionsEndpoint.CreateRequisition(requisitionRequest);
// version v9.0.0
var createResponse = await client.RequisitionsEndpoint.CreateRequisition(institutionId, redirect, agreementId, $"reference_{i}");Other breaking changes
- The classes
CreateAgreementRequest,CreateAgreementRequestandCreateRequisitionRequestare nowinternalinstead ofpublic DebtorAccountandCreditorAccountproperties of theTransactionclass are now of typeAccountDetails?instead ofMinimalBankAccount?- The
accessScopeparameter for methodAgreementsEndpoint.CreateAgreementis now of typeList<AccessScope>?instead ofList<string>
Other improvements
SupportedCountry enum
Added the SupportedCountry enum which can now be used to more easily use the GetInstitutions method:
var institutions = await _apiClient.InstitutionsEndpoint.GetInstitutions(SupportedCountry.Bulgaria);New properties
- Added the
OwnerAddressStructuredandDisplayNameproperties to theBankAccountDetailsclass - Added the
OwnerNameproperty to theBankAccountclass
Full Changelog: v8.0.1...v9.0.0
v8.0.1
v8.0.0
Breaking changes
- The
BasicErrortype was removed since it has the same properties as theBasicResponsetype. This changes the signatures of the following methods:AccountsEndpoint.GetAccount()now returnsTask<NordigenApiResponse<BankAccount, BasicResponse>>instead ofTask<NordigenApiResponse<BankAccount, BasicError>>AgreementsEndpoint.GetAgreements()now returnsTask<NordigenApiResponse<ResponsePage<Agreement>, BasicResponse>>instead ofTask<NordigenApiResponse<ResponsePage<Agreement>, BasicError>>AgreementsEndpoint.GetAgreement()now returnsTask<NordigenApiResponse<Agreement, BasicResponse>>instead ofTask<NordigenApiResponse<Agreement, BasicError>>AgreementsEndpoint.DeleteAgreement()now returnsTask<NordigenApiResponse<BasicResponse, BasicResponse>>instead ofTask<NordigenApiResponse<BasicResponse, BasicError>>AgreementsEndpoint.AcceptAgreement()now returnsTask<NordigenApiResponse<Agreement, BasicResponse>>instead ofTask<NordigenApiResponse<Agreement, BasicError>>InstitutionsEndpoint.GetInstitution()now returnsTask<NordigenApiResponse<Institution, BasicResponse>>instead ofTask<NordigenApiResponse<Institution, BasicError>>RequisitionsEndpoint.GetRequisitions()now returnsTask<NordigenApiResponse<ResponsePage<Requisition>, BasicResponse>>instead ofTask<NordigenApiResponse<ResponsePage<Requisition>, BasicError>>RequisitionsEndpoint.GetRequisition()now returnsTask<NordigenApiResponse<Requisition, BasicResponse>>instead ofTask<NordigenApiResponse<Requisition, BasicError>>RequisitionsEndpoint.DeleteRequisition()now returnsTask<NordigenApiResponse<BasicResponse, BasicResponse>>instead ofTask<NordigenApiResponse<BasicResponse, BasicError>>TokenEndpoint.GetTokenPair()now returnsTask<NordigenApiResponse<JsonWebTokenPair, BasicResponse>>instead ofTask<NordigenApiResponse<JsonWebTokenPair, BasicError>>TokenEndpoint.RefreshAccessToken()now returnsTask<NordigenApiResponse<JsonWebAccessToken, BasicResponse>>instead ofTask<NordigenApiResponse<JsonWebAccessToken, BasicError>>
- The
InstitutionsErrortype has been removed and replaced byBasicResponsesince the error can in all cases be simplified to this type. This changes the signatures of the following method:InstitutionsEndpoint.GetInstitutions()now returnsTask<NordigenApiResponse<List<Institution>, BasicResponse>>instead ofTask<NordigenApiResponse<List<Institution>, InstitutionsError>>
- Introduced the following exceptions:
AccountsEndpoint.GetTransactions()now immediately throws anArgumentExceptionwhen theendDateargument contains a date beforestartDateinstead of executing the response, since this will always result in an error being returned by the APIJsonWebTokenPairandNordigenClientCredentialsnow throw anArgumentNullExceptionwhen the suppliedstringarguments arenull
- Multiple changes to the
Institutiontype:- Changed the type of the
TransactionTotalDaysproperty frominttouintsince this value can't be negative - Added the following new properties:
SupportedPayments: The supported payment products for this institution (e.g.SepaCreditTransfers,SwiftPaymentService, etc.)SupportedFeatures: The supported features for this institution (e.g.account_selection,card_accounts, etc.). This can inform you which features you can use when creating a requisition with an institution.IdentificationCodes: Undocumented field in the response model
- Changed the type of the
- Changed properties of type
IEnumerabletoListsince most where already returningListand to bring them in line. This affects the following properties:ResponsePage.ResultsTranasction.RemittanceInformationUnstructuredArrayTransaction.RemittanceInformationStructuredArrayTransaction.CurrencyExchange
Miscellaneous
- When the client can't acquire a valid access token needed for authenticated requests it won't try to execute any subsequent request anymore (if they require authentication). Instead the error returned by the authentication request is returned immediately. The previous behavior was to execute the subsequent request which would return a more generic authentication error.
- The
TokenPairUpdatedevent is now only raised when the token was successfully updated. In the past it was also raised for unsuccessful token refreshes. Therefore theTokenPairUpdatedEventArgsJsonWebTokenPairproperty is now no longer nullable. - Fixed a multitude of errors not being correctly deserialized due to erratic API response models
Full Changelog: v7.1.0...v8.0.0
v7.1.0
Added ability to configure the base API URL through the HttpClient:
var httpClient = new HttpClient {BaseAddress = new Uri("https://ob.gocardless.com/api/v2/")};
var credentials = new NordigenClientCredentials("...", "...");
var client = new NordigenClient(httpClient, credentials);Full Changelog: v7.0.0...v7.1.0
v7.0.0
- BREAKING CHANGE:
TransactionTotalDaysproperty of theInstitutionclass is now of the more appropriate type ofintinstead ofstring - Added interfaces for all endpoints to allow for mocking
Full Changelog: v6.2.0...v7.0.0
v6.2.0
Added an interface for NordigenClient to allow easier DI and mocking.
Full Changelog: v6.1.3...v6.2.0
v6.1.3
What's Changed
- Fixed CurrencyExchange deserialization caused by inconsistent API behavior
- Allow mocking of NordigenApiResponse
New Contributors
- @whippet71 made their first contribution in #9
Full Changelog: v6.1.2...v6.1.3