Skip to main content

v10.0.0

· One min read

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

· 2 min read

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 and CreateRequisitionRequest are now internal instead of public
  • DebtorAccount and CreditorAccount properties of the Transaction class are now of type AccountDetails? instead of MinimalBankAccount?
  • The accessScope parameter for method AgreementsEndpoint.CreateAgreement is now of type List<AccessScope>? instead of List<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 and DisplayName properties to the BankAccountDetails class
  • Added the OwnerName property to the BankAccount class

Full Changelog: v8.0.1...v9.0.0

v8.0.0

· 3 min read

Breaking changes

  • The BasicError type was removed since it has the same properties as the BasicResponse type. This changes the signatures of the following methods:
    • AccountsEndpoint.GetAccount() now returns Task<NordigenApiResponse<BankAccount, BasicResponse>> instead of Task<NordigenApiResponse<BankAccount, BasicError>>
    • AgreementsEndpoint.GetAgreements() now returns Task<NordigenApiResponse<ResponsePage<Agreement>, BasicResponse>> instead of Task<NordigenApiResponse<ResponsePage<Agreement>, BasicError>>
    • AgreementsEndpoint.GetAgreement() now returns Task<NordigenApiResponse<Agreement, BasicResponse>> instead of Task<NordigenApiResponse<Agreement, BasicError>>
    • AgreementsEndpoint.DeleteAgreement() now returns Task<NordigenApiResponse<BasicResponse, BasicResponse>> instead of Task<NordigenApiResponse<BasicResponse, BasicError>>
    • AgreementsEndpoint.AcceptAgreement() now returns Task<NordigenApiResponse<Agreement, BasicResponse>> instead of Task<NordigenApiResponse<Agreement, BasicError>>
    • InstitutionsEndpoint.GetInstitution() now returns Task<NordigenApiResponse<Institution, BasicResponse>> instead of Task<NordigenApiResponse<Institution, BasicError>>
    • RequisitionsEndpoint.GetRequisitions() now returns Task<NordigenApiResponse<ResponsePage<Requisition>, BasicResponse>> instead of Task<NordigenApiResponse<ResponsePage<Requisition>, BasicError>>
    • RequisitionsEndpoint.GetRequisition() now returns Task<NordigenApiResponse<Requisition, BasicResponse>> instead of Task<NordigenApiResponse<Requisition, BasicError>>
    • RequisitionsEndpoint.DeleteRequisition() now returns Task<NordigenApiResponse<BasicResponse, BasicResponse>> instead of Task<NordigenApiResponse<BasicResponse, BasicError>>
    • TokenEndpoint.GetTokenPair() now returns Task<NordigenApiResponse<JsonWebTokenPair, BasicResponse>> instead of Task<NordigenApiResponse<JsonWebTokenPair, BasicError>>
    • TokenEndpoint.RefreshAccessToken() now returns Task<NordigenApiResponse<JsonWebAccessToken, BasicResponse>> instead of Task<NordigenApiResponse<JsonWebAccessToken, BasicError>>
  • The InstitutionsError type has been removed and replaced by BasicResponse since the error can in all cases be simplified to this type. This changes the signatures of the following method:
    • InstitutionsEndpoint.GetInstitutions() now returns Task<NordigenApiResponse<List<Institution>, BasicResponse>> instead of Task<NordigenApiResponse<List<Institution>, InstitutionsError>>
  • Introduced the following exceptions:
    • AccountsEndpoint.GetTransactions() now immediately throws an ArgumentException when the endDate argument contains a date before startDate instead of executing the response, since this will always result in an error being returned by the API
    • JsonWebTokenPair and NordigenClientCredentials now throw an ArgumentNullException when the supplied string arguments are null
  • Multiple changes to the Institution type:
    • Changed the type of the TransactionTotalDays property from int to uint 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 properties of type IEnumerable to List since most where already returning List 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 the TokenPairUpdatedEventArgsJsonWebTokenPair 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

· One min read

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

· One min read
  • BREAKING CHANGE: TransactionTotalDays property of the Institution class is now of the more appropriate type of int instead of string
  • Added interfaces for all endpoints to allow for mocking

Full Changelog: v6.2.0...v7.0.0