Professionelle API-Dokumentation und interaktive Verwaltung für das FinTS Banking Backend. Voller Lese- und Schreibzugriff auf Stammdaten, Kontobewegungen und TAN-Verfahren.
Die Grundlage: Zuerst muss eine Bank existieren, dann können sich Benutzer (mit einer sicheren PIN) registrieren.
mutation SetupBankAndUser {
# 1. Bank anlegen
createBank(input: {
bankCode: "12345678"
name: "Demo Bank AG"
}) {
id
bankCode
bankName
}
# 2. Benutzer anlegen (PIN wird serverseitig sicher gehasht)
createUser(input: {
bankId: 1
userId: "max.mustermann"
plaintextPin: "12345"
firstName: "Max"
lastName: "Mustermann"
}) {
id
userId
name
}
}
Nachdem der Benutzer existiert, können Konten mit initialem Saldo erstellt werden.
mutation CreateAccount {
createAccount(input: {
bankId: 1
userId: 1
iban: "DE12345678901234567890"
accountNumber: "1234567890"
currency: "EUR"
balance: 2500.50
}) {
id
iban
balance
}
}
Simulation von Geldeingängen und Abgängen für das angelegte Konto.
mutation CreateTransaction {
createTransaction(input: {
accountId: 1
amount: -45.00
currency: "EUR"
isCredit: false
bookingDate: "2026-05-13"
valueDate: "2026-05-13"
creditorName: "Supermarkt GmbH"
bookingText: "Wocheneinkauf"
status: "booked"
}) {
id
amount
creditorName
status
}
}
Alle Root-Queries und groessere Navigations-Collections (z.B. account.transactions) sind cursor-paginiert. Argumente: first/after (vorwaerts), last/before (rueckwaerts), zusaetzlich where und order. Response ist eine Connection mit nodes, edges, pageInfo und totalCount. Server-seitiges Hard-Limit: 250 Items pro Seite.
query GetUserWithRecentTransactions {
users(
where: { userId: { eq: "u1000001" } }
first: 1
) {
totalCount
nodes {
id
name
status
# accounts ist flach (kleine Collection, kein Paging)
accounts(order: { balance: DESC }) {
iban
balance
currency
# transactions ist paginiert — die naechste Seite holt
# man mit (after: $endCursor, first: 25)
transactions(
order: { bookingDate: DESC }
first: 5
) {
totalCount
nodes {
amount
creditorName
bookingDate
}
pageInfo {
hasNextPage
endCursor
}
}
}
}
}
}