This commit is contained in:
JiriUhlir
2026-06-18 11:05:46 +02:00
parent f44ffae9fc
commit 09db30a3ca
84 changed files with 3952 additions and 15 deletions
+106
View File
@@ -0,0 +1,106 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"Csob/1.0.0": {
"dependencies": {
"Swashbuckle.AspNetCore": "6.9.0"
},
"runtime": {
"Csob.dll": {}
}
},
"Microsoft.OpenApi/1.6.14": {
"runtime": {
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
"assemblyVersion": "1.6.14.0",
"fileVersion": "1.6.14.0"
}
}
},
"Swashbuckle.AspNetCore/6.9.0": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "6.9.0",
"Swashbuckle.AspNetCore.SwaggerGen": "6.9.0",
"Swashbuckle.AspNetCore.SwaggerUI": "6.9.0"
}
},
"Swashbuckle.AspNetCore.Swagger/6.9.0": {
"dependencies": {
"Microsoft.OpenApi": "1.6.14"
},
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": {
"assemblyVersion": "6.9.0.0",
"fileVersion": "6.9.0.799"
}
}
},
"Swashbuckle.AspNetCore.SwaggerGen/6.9.0": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "6.9.0"
},
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
"assemblyVersion": "6.9.0.0",
"fileVersion": "6.9.0.799"
}
}
},
"Swashbuckle.AspNetCore.SwaggerUI/6.9.0": {
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
"assemblyVersion": "6.9.0.0",
"fileVersion": "6.9.0.799"
}
}
}
}
},
"libraries": {
"Csob/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Microsoft.OpenApi/1.6.14": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==",
"path": "microsoft.openapi/1.6.14",
"hashPath": "microsoft.openapi.1.6.14.nupkg.sha512"
},
"Swashbuckle.AspNetCore/6.9.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lvI+XHF21tkwXd2nDCLGJsdhdUYsY3Ax2fWUlvw81Oa6EedtnIAf5tThy8ZnPcz/9/TwsLgjgtX9ifOCIjbEPA==",
"path": "swashbuckle.aspnetcore/6.9.0",
"hashPath": "swashbuckle.aspnetcore.6.9.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.Swagger/6.9.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-P316kpxx5DnDvJwNWW8iTAXkh9DVenAxFGe9v4OUS0gil+vitH7F1feXhCtVeHN/616EFNTMh4pV2lcr9kkw/w==",
"path": "swashbuckle.aspnetcore.swagger/6.9.0",
"hashPath": "swashbuckle.aspnetcore.swagger.6.9.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerGen/6.9.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-FjeMR3fBzwVc5plfYjoHw9ptf8SOWMupvO9X35J5EgzT3L9dRqSxa+cBKzL8PwCyemY0xNrggQSB5+MFWx1axg==",
"path": "swashbuckle.aspnetcore.swaggergen/6.9.0",
"hashPath": "swashbuckle.aspnetcore.swaggergen.6.9.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerUI/6.9.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0OxlWBFLl2gUESZX/K7QCTz9KctKy0VxHTvLIBcyWGD4z/fv5MCMW02qzYGcReLJr4yBnNDRzApKtLh6oBpe9A==",
"path": "swashbuckle.aspnetcore.swaggerui/6.9.0",
"hashPath": "swashbuckle.aspnetcore.swaggerui.6.9.0.nupkg.sha512"
}
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,20 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
@@ -0,0 +1 @@
{"Version":1,"ManifestType":"Build","Endpoints":[]}
+502
View File
@@ -0,0 +1,502 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Csob</name>
</assembly>
<members>
<member name="T:Csob.Client.CsobApiAccessor">
<summary>
Scoped accessor that resolves the credentials for the current request and lazily builds a
single <see cref="T:Csob.Client.CsobApiClient"/> (bound to the request's mutual-TLS client) shared by all
services handling that request.
</summary>
</member>
<member name="T:Csob.Client.CsobApiClient">
<summary>
Thin HTTP wrapper around the ČSOB PSD2 resource API for a single request. It attaches the
mandatory COBS headers (<c>Authorization</c>, <c>APIKEY</c>, <c>TPP-Name</c>, <c>X-Request-ID</c>,
<c>Date</c>, <c>User-Involved</c>), sends the call over the per-request mutual-TLS client and
returns the response JSON verbatim (<see cref="T:System.Text.Json.Nodes.JsonNode"/>) so no field is lost in translation.
Non-success responses become a <see cref="T:Csob.Client.CsobApiException"/>.
</summary>
</member>
<member name="F:Csob.Client.CsobApiClient.JsonOptions">
<summary>Web defaults (camelCase) match the COBS JSON contract; null properties are omitted on write.</summary>
</member>
<member name="M:Csob.Client.CsobApiClient.ParseErrorCodes(System.String)">
<summary>Best-effort parse of the COBS error shape <c>{ "errors": [ { "error": "CODE" } ] }</c>.</summary>
</member>
<member name="T:Csob.Client.CsobApiException">
<summary>
Raised when the ČSOB PSD2 API returns a non-success HTTP status. Carries the upstream status
and the raw error body so the middleware can surface it without leaking credentials.
</summary>
</member>
<member name="P:Csob.Client.CsobApiException.ErrorCodes">
<summary>Machine-readable error codes parsed from the ČSOB <c>errors[].error</c> array (best effort).</summary>
</member>
<member name="P:Csob.Client.CsobApiException.RawBody">
<summary>Raw response body (already credential-free — it is the upstream's own error payload).</summary>
</member>
<member name="T:Csob.Client.CsobApiPaths">
<summary>
Central registry of ČSOB PSD2 resource path templates (relative to <c>CSOB_API_BASE_URL</c>).
Paths follow the Czech Open Banking Standard (COBS) as implemented by ČSOB. The account-scoped
AISP paths and the PISP <c>/my/payments/.../sign/{signId}</c> authorization flow are confirmed
against the ČSOB developer portal; the remaining COBS resources use the same <c>/my/</c> prefix.
Keep every path here so a portal-specific correction is a single-file change.
</summary>
</member>
<member name="T:Csob.Client.CsobHttpClientProvider">
<summary>
Provides <see cref="T:System.Net.Http.HttpClient"/> instances configured for mutual TLS with a per-request eIDAS
client certificate. ČSOB requires the client certificate at the transport layer, so a single
shared client cannot be used across tenants.
Clients are cached by certificate thumbprint and reused for connection pooling. In practice the
certificate identifies the TPP application (not the PSU), so the number of distinct certificates
is small and bounded by the set of calling tenants. Certificates and clients live in memory only
and never touch disk.
</summary>
</member>
<member name="M:Csob.Client.CsobHttpClientProvider.GetClient(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Returns a (cached) mutual-TLS <see cref="T:System.Net.Http.HttpClient"/> presenting <paramref name="certificate"/>.
A fresh certificate instance is built per request; if an equivalent one (same thumbprint) is
already cached, the redundant instance is disposed so it does not leak.
</summary>
</member>
<member name="T:Csob.Configuration.CsobSettings">
<summary>
Service configuration resolved from environment variables.
This service is a stateless, multi-tenant proxy in front of the ČSOB PSD2 (Open Banking)
API. Unlike the sibling iDoklad service, it holds <b>no per-client secrets</b>: the eIDAS
client certificate, OAuth client id/secret, access token, API key and TPP name are all
supplied per request as HTTP headers by the calling client service
(see <see cref="T:Csob.Credentials.CredentialConstants"/>). Only non-secret infrastructure
configuration (API/OAuth base URLs, app metadata, reverse-proxy prefix, timeout) lives here.
</summary>
</member>
<member name="P:Csob.Configuration.CsobSettings.RootPath">
<summary>Public reverse-proxy prefix (e.g. <c>/apps/csob</c>) injected by AppFactory.</summary>
</member>
<member name="P:Csob.Configuration.CsobSettings.ApiBaseUrl">
<summary>
Base URL of the ČSOB PSD2 resource API. Production default; override for any other
environment. All AISP/PISP/consent path templates are appended to this base.
</summary>
</member>
<member name="P:Csob.Configuration.CsobSettings.OAuthAuthorizeUrl">
<summary>
OAuth2 authorization endpoint (Authorization Code flow, PSU redirect). Production default;
verify against the current ČSOB developer portal as the host may change.
</summary>
</member>
<member name="P:Csob.Configuration.CsobSettings.OAuthTokenUrl">
<summary>
OAuth2 token endpoint (code-&gt;token and refresh). Production default; verify against the
current ČSOB developer portal.
</summary>
</member>
<member name="P:Csob.Configuration.CsobSettings.RequestTimeoutSeconds">
<summary>Upstream HTTP request timeout in seconds.</summary>
</member>
<member name="T:Csob.Controllers.AccountsController">
<summary>
AISP account information. All endpoints require the ČSOB credential headers
(eIDAS certificate, access token, API key, TPP name). See the Swagger description for details.
</summary>
</member>
<member name="M:Csob.Controllers.AccountsController.List(System.Nullable{System.Int32},System.Nullable{System.Int32},System.String,System.String,System.Threading.CancellationToken)">
<summary>List the PSU's payment accounts (paged).</summary>
</member>
<member name="M:Csob.Controllers.AccountsController.Balance(System.String,System.String,System.Threading.CancellationToken)">
<summary>Get the balance(s) of an account.</summary>
</member>
<member name="M:Csob.Controllers.AccountsController.Transactions(System.String,System.Nullable{System.Int32},System.Nullable{System.Int32},System.String,System.String,System.String,System.String,System.Threading.CancellationToken)">
<summary>List booked transactions of an account (paged, optional date range).</summary>
</member>
<member name="M:Csob.Controllers.AccountsController.Awaiting(System.String,System.Nullable{System.Int32},System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>List awaiting (pending) transactions of an account.</summary>
</member>
<member name="M:Csob.Controllers.AccountsController.StandingOrders(System.String,System.Nullable{System.Int32},System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>List the account's existing standing orders.</summary>
</member>
<member name="M:Csob.Controllers.AccountsController.StandingOrderDetail(System.String,System.String,System.Threading.CancellationToken)">
<summary>Get a standing-order detail for the account.</summary>
</member>
<member name="M:Csob.Controllers.AccountsController.DirectDebits(System.String,System.Nullable{System.Int32},System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>List the account's direct-debit mandates.</summary>
</member>
<member name="T:Csob.Controllers.ConsentsController">
<summary>
Common PSU consent lifecycle. Requires the ČSOB credential headers. The consent body is
forwarded to ČSOB as raw JSON (COBS consent shape).
</summary>
</member>
<member name="M:Csob.Controllers.ConsentsController.Create(System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Create a consent.</summary>
</member>
<member name="M:Csob.Controllers.ConsentsController.Detail(System.String,System.Threading.CancellationToken)">
<summary>Get a consent detail.</summary>
</member>
<member name="M:Csob.Controllers.ConsentsController.Delete(System.String,System.Threading.CancellationToken)">
<summary>Revoke a consent.</summary>
</member>
<member name="T:Csob.Controllers.DirectDebitsController">
<summary>
PISP direct-debit mandate initiation and its authorization (sign) flow. Requires the ČSOB
credential headers. The mandate body is forwarded to ČSOB as raw JSON (COBS direct-debit shape).
</summary>
</member>
<member name="M:Csob.Controllers.DirectDebitsController.Initiate(System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Initiate a direct-debit mandate.</summary>
</member>
<member name="M:Csob.Controllers.DirectDebitsController.Detail(System.String,System.Threading.CancellationToken)">
<summary>Get the direct-debit mandate detail.</summary>
</member>
<member name="M:Csob.Controllers.DirectDebitsController.Status(System.String,System.Threading.CancellationToken)">
<summary>Get the direct-debit instruction status.</summary>
</member>
<member name="M:Csob.Controllers.DirectDebitsController.Cancel(System.String,System.Threading.CancellationToken)">
<summary>Revoke a direct-debit mandate.</summary>
</member>
<member name="M:Csob.Controllers.DirectDebitsController.StartSign(System.String,System.String,System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Start the authorization (SCA) of a direct-debit mandate. Returns the PSU redirect details.</summary>
</member>
<member name="M:Csob.Controllers.DirectDebitsController.SignStatus(System.String,System.String,System.Threading.CancellationToken)">
<summary>Get the current state of an authorization (sign) transaction.</summary>
</member>
<member name="M:Csob.Controllers.DirectDebitsController.FinalizeSign(System.String,System.String,System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Finalize an authorization (sign) transaction.</summary>
</member>
<member name="T:Csob.Controllers.MetaController">
<summary>Service metadata endpoints. These do not require ČSOB credentials.</summary>
</member>
<member name="M:Csob.Controllers.MetaController.Health">
<summary>Liveness probe.</summary>
</member>
<member name="M:Csob.Controllers.MetaController.Version">
<summary>Service name, version and the configured upstream endpoints (no secrets).</summary>
</member>
<member name="M:Csob.Controllers.MetaController.Status">
<summary>
Reports the non-secret configuration. This service is stateless and multi-tenant: it holds
no credentials, so there is nothing per-client to report — every secret is supplied per
request via headers.
</summary>
</member>
<member name="T:Csob.Controllers.OAuthController">
<summary>
OAuth2 Authorization Code helper for the ČSOB PSD2 PSU consent flow. Build the authorization URL,
redirect the PSU to it, then exchange the returned code for tokens. The token/refresh calls run
over mutual TLS, so they require the <c>X-CSOB-Certificate</c> header; client id/secret are also
supplied per request (this service is multi-tenant).
</summary>
</member>
<member name="M:Csob.Controllers.OAuthController.AuthorizationUrl(System.String,System.String,System.String)">
<summary>Build the ČSOB authorization URL to which the PSU must be redirected.</summary>
</member>
<member name="M:Csob.Controllers.OAuthController.Token(Csob.Models.TokenExchangeRequest,System.Threading.CancellationToken)">
<summary>Exchange an authorization code for an access/refresh token (mutual TLS).</summary>
</member>
<member name="M:Csob.Controllers.OAuthController.Refresh(Csob.Models.TokenRefreshRequest,System.Threading.CancellationToken)">
<summary>Refresh an access token using a refresh token (mutual TLS).</summary>
</member>
<member name="T:Csob.Controllers.PaymentsController">
<summary>
PISP single payment initiation and its authorization (sign) flow. Requires the ČSOB credential
headers. After <c>POST /payments</c> the response carries <c>signInfo.signId</c>; use it with the
sign endpoints to drive Strong Customer Authentication (SCA).
</summary>
</member>
<member name="M:Csob.Controllers.PaymentsController.Initiate(Csob.Models.PaymentInitiationRequest,System.Threading.CancellationToken)">
<summary>Initiate a domestic (DMCT) or SEPA (ESCT) payment.</summary>
</member>
<member name="M:Csob.Controllers.PaymentsController.Detail(System.String,System.Threading.CancellationToken)">
<summary>Get the full payment detail.</summary>
</member>
<member name="M:Csob.Controllers.PaymentsController.Status(System.String,System.Threading.CancellationToken)">
<summary>Get the payment instruction status.</summary>
</member>
<member name="M:Csob.Controllers.PaymentsController.Cancel(System.String,System.Threading.CancellationToken)">
<summary>Cancel a not-yet-authorized payment.</summary>
</member>
<member name="M:Csob.Controllers.PaymentsController.StartSign(System.String,System.String,System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Start the authorization (SCA) of a payment. Returns the PSU redirect details.</summary>
</member>
<member name="M:Csob.Controllers.PaymentsController.SignStatus(System.String,System.String,System.Threading.CancellationToken)">
<summary>Get the current state of an authorization (sign) transaction.</summary>
</member>
<member name="M:Csob.Controllers.PaymentsController.FinalizeSign(System.String,System.String,System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Finalize an authorization (sign) transaction.</summary>
</member>
<member name="T:Csob.Controllers.StandingOrdersController">
<summary>PISP standing-order initiation and its authorization (sign) flow. Requires the ČSOB credential headers.</summary>
</member>
<member name="M:Csob.Controllers.StandingOrdersController.Initiate(Csob.Models.StandingOrderInitiationRequest,System.Threading.CancellationToken)">
<summary>Initiate a standing order.</summary>
</member>
<member name="M:Csob.Controllers.StandingOrdersController.Detail(System.String,System.Threading.CancellationToken)">
<summary>Get the standing-order detail.</summary>
</member>
<member name="M:Csob.Controllers.StandingOrdersController.Status(System.String,System.Threading.CancellationToken)">
<summary>Get the standing-order instruction status.</summary>
</member>
<member name="M:Csob.Controllers.StandingOrdersController.Cancel(System.String,System.Threading.CancellationToken)">
<summary>Cancel a standing order.</summary>
</member>
<member name="M:Csob.Controllers.StandingOrdersController.StartSign(System.String,System.String,System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Start the authorization (SCA) of a standing order. Returns the PSU redirect details.</summary>
</member>
<member name="M:Csob.Controllers.StandingOrdersController.SignStatus(System.String,System.String,System.Threading.CancellationToken)">
<summary>Get the current state of an authorization (sign) transaction.</summary>
</member>
<member name="M:Csob.Controllers.StandingOrdersController.FinalizeSign(System.String,System.String,System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Finalize an authorization (sign) transaction.</summary>
</member>
<member name="T:Csob.Credentials.CredentialConstants">
<summary>
Names of the HTTP headers that carry per-request ČSOB credentials and context.
This service is multi-tenant: it stores no credentials itself. Every sensitive value is
supplied per request in a header (never the query string or body) and is forwarded to ČSOB.
Headers must therefore only be sent over TLS. Nothing here is logged or persisted.
</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.CertificateHeader">
<summary>
eIDAS client certificate (QWAC) as a Base64-encoded PKCS#12 / PFX bundle, including the
private key and the full chain. Used to establish the mutual-TLS connection to ČSOB.
Analogous to Node's <c>https.Agent({ pfx, passphrase })</c>.
</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.CertificatePasswordHeader">
<summary>Optional passphrase protecting the PFX in <see cref="F:Csob.Credentials.CredentialConstants.CertificateHeader"/>.</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.AccessTokenHeader">
<summary>OAuth2 Bearer access token obtained for the PSU; forwarded as <c>Authorization: Bearer</c>.</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.ApiKeyHeader">
<summary>ČSOB application API key; forwarded as the <c>APIKEY</c> header.</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.TppNameHeader">
<summary>TPP (third-party provider) organisation name; forwarded as the <c>TPP-Name</c> header.</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.ClientIdHeader">
<summary>OAuth2 client id of the registered TPP application (used by the OAuth helper endpoints).</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.ClientSecretHeader">
<summary>OAuth2 client secret of the registered TPP application (used by the OAuth helper endpoints).</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.UserInvolvedHeader">
<summary>Whether the PSU is online/involved in the request; forwarded as <c>User-Involved</c> (default false).</summary>
</member>
<member name="F:Csob.Credentials.CredentialConstants.UserIpAddressHeader">
<summary>PSU IP address; forwarded as <c>User-IP-Address</c>.</summary>
</member>
<member name="T:Csob.Credentials.CsobCredentials">
<summary>
Fully resolved set of per-request credentials and PSU context used to call the ČSOB PSD2 API.
Built from request headers by <see cref="T:Csob.Credentials.RequestCredentialsProvider"/>; never logged.
</summary>
</member>
<member name="P:Csob.Credentials.CsobCredentials.AccessToken">
<summary>OAuth2 Bearer access token (forwarded as <c>Authorization: Bearer</c>).</summary>
</member>
<member name="P:Csob.Credentials.CsobCredentials.ApiKey">
<summary>ČSOB application API key (forwarded as <c>APIKEY</c>).</summary>
</member>
<member name="P:Csob.Credentials.CsobCredentials.TppName">
<summary>TPP organisation name (forwarded as <c>TPP-Name</c>).</summary>
</member>
<member name="P:Csob.Credentials.CsobCredentials.Certificate">
<summary>
eIDAS client certificate (with private key) for mutual TLS. Optional at the type level so
metadata endpoints can resolve context, but required for any real upstream call.
</summary>
</member>
<member name="P:Csob.Credentials.CsobCredentials.UserInvolved">
<summary>Whether the PSU is online for this request (<c>User-Involved</c>); defaults to false.</summary>
</member>
<member name="P:Csob.Credentials.CsobCredentials.UserIpAddress">
<summary>Optional PSU IP address (<c>User-IP-Address</c>).</summary>
</member>
<member name="T:Csob.Credentials.MissingCredentialsException">
<summary>
Raised when a request does not provide the credential headers required to call ČSOB.
Translated to HTTP 401 by the exception-handling middleware.
</summary>
</member>
<member name="T:Csob.Credentials.RequestCredentialsProvider">
<summary>
Resolves the ČSOB credentials and PSU context for the current request, exclusively from HTTP
headers (this service stores no secrets). Missing required headers produce a 401; a malformed
certificate or wrong passphrase produces a 400 (via <see cref="T:System.Security.Cryptography.CryptographicException"/>).
</summary>
</member>
<member name="M:Csob.Credentials.RequestCredentialsProvider.Header(System.String)">
<summary>Reads a single request header, returning null when absent or blank.</summary>
</member>
<member name="M:Csob.Credentials.RequestCredentialsProvider.TryBuildCertificate">
<summary>
Builds the eIDAS client certificate from the Base64 PFX header (+ optional passphrase).
Returns null when no certificate header is present.
</summary>
<exception cref="T:System.Security.Cryptography.CryptographicException">The header is not valid Base64 or the PFX/passphrase is invalid.</exception>
</member>
<member name="M:Csob.Credentials.RequestCredentialsProvider.Resolve">
<summary>
Resolves the full credential set required for an AISP/PISP/consent call. Throws
<see cref="T:Csob.Credentials.MissingCredentialsException"/> if any required header is absent.
</summary>
</member>
<member name="T:Csob.Infrastructure.CredentialHeadersOperationFilter">
<summary>
Documents the per-request credential headers in Swagger. Metadata endpoints need none; the
OAuth helper needs the certificate + client id/secret; every other (AISP/PISP/consent) endpoint
needs the certificate + access token + API key + TPP name. Headers are marked optional at the
schema level (the service validates them at runtime) but the descriptions state what is required.
</summary>
</member>
<member name="T:Csob.Infrastructure.ExceptionHandlingMiddleware">
<summary>
Translates domain exceptions into JSON <see cref="T:Microsoft.AspNetCore.Mvc.ProblemDetails"/> responses. Credentials are
never logged — only upstream status codes and error codes (the upstream's own payload). Errors
are always logged (no silent failures).
</summary>
</member>
<member name="T:Csob.Models.Amount">
<summary>Monetary amount with ISO 4217 currency.</summary>
</member>
<member name="T:Csob.Models.AmountContainer">
<summary>Wrapper matching the <c>amount</c> object whose <c>instructedAmount</c> holds the value/currency.</summary>
</member>
<member name="T:Csob.Models.AccountIdentification">
<summary>Account number identification. For domestic/SEPA writes only <c>iban</c> is required.</summary>
</member>
<member name="T:Csob.Models.AccountReference">
<summary>Account reference with optional currency (<c>debtorAccount</c>/<c>creditorAccount</c>).</summary>
</member>
<member name="P:Csob.Models.ServiceLevel.Code">
<summary>Payment scheme: DMCT (domestic), ESCT (SEPA), XBCT (cross-border), EXCT, NXCT.</summary>
</member>
<member name="P:Csob.Models.PaymentTypeInformation.InstructionPriority">
<summary>NORM (default), HIGH (express) or INST (instant).</summary>
</member>
<member name="T:Csob.Models.Party">
<summary>A party (debtor/creditor/ultimate*). Identification is variable, so kept as raw JSON.</summary>
</member>
<member name="T:Csob.Models.RemittanceInformation">
<summary>
Remittance information. <c>unstructured</c> is free text (Czech symbols may be encoded as
<c>/VS/.../SS/.../KS/...</c>); <c>structured</c> varies (its <c>reference</c> may be a string or
an array) so it is passed through as raw JSON.
</summary>
</member>
<member name="T:Csob.Models.TokenExchangeRequest">
<summary>Body for <c>POST /oauth/token</c> (Authorization Code grant). Secrets travel in headers.</summary>
</member>
<member name="P:Csob.Models.TokenExchangeRequest.Code">
<summary>Authorization code returned to the redirect URI after PSU consent.</summary>
</member>
<member name="P:Csob.Models.TokenExchangeRequest.RedirectUri">
<summary>Redirect URI registered for the TPP app; must match the one used to obtain the code.</summary>
</member>
<member name="T:Csob.Models.TokenRefreshRequest">
<summary>Body for <c>POST /oauth/refresh</c> (Refresh Token grant).</summary>
</member>
<member name="T:Csob.Models.AuthorizationUrlResponse">
<summary>Response of <c>GET /oauth/authorization-url</c>.</summary>
</member>
<member name="P:Csob.Models.AuthorizationUrlResponse.AuthorizationUrl">
<summary>Fully-built ČSOB authorization URL to which the PSU must be redirected.</summary>
</member>
<member name="P:Csob.Models.AuthorizationUrlResponse.State">
<summary>The opaque <c>state</c> value echoed back on the redirect (CSRF protection).</summary>
</member>
<member name="P:Csob.Models.PaymentIdentification.InstructionIdentification">
<summary>Unique instruction id assigned by the TPP (idempotency key). Max 35 chars.</summary>
</member>
<member name="T:Csob.Models.PaymentInitiationRequest">
<summary>
Payment initiation request (<c>POST /my/payments</c>). Covers domestic (DMCT) and SEPA (ESCT)
payments — SEPA-only fields (creditor address, agent, ultimate parties, purpose) are optional.
Any additional COBS field not modelled here is preserved via <see cref="P:Csob.Models.PaymentInitiationRequest.AdditionalData"/>.
</summary>
</member>
<member name="P:Csob.Models.PaymentInitiationRequest.AdditionalData">
<summary>Any COBS fields not explicitly modelled are forwarded to ČSOB unchanged.</summary>
</member>
<member name="P:Csob.Models.StandingOrderExecution.Interval">
<summary>DAILY, WEEKLY, MONTHLY, BI_MONTHLY, QUARTERLY, HALFYEARLY, YEARLY, SINGLE, IRREGULAR.</summary>
</member>
<member name="P:Csob.Models.StandingOrderExecution.IntervalDue">
<summary>Day within the interval (e.g. day-of-month "25").</summary>
</member>
<member name="P:Csob.Models.StandingOrderExecution.Mode">
<summary>e.g. MAX_AMOUNT_EXCEEDED, UNTIL_CANCELLATION.</summary>
</member>
<member name="P:Csob.Models.StandingOrderDetail.Exceptions">
<summary>Optional <c>exceptions</c> block (stoppages/breaks); shape varies, kept as raw JSON.</summary>
</member>
<member name="P:Csob.Models.StandingOrderDetail.Validity">
<summary>Optional <c>validity</c> block (lastExecutionDate/maxAmount); kept as raw JSON.</summary>
</member>
<member name="T:Csob.Models.StandingOrderInitiationRequest">
<summary>Standing-order initiation request (<c>POST /my/standingorders</c>).</summary>
</member>
<member name="T:Csob.Services.AccountsService">
<summary>AISP account information (accounts, balance, transactions, standing orders, direct debits).</summary>
</member>
<member name="T:Csob.Services.TransactionQuery">
<summary>Optional filters for the transactions listing (forwarded as query parameters).</summary>
</member>
<member name="P:Csob.Services.TransactionQuery.DateFrom">
<summary>ISO date (YYYY-MM-DD) lower bound.</summary>
</member>
<member name="P:Csob.Services.TransactionQuery.DateTo">
<summary>ISO date (YYYY-MM-DD) upper bound.</summary>
</member>
<member name="T:Csob.Services.ConsentsService">
<summary>
Common PSU consent lifecycle (create / detail / revoke). The consent request body varies
across COBS profiles, so it is accepted and forwarded as raw JSON.
</summary>
</member>
<member name="T:Csob.Services.DirectDebitsService">
<summary>
PISP direct-debit mandate initiation, detail/status, revocation and the sign (SCA) flow.
The mandate creation body varies across COBS profiles, so it is accepted and forwarded as raw JSON.
</summary>
</member>
<member name="T:Csob.Services.OAuthService">
<summary>
OAuth2 Authorization Code helper for the ČSOB PSD2 flow. Builds the PSU authorization URL and
exchanges/refreshes tokens against the ČSOB token endpoint. The token endpoint is behind mutual
TLS, so the client certificate header is required for the token/refresh calls. Client id/secret
are taken from per-request headers (this service is multi-tenant and stores no app credentials).
</summary>
</member>
<member name="M:Csob.Services.OAuthService.BuildAuthorizationUrl(System.String,System.String,System.String)">
<summary>Builds the authorization URL to which the PSU must be redirected.</summary>
</member>
<member name="T:Csob.Services.PaymentsService">
<summary>PISP single payment initiation, status/detail, cancellation and the sign (SCA) flow.</summary>
</member>
<member name="M:Csob.Services.PaymentsService.StartSignAsync(System.String,System.String,System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Starts transaction authorization (SCA). Returns the redirect details for the PSU.</summary>
</member>
<member name="M:Csob.Services.PaymentsService.SignStatusAsync(System.String,System.String,System.Threading.CancellationToken)">
<summary>Gets the current state of an authorization (sign) transaction.</summary>
</member>
<member name="M:Csob.Services.PaymentsService.FinalizeSignAsync(System.String,System.String,System.Text.Json.Nodes.JsonNode,System.Threading.CancellationToken)">
<summary>Finalizes an authorization (sign) transaction.</summary>
</member>
<member name="T:Csob.Services.StandingOrdersService">
<summary>PISP standing-order initiation, detail/status, cancellation and the sign (SCA) flow.</summary>
</member>
</members>
</doc>
Binary file not shown.
+9
View File
@@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}