$git clone https://github.com/erwinkramer/bank-apiThe Bank API is a design reference project suitable to bootstrap development for a compliant and modern API.
| 1 | # Bank API 🏦 |
| 2 | |
| 3 | [![CC BY-NC-SA 4.0][cc-by-nc-sa-shield]][cc-by-nc-sa] |
| 4 |  |
| 5 | |
| 6 |  |
| 7 | |
| 8 |  |
| 9 | |
| 10 |  |
| 11 | |
| 12 | The Bank API is a design reference project suitable to bootstrap development for a compliant and modern API. |
| 13 | |
| 14 | Explore the live [🌐 API with sidecars](https://app.bravestone-75bd2261.germanywestcentral.azurecontainerapps.io/v1/docs) and [🌐 MCP server](https://app.bravestone-75bd2261.germanywestcentral.azurecontainerapps.io/mcp/.well-known/oauth-protected-resource) (both hosted on Azure Container Apps). |
| 15 | |
| 16 | ## Compliance |
| 17 | |
| 18 | ### API |
| 19 | |
| 20 | ✅ [OWASP API Security Top 10 - v2023](https://owasp.org/API-Security/editions/2023/en/0x11-t10/) via [Spectral OWASP API Security ruleset](https://github.com/stoplightio/spectral-owasp-ruleset?tab=readme-ov-file#spectral-owasp-api-security) |
| 21 | |
| 22 | ✅ [OpenAPI Specification v3.2.0](https://spec.openapis.org/oas/v3.2.0.html) via [Spectral "oas" ruleset](https://docs.stoplight.io/docs/spectral/4dec24461f3af-open-api-rules) |
| 23 | |
| 24 | ✅ [NLGov (Dutch Public Sector) REST API Design Rules 2.2.1](https://github.com/Logius-standaarden/API-Design-Rules/) via [API Design Rules ruleset](https://github.com/Logius-standaarden/publicatie/blob/main/api/adr/2.2.1/media/linter.yaml) |
| 25 | |
| 26 | ✅ Additional naming conventions, structure, and clarity via [Bank API project ruleset](Specs.Ruleset/ruleset.bank.yml) |
| 27 | |
| 28 | ✅ [California Consumer Privacy Act (CCPA)](https://oag.ca.gov/privacy/ccpa) and [General Data Protection Regulation (GDPR)](https://europa.eu/youreurope/business/dealing-with-customers/data-protection/data-protection-gdpr/index_en.htm#:~:text=The%20GDPR%20sets%20out%20detailed,people%20living%20in%20the%20EU.) via [ASP.Net Core Compliance](https://andrewlock.net/redacting-sensitive-data-with-microsoft-extensions-compliance/) |
| 29 | |
| 30 | ✅ [RFC 7515 - JSON Web Signature (JWS)](https://datatracker.ietf.org/doc/html/rfc7515) for response signing, via `X-JWS-Signature` header |
| 31 | |
| 32 | ✅ [RFC 7517 - JSON Web Key Set (JWKs)](https://datatracker.ietf.org/doc/html/rfc7517#appendix-A.1) for validating JWS responses, via `/.well-known/jwks.json` endpoint |
| 33 | |
| 34 | ### EDA ([Event-driven architecture](https://en.wikipedia.org/wiki/Event-driven_architecture)) with [outbox-pattern](https://en.wikipedia.org/wiki/Inbox_and_outbox_pattern#The_outbox_pattern) |
| 35 | |
| 36 | ✅ [OpenAPI Specification v3.2.0 - webhook field](https://spec.openapis.org/oas/v3.2.0.html#oas-webhooks) |
| 37 | |
| 38 | ✅ [CloudEvents - Version 1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md) for defining the format of event data |
| 39 | |
| 40 | ✅ [CloudEvents - Version 1.0.2 - HTTP Protocol Binding](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/http-protocol-binding.md) for HTTP transport |
| 41 | |
| 42 | ✅ [CloudEvents - Version 1.0.2 - HTTP 1.1 Web Hooks for Event Delivery](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/http-webhook.md) for delivering events via the webhook pattern |
| 43 | |
| 44 | ### MCP Server |
| 45 | |
| 46 | ✅ [Model Context Protocol, version 2025-11-25](https://modelcontextprotocol.io/specification/2025-11-25) |
| 47 | |
| 48 | ## Technology stack |
| 49 | |
| 50 | - [ASP.NET Core 11.0 - Minimal API](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-11.0) for API development, with following base services: |
| 51 | |
| 52 | - [Resilience](https://learn.microsoft.com/en-us/dotnet/core/resilience/http-resilience?tabs=package-reference) for resilience when calling downstream APIs |
| 53 | |
| 54 | - [Compliance](https://andrewlock.net/redacting-sensitive-data-with-microsoft-extensions-compliance/) for redacting sensitive data |
| 55 | |
| 56 | - [Health checks](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks) for checking health status |
| 57 | |
| 58 | - [Service Discovery](https://learn.microsoft.com/en-us/dotnet/core/extensions/service-discovery?tabs=package-reference) for resolving endpoints from config |
| 59 | |
| 60 | - [Hybrid Cache](https://learn.microsoft.com/ |