summaryrefslogtreecommitdiff
path: root/bank/src/main/kotlin/tech/libeufin/bank/JSON.kt
blob: dac660da2d1c8f698ac61b9fbb686f468ac2d6bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
 * This file is part of LibEuFin.
 * Copyright (C) 2019 Stanisci and Dold.

 * LibEuFin is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation; either version 3, or
 * (at your option) any later version.

 * LibEuFin is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
 * Public License for more details.

 * You should have received a copy of the GNU Affero General Public
 * License along with LibEuFin; see the file COPYING.  If not, see
 * <http://www.gnu.org/licenses/>
 */

package tech.libeufin.sandbox

import tech.libeufin.util.PaymentInfo

data class WithdrawalRequest(
    /**
     * Note: the currency is redundant, because at each point during
     * the execution the Demobank should have a handle of the currency.
     */
    val amount: String // $CURRENCY:X.Y
)
data class BalanceJson(
    val amount: String,
    val credit_debit_indicator: String
)
data class Demobank(
    val currency: String,
    val name: String,
    val userDebtLimit: Int,
    val bankDebtLimit: Int,
    val allowRegistrations: Boolean
)
/**
 * Used to show the list of Ebics hosts that exist
 * in the system.
 */
data class EbicsHostsResponse(
    val ebicsHosts: List<String>
)

data class EbicsHostCreateRequest(
    val hostID: String,
    val ebicsVersion: String
)

/**
 * List type that show all the payments existing in the system.
 */
data class AccountTransactions(
    val payments: MutableList<PaymentInfo> = mutableListOf()
)

/**
 * Used to create AND show one Ebics subscriber.
 */
data class EbicsSubscriberInfo(
    val hostID: String,
    val partnerID: String,
    val userID: String,
    val systemID: String? = null,
    val demobankAccountLabel: String
)

data class AdminGetSubscribers(
    var subscribers: MutableList<EbicsSubscriberInfo> = mutableListOf()
)

/**
 * The following definition is obsolete because it
 * doesn't allow to specify a demobank that will host
 * the Ebics subscriber.  */
data class EbicsSubscriberObsoleteApi(
    val hostID: String,
    val partnerID: String,
    val userID: String,
    val systemID: String? = null
)

/**
 * Allows the admin to associate a new bank account
 * to a EBICS subscriber.
 */
data class EbicsBankAccountRequest(
    val subscriber: EbicsSubscriberObsoleteApi,
    val iban: String,
    val bic: String,
    val name: String,
    /**
     * This value labels the bank account to be created
     * AND its owner.  The 'owner' is a bank's customer
     * whose username equals this label AND has the rights
     * over such bank accounts.
     */
    val label: String
)

data class CustomerRegistration(
    val username: String,
    val password: String,
    val isPublic: Boolean = false,
    // When missing, it's autogenerated.
    val iban: String?,
    // When missing, stays null in the DB.
    val name: String?
)

// Could be used as a general bank account info container.
data class PublicAccountInfo(
    val balance: String,
    val iban: String,
    // Name / Label of the bank account _and_ of the
    // Sandbox username that owns it.
    val accountLabel: String
    // more ..?
)

data class CamtParams(
    // name/label of the bank account to query.
    val bankaccount: String,
    val type: Int,
    // need range parameter
)

data class TalerWithdrawalStatus(
    val selection_done: Boolean,
    val transfer_done: Boolean,
    val amount: String,
    val wire_types: List<String> = listOf("iban"),
    val suggested_exchange: String? = null,
    val sender_wire: String? = null,
    val aborted: Boolean,
    // Not needed with CLI wallets.
    val confirm_transfer_url: String?
)

data class TalerWithdrawalSelection(
    val reserve_pub: String,
    val selected_exchange: String?
)

data class SandboxConfig(
    val currency: String,
    val version: String,
    val name: String
)