Releases: RobinTTY/NordigenApiClient
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
,CreateAgreementRequest
andCreateRequisitionRequest
are nowinternal
instead ofpublic
DebtorAccount
andCreditorAccount
properties of theTransaction
class are now of typeAccountDetails?
instead ofMinimalBankAccount?
- The
accessScope
parameter for methodAgreementsEndpoint.CreateAgreement
is 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
OwnerAddressStructured
andDisplayName
properties to theBankAccountDetails
class - Added the
OwnerName
property to theBankAccount
class
Full Changelog: v8.0.1...v9.0.0
v8.0.1
v8.0.0
Breaking changes
- The
BasicError
type was removed since it has the same properties as theBasicResponse
type. 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
InstitutionsError
type has been removed and replaced byBasicResponse
since 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 anArgumentException
when theendDate
argument contains a date beforestartDate
instead of executing the response, since this will always result in an error being returned by the APIJsonWebTokenPair
andNordigenClientCredentials
now throw anArgumentNullException
when the suppliedstring
arguments arenull
- Multiple changes to the
Institution
type:- Changed the type of the
TransactionTotalDays
property fromint
touint
since 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
IEnumerable
toList
since most where already returningList
and to bring them in line. This affects the following properties:ResponsePage.Results
Tranasction.RemittanceInformationUnstructuredArray
Transaction.RemittanceInformationStructuredArray
Transaction.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
TokenPairUpdated
event is now only raised when the token was successfully updated. In the past it was also raised for unsuccessful token refreshes. Therefore theTokenPairUpdatedEventArgsJsonWebTokenPair
property 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:
TransactionTotalDays
property of theInstitution
class is now of the more appropriate type ofint
instead 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
v6.1.2
Fixed CurrencyExchange
deserialization.
Full Changelog: v6.1.1...v6.1.2