[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-cashless2ecash] branch master updated: docs: improve documentatio
From: |
gnunet |
Subject: |
[taler-cashless2ecash] branch master updated: docs: improve documentation |
Date: |
Sun, 24 Mar 2024 21:54:22 +0100 |
This is an automated email from the git hooks/post-receive script.
joel-haeberli pushed a commit to branch master
in repository cashless2ecash.
The following commit(s) were added to refs/heads/master by this push:
new 8d788b2 docs: improve documentation
8d788b2 is described below
commit 8d788b2b6a319deef49f267b8966bfe226bcbc20
Author: Joel-Haeberli <haebu@rubigen.ch>
AuthorDate: Sun Mar 24 21:53:55 2024 +0100
docs: improve documentation
---
c2ec/postgres.go | 2 +-
data/c2ec_schema.sql | 8 +-
docs/content/abstract.tex | 8 +-
docs/content/appendix/meeting_notes.tex | 44 ++-
docs/content/architecture/c2ec.tex | 113 +++++--
docs/content/architecture/overview.tex | 86 ++----
docs/content/architecture/terminal.tex | 0
docs/content/architecture/wallee.tex | 18 +-
docs/content/architecture/wallet.tex | 5 +
docs/content/implementation/exchange.tex | 2 +-
docs/content/introduction/goal.tex | 6 +-
docs/content/introduction/introduction.tex | 43 +--
docs/listings/specs/api-c2ec.txt | 342 +++++++++++++++++++++
docs/listings/specs/nonce2ecash_api_spec.yml | 115 -------
docs/pictures/database/relationships.png | Bin 0 -> 39397 bytes
docs/pictures/database/table_terminal.png | Bin 28726 -> 31455 bytes
docs/pictures/database/table_terminal_provider.png | Bin 18150 -> 22439 bytes
docs/pictures/database/table_withdrawal.png | Bin 30494 -> 44391 bytes
docs/pictures/diagrams/overview.png | Bin 0 -> 41611 bytes
.../diagrams/withdrawal-op-state-transition.png | Bin 0 -> 17994 bytes
docs/project.bib | 42 +++
docs/thesis.pdf | Bin 1388029 -> 1463120
bytes
docs/thesis.tex | 14 +-
.../{nonce2ecash-erd => c2ec-erd}/anomalies.html | 4 +-
.../{nonce2ecash-erd => c2ec-erd}/anomalies.js | 0
.../admin-lte/bootstrap/css/bootstrap-theme.css | 0
.../bootstrap/css/bootstrap-theme.css.map | 0
.../bootstrap/css/bootstrap-theme.min.css | 0
.../bootstrap/css/bootstrap-theme.min.css.map | 0
.../bower/admin-lte/bootstrap/css/bootstrap.css | 0
.../admin-lte/bootstrap/css/bootstrap.css.map | 0
.../admin-lte/bootstrap/css/bootstrap.min.css | 0
.../admin-lte/bootstrap/css/bootstrap.min.css.map | 0
.../fonts/glyphicons-halflings-regular.eot | Bin
.../fonts/glyphicons-halflings-regular.svg | 0
.../fonts/glyphicons-halflings-regular.ttf | Bin
.../fonts/glyphicons-halflings-regular.woff | Bin
.../fonts/glyphicons-halflings-regular.woff2 | Bin
.../bower/admin-lte/bootstrap/js/bootstrap.js | 0
.../bower/admin-lte/bootstrap/js/bootstrap.min.js | 0
.../bower/admin-lte/bootstrap/js/npm.js | 0
.../bower/admin-lte/dist/css/AdminLTE.css | 0
.../bower/admin-lte/dist/css/AdminLTE.min.css | 0
.../dist/css/alt/AdminLTE-bootstrap-social.css | 0
.../dist/css/alt/AdminLTE-bootstrap-social.min.css | 0
.../dist/css/alt/AdminLTE-fullcalendar.css | 0
.../dist/css/alt/AdminLTE-fullcalendar.min.css | 0
.../admin-lte/dist/css/alt/AdminLTE-select2.css | 0
.../dist/css/alt/AdminLTE-select2.min.css | 0
.../dist/css/alt/AdminLTE-without-plugins.css | 0
.../dist/css/alt/AdminLTE-without-plugins.min.css | 0
.../admin-lte/dist/css/skins/skin-black-light.css | 0
.../dist/css/skins/skin-black-light.min.css | 0
.../bower/admin-lte/dist/css/skins/skin-black.css | 0
.../admin-lte/dist/css/skins/skin-black.min.css | 0
.../admin-lte/dist/css/skins/skin-blue-light.css | 0
.../dist/css/skins/skin-blue-light.min.css | 0
.../bower/admin-lte/dist/css/skins/skin-blue.css | 0
.../admin-lte/dist/css/skins/skin-blue.min.css | 0
.../admin-lte/dist/css/skins/skin-green-light.css | 0
.../dist/css/skins/skin-green-light.min.css | 0
.../bower/admin-lte/dist/css/skins/skin-green.css | 0
.../admin-lte/dist/css/skins/skin-green.min.css | 0
.../admin-lte/dist/css/skins/skin-purple-light.css | 0
.../dist/css/skins/skin-purple-light.min.css | 0
.../bower/admin-lte/dist/css/skins/skin-purple.css | 0
.../admin-lte/dist/css/skins/skin-purple.min.css | 0
.../admin-lte/dist/css/skins/skin-red-light.css | 0
.../dist/css/skins/skin-red-light.min.css | 0
.../bower/admin-lte/dist/css/skins/skin-red.css | 0
.../admin-lte/dist/css/skins/skin-red.min.css | 0
.../admin-lte/dist/css/skins/skin-yellow-light.css | 0
.../dist/css/skins/skin-yellow-light.min.css | 0
.../bower/admin-lte/dist/css/skins/skin-yellow.css | 0
.../admin-lte/dist/css/skins/skin-yellow.min.css | 0
.../bower/admin-lte/dist/js/app.js | 0
.../bower/admin-lte/dist/js/app.min.js | 0
.../bower/admin-lte/dist/js/demo.js | 0
.../bower/admin-lte/dist/js/pages/dashboard.js | 0
.../bower/admin-lte/dist/js/pages/dashboard2.js | 0
.../bower/admin-lte/plugins/fastclick/fastclick.js | 0
.../admin-lte/plugins/fastclick/fastclick.min.js | 0
.../admin-lte/plugins/jQuery/jquery-2.2.3.min.js | 0
.../bower/admin-lte/plugins/jQueryUI/jquery-ui.js | 0
.../admin-lte/plugins/jQueryUI/jquery-ui.min.js | 0
.../plugins/slimScroll/jquery.slimscroll.js | 0
.../plugins/slimScroll/jquery.slimscroll.min.js | 0
.../bower/anchor-js/anchor.min.js | 0
.../bower/codemirror/codemirror.css | 0
.../bower/codemirror/codemirror.js | 0
.../bower/codemirror/sql.js | 0
.../datatables.net-bs/css/dataTables.bootstrap.css | 0
.../css/dataTables.bootstrap.min.css | 0
.../datatables.net-bs/js/dataTables.bootstrap.js | 0
.../js/dataTables.bootstrap.min.js | 0
.../css/buttons.bootstrap.css | 0
.../css/buttons.bootstrap.min.css | 0
.../js/buttons.bootstrap.js | 0
.../js/buttons.bootstrap.min.js | 0
.../bower/datatables.net-buttons/buttons.colVis.js | 0
.../datatables.net-buttons/buttons.colVis.min.js | 0
.../bower/datatables.net-buttons/buttons.flash.js | 0
.../datatables.net-buttons/buttons.flash.min.js | 0
.../bower/datatables.net-buttons/buttons.html5.js | 0
.../datatables.net-buttons/buttons.html5.min.js | 0
.../bower/datatables.net-buttons/buttons.print.js | 0
.../datatables.net-buttons/buttons.print.min.js | 0
.../datatables.net-buttons/dataTables.buttons.js | 0
.../dataTables.buttons.min.js | 0
.../bower/datatables.net/jquery.dataTables.min.js | 0
.../bower/font-awesome/css/font-awesome.css | 0
.../bower/font-awesome/css/font-awesome.css.map | 0
.../bower/font-awesome/css/font-awesome.min.css | 0
.../bower/font-awesome/fonts/FontAwesome.otf | Bin
.../font-awesome/fonts/fontawesome-webfont.eot | Bin
.../font-awesome/fonts/fontawesome-webfont.svg | 0
.../font-awesome/fonts/fontawesome-webfont.ttf | Bin
.../font-awesome/fonts/fontawesome-webfont.woff | Bin
.../font-awesome/fonts/fontawesome-webfont.woff2 | Bin
.../bower/html5shiv/html5shiv.min.js | 0
.../bower/ionicons/css/ionicons.css | 0
.../bower/ionicons/css/ionicons.min.css | 0
.../bower/ionicons/fonts/ionicons.eot | Bin
.../bower/ionicons/fonts/ionicons.svg | 0
.../bower/ionicons/fonts/ionicons.ttf | Bin
.../bower/ionicons/fonts/ionicons.woff | Bin
.../bower/jquery/jquery.js | 0
.../bower/js-xlsx/xlsx.full.min.js | 0
.../bower/pdfmake/pdfmake.min.js | 0
.../bower/pdfmake/vfs_fonts.js | 0
.../bower/respond/respond.min.js | 0
.../bower/salvattore/salvattore.css | 0
.../bower/salvattore/salvattore.min.js | 0
schemaspy/{nonce2ecash-erd => c2ec-erd}/column.js | 0
.../{nonce2ecash-erd => c2ec-erd}/columns.html | 246 ++++++++++-----
.../{nonce2ecash-erd => c2ec-erd}/constraint.js | 0
.../{nonce2ecash-erd => c2ec-erd}/constraints.html | 12 +-
.../deletionOrder.txt | 0
.../diagrams/orphans/orphans.dot | 0
.../summary/relationships.real.compact.dot | 13 +-
.../diagrams/summary/relationships.real.large.dot | 33 +-
.../diagrams/tables/terminal.1degree.dot | 15 +-
.../diagrams/tables/terminal_provider.1degree.dot | 31 ++
.../diagrams/tables/terminal_provider.2degrees.dot | 13 +-
.../diagrams/tables/withdrawal.1degree.dot | 22 +-
.../diagrams/tables/withdrawal.2degrees.dot | 22 +-
.../indieflower/indie-flower-v8-latin-regular.eot | Bin
.../indieflower/indie-flower-v8-latin-regular.svg | 0
.../indieflower/indie-flower-v8-latin-regular.ttf | Bin
.../indieflower/indie-flower-v8-latin-regular.woff | Bin
.../indie-flower-v8-latin-regular.woff2 | Bin
.../fonts/indieflower/indie-flower.css | 0
.../source-sans-pro-v10-latin-300.eot | Bin
.../source-sans-pro-v10-latin-300.svg | 0
.../source-sans-pro-v10-latin-300.ttf | Bin
.../source-sans-pro-v10-latin-300.woff | Bin
.../source-sans-pro-v10-latin-300.woff2 | Bin
.../source-sans-pro-v10-latin-300italic.eot | Bin
.../source-sans-pro-v10-latin-300italic.svg | 0
.../source-sans-pro-v10-latin-300italic.ttf | Bin
.../source-sans-pro-v10-latin-300italic.woff | Bin
.../source-sans-pro-v10-latin-300italic.woff2 | Bin
.../source-sans-pro-v10-latin-600.eot | Bin
.../source-sans-pro-v10-latin-600.svg | 0
.../source-sans-pro-v10-latin-600.ttf | Bin
.../source-sans-pro-v10-latin-600.woff | Bin
.../source-sans-pro-v10-latin-600.woff2 | Bin
.../source-sans-pro-v10-latin-600italic.eot | Bin
.../source-sans-pro-v10-latin-600italic.svg | 0
.../source-sans-pro-v10-latin-600italic.ttf | Bin
.../source-sans-pro-v10-latin-600italic.woff | Bin
.../source-sans-pro-v10-latin-600italic.woff2 | Bin
.../source-sans-pro-v10-latin-700.eot | Bin
.../source-sans-pro-v10-latin-700.svg | 0
.../source-sans-pro-v10-latin-700.ttf | Bin
.../source-sans-pro-v10-latin-700.woff | Bin
.../source-sans-pro-v10-latin-700.woff2 | Bin
.../source-sans-pro-v10-latin-regular.eot | Bin
.../source-sans-pro-v10-latin-regular.svg | 0
.../source-sans-pro-v10-latin-regular.ttf | Bin
.../source-sans-pro-v10-latin-regular.woff | Bin
.../source-sans-pro-v10-latin-regular.woff2 | Bin
.../fonts/source-sans-pro/source-sans-pro.css | 0
schemaspy/{nonce2ecash-erd => c2ec-erd}/index.html | 26 +-
.../{nonce2ecash-erd => c2ec-erd}/info-html.txt | 4 +-
.../insertionOrder.txt | 0
schemaspy/{nonce2ecash-erd => c2ec-erd}/main.js | 0
.../{nonce2ecash-erd => c2ec-erd}/orphans.html | 4 +-
schemaspy/c2ec-erd/postgres.c2ec.xml | 57 ++++
.../relationships.html | 14 +-
.../{nonce2ecash-erd => c2ec-erd}/relationships.js | 0
.../{nonce2ecash-erd => c2ec-erd}/routines.html | 4 +-
.../{nonce2ecash-erd => c2ec-erd}/routines.js | 0
.../routines/routine.js | 0
.../{nonce2ecash-erd => c2ec-erd}/schemaSpy.css | 0
.../{nonce2ecash-erd => c2ec-erd}/schemaSpy.js | 0
.../{nonce2ecash-erd => c2ec-erd}/tables/table.js | 0
.../tables/terminal.html | 49 +--
.../tables/terminal_provider.html | 78 +++--
.../tables/withdrawal.html | 163 ++++++++--
.../diagrams/tables/terminal_provider.1degree.dot | 30 --
schemaspy/nonce2ecash-erd/postgres.public.xml | 47 ---
specs/withdrawal-op-state-transition.plantuml | 10 +
203 files changed, 1206 insertions(+), 539 deletions(-)
diff --git a/c2ec/postgres.go b/c2ec/postgres.go
index 845a415..e05e964 100644
--- a/c2ec/postgres.go
+++ b/c2ec/postgres.go
@@ -11,7 +11,7 @@ const PS_INSERT_WITHDRAWAL = "INSERT INTO withdrawal " +
"(wopid, reserve_pub_key, registration_ts, amount, terminal_id)" +
" VALUES ($1, $2, $3, $4, $5)"
-const PS_GET_WITHDRAWAL_BY_ID = ""
+const PS_GET_WITHDRAWAL_BY_WOPID = "SELECT * FROM withdrawal WHERE wopid=$1"
// Postgres implementation of the C2ECDatabase
type C2ECPostgres struct {
diff --git a/data/c2ec_schema.sql b/data/c2ec_schema.sql
index 24a79b9..b327c0e 100644
--- a/data/c2ec_schema.sql
+++ b/data/c2ec_schema.sql
@@ -69,7 +69,7 @@ COMMENT ON COLUMN terminal.provider_id
CREATE TABLE IF NOT EXISTS withdrawal (
- withdrawal_id INT8 GENERATED VALUE BY DEFAULT AS IDENTITY PRIMARY KEY,
+ withdrawal_id INT8 GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
wopid BYTEA CHECK (LENGTH(wopid)=32) NOT NULL,
reserve_pub_key BYTEA CHECK (LENGTH(reserve_pub_key)=32) NOT NULL,
registration_ts INT8 NOT NULL,
@@ -80,15 +80,15 @@ CREATE TABLE IF NOT EXISTS withdrawal (
provider_transaction_id TEXT,
last_retry_ts INT8,
retry_counter INT4 NOT NULL DEFAULT 0,
- completion_proof BLOB
+ completion_proof BYTEA
);
COMMENT ON TABLE withdrawal
IS 'Table representing withdrawal processes initiated by terminals';
COMMENT ON COLUMN withdrawal.withdrawal_id
IS 'The withdrawal id is used a technical id used by the wire gateway to
sequentially select new transactions';
COMMENT ON COLUMN withdrawal.wopid
- IS 'The wopid (withdrawal operation id) is a nonce generated by the terminal
requesting a withdrawal. '+
- 'The wopid identifies a specific withdrawal spawning all involved
systems.';
+ IS 'The wopid (withdrawal operation id) is a nonce generated by the terminal
requesting a withdrawal.
+ The wopid identifies a specific withdrawal spawning all involved
systems.';
COMMENT ON COLUMN withdrawal.reserve_pub_key
IS 'Reserve public key for the reserve which will hold the withdrawal amount
after completion';
COMMENT ON COLUMN withdrawal.registration_ts
diff --git a/docs/content/abstract.tex b/docs/content/abstract.tex
index cdcf095..1d39de6 100644
--- a/docs/content/abstract.tex
+++ b/docs/content/abstract.tex
@@ -1,7 +1 @@
-In order to buy Taler, the Taler Exchange needs guarantees to legally secure
the payment. Buying Taler physically establishes
-direct trust, since cash can be used in order to buy Taler and the transaction
is completed. If you want
-to buy Taler using cashless systems like credit cards, the Exchange has no
proof that the payment has succeeded.
-In order to fill this cap, this thesis establishes a trust relationship
between the terminal manufacturer Wallee
-and the Taler Exchange through a newly created component called
\textit{nonce2ecash}. This enables a trust relationship
-between the Taler Exchange and the terminal operator which allows withdrawing
Taler without using cash. The liability for
-the money is on the side of the terminal operator and therefore establishes
the guarantees for the Taler Exchange.
+In order to buy Taler, the \textit{Taler Exchange} needs guarantees to legally
secure the payment. Buying Taler physically establishes direct trust, since
cash can be used in order to buy Taler and the transaction is completed. If you
want to buy Taler using cashless systems like credit cards, the Exchange has no
proof that the payment has succeeded. In order to fill this cap, this thesis
proposes a framework allowing cashless withdrawals using Taler. A reference
implementation is create [...]
diff --git a/docs/content/appendix/meeting_notes.tex
b/docs/content/appendix/meeting_notes.tex
index 45c6fe6..61bfdea 100644
--- a/docs/content/appendix/meeting_notes.tex
+++ b/docs/content/appendix/meeting_notes.tex
@@ -63,13 +63,13 @@
\textbf{Decisions}
\begin{itemize}
- \item We can establish a generic approach for both our cases. Therefore
the abstraction of \textit{Providers} will be implemented. The
\textit{Providers} abstract and generalize some endpoint which can accept money
in any form (Credit Card, Cash, and so on) and give the Exchange the guarantee,
that the money will eventually be transferred to the Exchange.
+ \item We can establish a generic approach for both our cases. Therefore
the abstraction of \textit{Providers} will be implemented. The
\textit{Providers} abstract and generalize some endpoint which can accept
digital cash in any form (Credit Card, Cash, and so on) and give the Exchange
the guarantee, that the digital cash will eventually be transferred to the
Exchange.
\item The verification at the provider from the perspective of the
exchange must be optional (withdrawing at an ATM will not get any better than
the amount the ATM sends to the Excahnge in the payment notification).
Therefore an additional request to the provider will not bring any benefit.
\end{itemize}
\textbf{Notes}
\begin{itemize}
- \item Flo wants to create a Reserve containing money from the ATM. He then
wants to trigger a peer to peer transaction. And therefore this reserve deals
as guarantee to the Exchange. This flow is possible if the provider is
controlled, which in my case is not given (Wallee is a company and I cannot
easily alter their source code to open a reserve)
+ \item Flo wants to create a Reserve containing digital cash from the ATM.
He then wants to trigger a peer to peer transaction. And therefore this reserve
deals as guarantee to the Exchange. This flow is possible if the provider is
controlled, which in my case is not given (Wallee is a company and I cannot
easily alter their source code to open a reserve)
\end{itemize}
\subsection*{22.02.2024}
@@ -149,6 +149,46 @@
\item Add proper versioning to the SQL script.
\end{itemize}
+\subsection*{20.03.2024}
+
+\textbf{Participants}
+
+\begin{itemize}
+ \item Fehrensen Benjamin
+ \item Grothoff Christian
+ \item H\"aberli Joel
+\end{itemize}
+
+\textbf{Topics}
+\begin{itemize}
+ \item Payto Specification.
+\end{itemize}
+
+\textbf{Action points}
+\begin{itemize}
+ \item Specify payto-uri scheme in GANA repo
+\end{itemize}
+
+\subsection*{20.03.2024 - 2}
+
+\textbf{Participants}
+
+\begin{itemize}
+ \item Grothoff Christian
+ \item H\"aberli Joel
+\end{itemize}
+
+\textbf{Topics}
+\begin{itemize}
+ \item Architecture
+ \item Payto
+\end{itemize}
+
+\textbf{Action points}
+\begin{itemize}
+ \item Look at Wire Gateway and Bank Integration API as specification of an
API and not as individual components of Taler. C2EC must implement those
specification in order to integrate into the Taler ecosystem.
+\end{itemize}
+
% TEMPLATE %
\subsection*{TEMPLATE}
diff --git a/docs/content/architecture/c2ec.tex
b/docs/content/architecture/c2ec.tex
index 07368a5..e3f5409 100644
--- a/docs/content/architecture/c2ec.tex
+++ b/docs/content/architecture/c2ec.tex
@@ -1,72 +1,116 @@
\section{C2EC}
-The API of the C2EC (cashless2ecash) component mirrors the flow from the
creation of a C2EC mapping to the creation of the reserve. For the integration
into the Taler ecosystem additionally to the newly created API, the new
component must implement the Taler Wirewatch Gateway API \cite{} and the Taler
Bank Integration API.
+The C2EC (\textbf{c}ashless\textbf{2ec}ash) component is the central
coordination component in the cashless withdrawal of digital cash using Taler.
It initializes the parameters and mediates between the different stakeholders
of a withdrawal, which finally allows the customer to withdraw digital cash
from a reserve owned by the \textit{Exchange}. Therefore C2EC provides API
which can be integrated and used by the \textit{Terminal}, \textit{Wallet} and
the \textit{Exchange}.
-A specification of the API in yaml format can be found in
\autoref*{appendix-api-spec}.
+The API of the C2EC (cashless2ecash) component handles the flow from the
creation of a C2EC mapping to the creation of the reserve. For the integration
into the Taler ecosystem, C2EC must implement the Taler Wirewatch Gateway API
\cite{taler-wirewatch-gateway-api} and the Taler Bank Integration API
\cite{taler-bank-integration-api}.
+
+The exact specification can be found in the official Taler docs repository as
part of the core specifications \cite{taler-c2ec-spec}
+
+\subsection{Withdrawal-Operation state transitions}
+
+Basically C2EC mediates between the stakeholders of a withdrawal in order to
maintain the correct state of the withdrawal. Therefore it decides when a
withdrawal's status can be transitioned. The diagram in
\autoref{fig-withdrawal-operation-state-transition-diagram} shows the
transitions of states in which a withdrawal operation can be and which events
will trigger a transition. The term attestation in this context means, that the
backend of the provider was asked and the transaction was [...]
+
+\begin{figure}[h]
+ \centering
+
\includegraphics[width=0.7\textwidth]{pictures/diagrams/withdrawal-op-state-transition.png}
+ \caption{Withdrawal Operation state transition diagram}
+ \label{fig-withdrawal-operation-state-transition-diagram}
+\end{figure}
+
+\subsection{Authentication}
+
+Terminals and the Exchange which authenticate against the C2EC API must
provide their respective access token. Therefore, they provide a
\texttt{Authorization: Bearer \$ACCESS\_TOKEN} header, where
\texttt{\$ACCESS\_TOKEN} is a secret authentication token configured by the
exchange and must begin with the prefix specified in RFC 8959 \cite{rfc8959}:
\textit{secret-token}.
\subsection{The C2EC RESTful API}
-\subsubsection{Authentication}
+This section describes the various API implemented in the C2EC component. The
description contains a short list of the consumers of the respective API.
Consumer in this context does not necessarily mean that data is consumed but
rather that the consumer uses the API to either gather data or send data to
C2EC.
-Terminals which authenticate against the C2EC API must provide their
respective access token. Therefore, they provide a \texttt{Authorization:
Bearer \$ACCESS\_TOKEN} header, where \texttt{\$ACCESS\_TOKEN} is a secret
authentication token configured by the exchange and must begin with the prefix
specified in RFC 8959 \cite{rfc8959}: \textit{secret-token}.
+\subsubsection{Taler Bank Integration API}
-\subsubsection{Configuration of C2EC Bank Integration API}
+Withdrawals with a C2EC are based on withdrawal operations which register a
withdrawal identifier (nonce) at the C2EC component. The provider must first
create a unique identifier for the withdrawal operation (the \texttt{WOPID}) to
interact with the withdrawal operation and eventually withdraw using the
wallet. The withdrawal operation API is an implementation of the \textit{Bank
Integration API} \cite{taler-bank-integration-api}.
+\textbf{GET - config}
\begin{itemize}
\item \textbf{Method:} GET
\item \textbf{Endpoint:} /config
\item \textbf{Description:} Return the protocol version and configuration
information about the C2EC API.
\item \textbf{Response:} HTTP status code 200 OK. The exchange responds with
a \texttt{C2ECConfig} object.
+ \item \textbf{Consumers:} Components who want to use the API and therefore
want to load the config of the instance.
\end{itemize}
-\subsubsection{Taler Bank Integration API}
+\textbf{POST - withdrawal-operation}
-Withdrawals with a C2EC are based on withdrawal operations which register a
withdrawal identifier (nonce) at the C2EC component. The provider must first
create a unique identifier for the withdrawal operation (the
\texttt{WITHDRAWAL\_ID}) to interact with the withdrawal operation and
eventually withdraw using the wallet. The withdrawal operation API is an
implementation of the Bank Integration API \cite{taler-bank-integration-api}.
+This API is not specified within the standard Bank Integration API and
therefore an extension to the official specification. The Wallet must implement
the initialization through this flow.
-\textbf{POST - withdrawal-operation}
\begin{itemize}
\item \textbf{Method:} POST
\item \textbf{Endpoint:} /withdrawal-operation
- \item \textbf{Description:} Initiate the withdrawal operation, identified by
the \texttt{WITHDRAWAL\_ID}.
- \item \textbf{Request:} The request body contains a
\texttt{WithdrawRegistration} object.
- \item \textbf{Response:} HTTP status code 204 No content, 400 Bad request,
or 500 Internal Server error.
+ \item \textbf{Description:} Initiate the withdrawal operation, identified by
the \texttt{WOPID}.
+ \item \textbf{Request:} The request body contains a
\texttt{C2ECWithdrawRegistration} object.
+ \item \textbf{Response:} The response is HTTP status code 204 No Content on
success and a 400 or 500 status code on failure (with respective
\texttt{ErrorDetail})
+ \item \textbf{Consumers:} The \textit{Taler Wallet} registers and
initializes the withdrawal operation through this API.
\end{itemize}
-\textbf{GET - withdrawal-operation by withdrawal-id}
+\textbf{GET - withdrawal-operation by wopid}
\begin{itemize}
\item \textbf{Method:} GET
- \item \textbf{Endpoint:} /withdrawal-operation/\$WITHDRAWAL\_ID
- \item \textbf{Description:} Query information about a withdrawal operation,
identified by the \texttt{WITHDRAWAL\_ID}.
- \item \textbf{Response:} HTTP status code 200 OK or 404 Not found.
+ \item \textbf{Endpoint:} /withdrawal-operation/\$WOPID
+ \item \textbf{Description:} Query information about a withdrawal operation,
identified by the \texttt{WOPID}.
+ \item \textbf{Response:} HTTP status code 200 OK and body containing a
\texttt{C2ECWithdrawalStatus} object or 404 Not found.
+ \item \textbf{Consumers:} The API is used by the \textit{Terminal} and
\textit{Taler Wallet} to retrieve information about the current state of the
withdrawal operation. The API allows long-polling and can therefore be used by
the consumer to be updated if the status of the withdrawal operation changes.
\end{itemize}
-\textbf{POST - withdrawal-operation by withdrawal-id}
+\textbf{POST - withdrawal-operation by wopid}
\begin{itemize}
\item \textbf{Method:} POST
- \item \textbf{Endpoint:} /withdrawal-operation/\$WITHDRAWAL\_ID
+ \item \textbf{Endpoint:} /withdrawal-operation/\$WOPID
\item \textbf{Description:} Notifies C2EC about an executed payment for a
specific withdrawal.
- \item \textbf{Request:} The request body contains a
\texttt{PaymentNotification} object.
+ \item \textbf{Request:} The request body contains a
\texttt{C2ECPaymentNotification} object.
\item \textbf{Response:} HTTP status code 204 No content, 400 Bad request,
404 Not found, or 500 Internal Server error.
+ \item \textbf{Consumers:} The API is used by the \textit{Terminal} to notify
the C2EC component that a payment was made and to give the C2EC component
information about the payment itself (e.g. the provider specific transaction
identifier).
\end{itemize}
\subsection{Taler Wirewatch Gateway API}
-The Taler Wirewatch Gateway \cite{taler-wirewatch-gateway-api} must be
implemented in order to capture incoming transactions and allow the withdrawal
of money. The specification of the Taler Wirewatch Gateway can be found in the
official Taler documentation \cite{taler-wirewatch-gateway-api}.
+The Taler Wirewatch Gateway \cite{taler-wirewatch-gateway-api} must be
implemented in order to capture incoming transactions and allow the withdrawal
of digital cash. The specification of the Taler Wirewatch Gateway can be found
in the official Taler documentation \cite{taler-wirewatch-gateway-api}.
-The wirewatch gateway helps the Exchange communicate with the C2EC component
using a the API. It helps the Exchange to fetch guarantees, that a certain
transaction went through and that the reserve can be created and withdrawn.
This will help C2EC to capture the transaction of the Terminal Backend to the
Exchange's account and therefore allow the withdrawal by the customer.
Therefore the wirewatch gateway API is used in C2EC. When the wirewatch gateway
can get the proof, that a transacti [...]
+The wirewatch gateway helps the Exchange communicate with the C2EC component
using a the API. It helps the Exchange to fetch guarantees, that a certain
transaction went through and that the reserve can be created and withdrawn.
This will help C2EC to capture the transaction of the Terminal Backend to the
Exchange's account and therefore allow the withdrawal by the customer.
Therefore the wirewatch gateway API is implemented as part of C2EC. When the
wirewatch gateway can get the proof, t [...]
For C2EC not all endpoints of the Wire Gateway API are needed. Therefore the
endoints which are not needed will be implemented but always return http status
code 400 with explanatory error details as specified by the specification.
-\subsubsection{Configuration of C2EC Wire Gateway API}
+\textbf{GET - config}
+\begin{itemize}
+ \item \textbf{Method:} GET
+ \item \textbf{Endpoint:} /config
+ \item \textbf{Description:} Returns a \texttt{WireConfig} object with
configuration information about the Wirewatch Gateway API of the C2EC component.
+ \item \textbf{Response:} HTTP status code 200 OK. The exchange responds with
a \texttt{C2ECConfig} object.
+ \item \textbf{Consumers:} Components who want to use the API and therefore
want to load the config of the instance.
+\end{itemize}
-\subsubsection{Taler Bank Integration API}
+\textbf{POST - transfer}
+\begin{itemize}
+ \item \textbf{Method:} GET
+ \item \textbf{Endpoint:} /transfer
+ \item \textbf{Description:} Allows the \textit{Exchange} to make a
transaction. This API is used in case of a refund. The transfer will therefore
pointed towards a \texttt{payto://wallee-transaction} address.
+ \item \textbf{Request:} The request contains a \texttt{TransferRequest}
object.
+ \item \textbf{Response:} HTTP status code 200 OK. The exchange responds with
a \texttt{C2ECConfig} object.
+ \item \textbf{Consumers:} The \textit{Exchange} who wants to transfer
digital cash to a account which can be handled by the C2EC component.
+\end{itemize}
+\textbf{GET - history of incoming transactions}
+\begin{itemize}
+ \item \textbf{Method:} GET
+ \item \textbf{Endpoint:} /history/incoming
+ \item \textbf{Description:} Returns a list of transactions which were
recently created in the C2EC component. In case of C2EC, this are withdrawal
operations which are confirmed and a reserve can therefore be created by the
exchange.
+ \item \textbf{Response:} HTTP status code 200 OK. The exchange responds with
a \texttt{C2ECConfig} object.
+ \item \textbf{Consumers:} The \textit{Exchange} who will create the reserve
which then can be withdrawn by the \textit{Taler Wallet}.
+\end{itemize}
\subsection{The C2EC database}
-The database of the C2EC component must track two different aspects. The first
is the mapping of a nonce to a reserve public key to enable withdrawals and the
second aspect is the authentication of terminals allowing withdrawals owned by
terminal providers like \textit{Wallee}.
+The database of the C2EC component must track two different aspects. The first
is the mapping of a nonce (the \texttt{WOPID}) to a reserve public key to
enable withdrawals and the second aspect is the authentication of terminals
allowing withdrawals owned by terminal providers like \textit{Wallee}.
\subsubsection{Terminal Provider}
-Table in \autoref{fig-erd-terminal-provider} describing providers of C2EC
compliant terminals. The name of the provider is important, because it decides
which flow shall be taken in order to attest the payment. For example will the
name \textit{Wallee} signal the terminal provider to
+Table in \autoref{fig-erd-terminal-provider} describing providers of C2EC
compliant terminals. The name of the provider is important, because it decides
which flow shall be taken in order to attest the payment. For example will the
name \textit{Wallee} signal the terminal provider to trigger the attestation
flow of \textit{Wallee} once the payment notification for the withdrawal
reaches C2EC.
\begin{figure}[h]
\centering
@@ -94,3 +138,24 @@ Table in \autoref{fig-erd-withdrawal} represents the
withdrawal processes initia
\caption{Withdrawal Table}
\label{fig-erd-withdrawal}
\end{figure}
+
+\subsubsection{Relationships}
+The structure of the three tables forms a tree which is rooted at the terminal
provider. Each provider can have many terminals and each terminal can have many
withdrawals. The reverse does not apply. A withdrawal does always belong to
exactly one terminal and a terminal is always linked to exactly one provider.
These relations are installed by using foreign keys, which link the
sub-entities (Terminal and Withdrawal) to their corresponding owners (Provider
and Terminal). A provider owns i [...]
+
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=0.7\textwidth]{pictures/database/relationships.png}
+ \caption{Relationships of the entities.}
+ \label{fig-erd-relationships}
+\end{figure}
+
+\section{Payto wallee-transaction extension}
+RFC 8905 \cite{rfc8905} specifies a URI scheme (complying with RFC 3986
\cite{rfc3986}), which allows to address a creditor with theoretically any
protocol that can be used to pay someone (such as IBAN, BIC etc.) in a
standardized way. Therefore it introduces a registry which holds the specific
official values of the standard. The registry is supervised by the GANA (GNUnet
Assigned Numbers Authority) \cite{gnunet-gana}.
+
+In case a refund becomes necessary, which might occur if a credit card
transaction does not succeed, a new \textit{target type} called
\textit{wallee-transaction} is registered. It takes a transaction identifier as
\textit{target identifier} which identifies the transaction for which a refund
process shall be triggered. The idea is that the handler of the payto URI is
able to deduct the transaction from the payto-uri and trigger the refund
process.
+
+\subsection{Payto refund using Wallee}
+Wallee allows to trigger refunds using the Refund Service of the Wallee
backend. The service allows to trigger a refund given a transaction identifier.
Therefore the C2EC component can trigger the refund using the refund service if
needed, and the payto-uri retrieved as debit account by the wirewatch gateway
API, is leveraged to delegate the refund process to the Wallee Backend using
the Refund Service and parsing the transaction identifier of the payto-uri.
+
+\subsection{Extensibility}
+The flow is extensible and other providers like Wallee might be added. They
must therefore register their own refund payto-uri with the GANA and then the
refund process can be implemented likewise.
\ No newline at end of file
diff --git a/docs/content/architecture/overview.tex
b/docs/content/architecture/overview.tex
index fe9103d..4ed2aeb 100644
--- a/docs/content/architecture/overview.tex
+++ b/docs/content/architecture/overview.tex
@@ -1,6 +1,4 @@
-\section{Overview}
-
-\subsection{Components}
+\section{Components}
\begin{figure}[h]
\centering
@@ -9,90 +7,68 @@
\label{fig-diagram-all-components}
\end{figure}
-The component diagram shows the components involved by the withdrawal using
the terminal. Besides the credit card owned by the user, two systems are
involved and within each system two components are required to fulfill the
task. The Taler ecosystem which represents the Taler Wallet and the Taler
Exchange involved in the withdrawal process. In the Terminal system, the
terminal and the backend system of the terminal manufacturer are leveraged in
the process.
+The component diagram shows the components involved by the withdrawal using
the terminal. Besides the credit card owned by the user, two systems are
involved and within each system two components are required to fulfill the
task. The Taler ecosystem which represents the Taler Wallet and the Taler
Exchange (C2EC is a part of the Exchange) involved in the withdrawal process.
In the Terminal system, the terminal and the backend system of the terminal
manufacturer are leveraged in the proces [...]
+
+\section{Process}
+
\begin{figure}[h]
\centering
\includegraphics[width=0.7\textwidth]{pictures/diagrams/nonce2ecash.png}
- \caption{Diagram of high level flow}
+ \caption{Process of a withdrawal using a credit card}
\label{fig-diagram-all-sequence}
\end{figure}
-The diagram in \autoref{fig-diagram-all-sequence} shows the high level flow to
withdraw Taler using the credit card terminal. It shows when the components of
\autoref{fig-diagram-all-components} interact with each other. It shows the
implementation of the flow. Terminal, Wallet and Exchange are linked leveraging
a nonce initially generated by the terminal and presented to the Exchange by
the withdrawing Wallet accompanied by a public key.
-
-\subsection{Process}
+The diagram in \autoref{fig-diagram-all-sequence} shows the high level flow to
withdraw digital cash using the credit card terminal and Taler. It shows when
the components of \autoref{fig-diagram-all-components} interact with each
other. It shows the implementation of the flow. Terminal, Wallet and Exchange
are linked leveraging a \textit{wopid} initially generated by the terminal and
presented to the Exchange by the withdrawing Wallet accompanied by a public
key.
The process requires three parties interacting with each other. The Terminal,
the Wallet and the Exchange must therefore interact with each other. In this
section the highlevel process as showed in \autoref{fig-diagram-all-sequence}
is explained.
-\subsubsection{The Terminal}
+\subsection{The Terminal}
The Terminal initiates the withdrawal leveraging an application which works as
follows:
\begin{enumerate}
- \item At startup of the application, the terminal loads the Exchange
configuration
+ \item At startup of the application, the terminal loads the C2EC
configuration
\item When a user wishes to do a withdrawal, the owner of the terminal
opens the application and initiates a new withdrawal.
\begin{enumerate}
- \item Application creates a nonce
- \item The application starts long polling at the Exchange and awaits
the selection of the reserve parameters mapped to the nonce. The parameters are
sent by the Wallet to the Exchange.
- \item Nonce is packed into a QR code (with Exchange and amount entered
by the terminal owner)
+ \item Application creates a \textit{wopid}
+ \item The application starts long polling at the C2EC and awaits the
selection of the reserve parameters mapped to the \textit{wopid}. The
parameters are sent by the Wallet to C2EC.
+ \item \textit{Wopid} is packed into a QR code (with Exchange and
amount entered by the terminal owner)
\item Terminal calculates fees and shows summary and the Terms of
Service (ToS) of Taler.
\item The user accepts the offer, agrees with the ToS
\item QR code is displayed
\end{enumerate}
- \item The user now scans the QR Code using his wallet.
- \item The application receives the notification of the Exchange, inlcuding
the reserve public key.
- \item The Terminal executes the payment (using the Terminal Backend, the
reserve public key is sent as payment purpose).
+ \item The user now scans the QR Code using his Wallet.
+ \item The application receives the notification of the C2EC, that the
parameters for the withdrawal were selected.
+ \item The Terminal executes the payment (after user presented their credit
card, using the Terminal Backend).
\begin{enumerate}
\item It presents the result to the user.
- \item It tells the Exchange, that the payment was successful.
+ \item It tells the C2EC, that the payment was successful.
\end{enumerate}
\end{enumerate}
-\subsubsection{The Exchange}
+\subsection{The C2EC}
-The Exchange manages the withdrawal using a third party provider (e.g. Wallee)
and seeks guarantees in order to provide a reserve containing Taler which can
be withdrawn by the wallet.
+The C2EC component manages the withdrawal using a third party provider (e.g.
Wallee) and seeks guarantees in order to create a reserve containing digital
cash which can be withdrawn by the Wallet.
\begin{enumerate}
- \item The Exchange retrieves a long polling request for a nonce (from the
Terminal).
- \item The Exchange creates a mapping entry with the nonce and an empty
reserve public key field
- \item The Exchange retrieves a request including a nonce and a reserve
public key.
- \item The Exchange validates the request and adds the key to the mapping.
This establishes the nonce to reserve public key mapping.
- \item The Exchange ends the long polling from the terminal (by sending
back the reserve public key).
- \item The Exchange receives payment notification of the terminal.
- \item The Exchange verifies the notification by asking the terminal
backend for confirmation.
- \item The Exchange, upon successfully checking the notification, checks
that the transaction went through and therefore a reserve is created by the
wirewatch gateway (using the public key in the payment purpose field).
+ \item C2EC retrieves a long polling request for a \textit{wopid} (from the
Terminal).
+ \item C2EC creates a mapping entry with the \textit{wopid} and an empty
reserve public key field
+ \item C2EC retrieves a request including a \textit{wopid} and a reserve
public key.
+ \item C2EC validates the request and adds the key to the mapping. This
establishes the \textit{wopid} to reserve public key mapping.
+ \item C2EC ends the long polling from the terminal (by sending back the
reserve public key).
+ \item C2EC receives payment notification of the terminal.
+ \item C2EC verifies the notification by asking the terminal backend for
confirmation.
+ \item C2EC, upon successfully checking the notification, checks that the
transaction went through and therefore a reserve is created by the wirewatch
gateway (using the public key in the payment purpose field).
\end{enumerate}
-\subsubsection{The Wallet}
+\subsection{The Wallet}
-The Wallet must attest its presence to the terminal by registering a nonce and
belonging reserve public key which will holds the digital currency that can
eventually be withdrawn by the wallet.
+The Wallet must attest its presence to the terminal by registering a
\textit{wopid} and belonging reserve public key which will holds the digital
currency that can eventually be withdrawn by the Wallet.
\begin{enumerate}
- \item The Wallet scans the QR Code (nonce, Exchange information and
amount) on the Terminal
+ \item The Wallet scans the QR Code (\textit{wopid}, Exchange information
and amount) on the Terminal
\item It creates a reserve key pair
- \item The Wallet sends the reserve public key and the scanned nonce to the
Exchange
- \item The Wallet can withdraw money from the created reserve.
+ \item The Wallet sends the reserve public key and the scanned
\textit{wopid} to the C2EC
+ \item The Wallet can withdraw digital cash from the created reserve.
\end{enumerate}
-
-\subsection{Nonce}
-The nonce is leveraged by all components to establish the connection to an
entry in the mapping table of nonce2ecash. The nonce is therefore crucial and
every participant of the withdrawal must eventually gain knowledge about the
value of the nonce in order to process the withdrawal. The nonce is created by
the Terminal and advertised to the Exchange by requesting notification, when
the reserve public key belonging to the nonce was received and the mapping
could be created.
-The Wallet gains the nonce value when scanning the QR code at the Terminal and
then sends the nonce (and the other parameters) to the Exchange.
-
-\subsubsection{Nonce creation}
-Besides the entropy needed to establish a correct nonce, the hash function
leveraged must be specified. (TODO - e.g. FIPS 180-4 \cite{fips-180-4} (SHA-1
and SHA-2 families) or FIPS-202 \cite{fips-202} (SHA-3 family, which is still
beeing reviewed))
-
-\subsection{Reserve Public Key}
-The reserve public key is created by the Wallet and sent to the Exchange to
establish the mapping between the nonce and the reserve public key. The reserve
public key is used to eventually create a reserve at the exchange which
contains the money. The Wallet can then withdraw the money from this reserve
using the withdrawal process of the wallet \cite{wallet-withdrawal}.
-
-\subsection{Payto wallee-transaction extension}
-RFC 8905 \cite{rfc8905} specifies a URI scheme (complying with RFC 3986
\cite{rfc3986}), which allows to address a creditor with theoretically any
protocol that can be used to pay someone (such as IBAN, BIC etc.) in a
standardized way. Therefore it introduces a registry which holds the specific
official values of the standard. The registry is supervised by the GANA (GNUnet
Assigned Numbers Authority) \cite{gnunet-gana}.
-
-In case a refund becomes necessary, which might occur if a credit card
transaction does not succeed, a new \textit{target type} called
\textit{wallee-transaction} is registered. It takes a transaction identifier as
\textit{target identifier} which identifies the transaction for which a refund
process shall be triggered. The idea is that the handler of the payto URI is
able to deduct the transaction from the payto-uri and trigger the refund
process.
-
-\subsubsection{Payto refund using Wallee}
-Wallee allows to trigger refunds using the Refund Service of the Wallee
backend. The service allows to trigger a refund given a transaction identifier.
Therefore the nonce2ecash component can trigger the refund using the refund
service if needed, and the payto-uri retrieved as debit account by the
wirewatch gateway API, is leveraged to delegate the refund process to the
Wallee Backend using the Refund Service and parsing the transaction identifier
of the payto-uri.
-
-\subsubsection{Extensibility}
-The flow is extensible and other providers like Wallee might be added. They
must therefore register their own refund payto-uri with the GANA and then the
refund process can be implemented likewise.
-
-\pagebreak
\ No newline at end of file
diff --git a/docs/content/architecture/terminal.tex
b/docs/content/architecture/terminal.tex
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/content/architecture/wallee.tex
b/docs/content/architecture/wallee.tex
index 72fd763..9d682e2 100644
--- a/docs/content/architecture/wallee.tex
+++ b/docs/content/architecture/wallee.tex
@@ -4,8 +4,22 @@ Wallee offers level 1 PCI-DSS \cite{pci-dss} compliant payment
processes to its
\subsection{Wallee Terminal}
Wallee Terminals are based on android and run a modified, certified android
version as operating system. Thus they can be used for payments and establish
strong authentication in a trusted way.
+\subsubsection{Withdrawal Operation Identifier}
+The \textbf{W}ithdrawal-\textbf{OP}eration-\textbf{ID}entifier
(\textit{wopid}) is leveraged by all components to establish the connection to
an entry in the withdrawal table (\autoref{fig-erd-withdrawal}) of C2EC. The
\textit{wopid} is therefore crucial and every participant of the withdrawal
must eventually gain knowledge about the value of the \textit{wopid} in order
to process the withdrawal. The \textit{wopid} is created by the Terminal and
advertised to the Exchange by requesting n [...]
+The Wallet gains the \textit{wopid} value when scanning the QR code at the
Terminal and then sends the \textit{wopid} (and the other parameters) to the
Exchange.
+
+\textbf{Creation of the WOPID}
+
+Besides the entropy needed to establish a correct \textit{wopid}, the hash
function leveraged must be specified. (TODO - e.g. FIPS 180-4 \cite{fips-180-4}
(SHA-1 and SHA-2 families) or FIPS-202 \cite{fips-202} (SHA-3 family, which is
still beeing reviewed))
+
\subsection{Wallee Backend and API}
-Terminals of Wallee are used to communicate with the customer at the shop of
the merchant. The payment and processing of the transaction is run on the
wallee backend. This means that
+Terminals of Wallee are used to communicate with the customer at the shop of
the merchant. The payment and processing of the transaction is run on the
\textit{Wallee Backend}. The \textit{Wallee Backend} is used by C2EC to attest
a payment, when a \texttt{C2ECPaymentNotification} message reaches C2EC. The
\textit{Wallee Backend} is also used in order to do refunds, in case something
goes wrong during the payment. Therefore the API of \textit{Wallee Backend} is
used to collect this inform [...]
+
+\subsubsection{Transaction Service}
+The \textit{Transaction Service} is used by C2EC to attest a transaction was
successfully processed and the reserve can be created by the \textit{Exchange}.
Therefore the \texttt{GET /api/transaction/read} API of the \textit{Transaction
Service} is used. If the returned transaction is in state \textit{fulfill}, the
transaction can be stored as \textit{completion\_proof} for the withdrawal as
specified in the withdrawal table \autoref{fig-erd-withdrawal} and the
withdrawal status can be t [...]
+
+\subsubsection{Refund Service}
+The \textit{Refund Service} is used by C2EC in case of a refund. Therefore the
C2EC gets notified by the \textit{Exchange} that the transaction shall be
refunded. To trigger the refund process at the Wallee backend, the \texttt{POST
/api/refund/refund} is used.
\subsubsection{Wallee Transaction State}
-In order to decide if a transaction was successful, the states of a
transaction within Wallee must be mapped to the world of Taler. This means that
a reserve shall only be created, if the transaction is in a state which allows
Taler not having any liabilities regarding the transaction and that Wallee
could process the payment successfully. The documentation states that
\textit{only} in the transaction state \textit{fulfill}, the delivery of the
goods (in case of withdrawal this means, th [...]
+In order to decide if a transaction was successful, the states of a
transaction within Wallee must be mapped to the world of Taler. This means that
a reserve shall only be created, if the transaction is in a state which allows
Taler not having any liabilities regarding the transaction and that Wallee
could process the payment successfully. The documentation states that
\textit{only} in the transaction state \textit{fulfill}, the delivery of the
goods (in case of withdrawal this means, th [...]
diff --git a/docs/content/architecture/wallet.tex
b/docs/content/architecture/wallet.tex
new file mode 100644
index 0000000..7882bf6
--- /dev/null
+++ b/docs/content/architecture/wallet.tex
@@ -0,0 +1,5 @@
+\section{Taler Wallet}
+
+The \textit{Taler Wallet} is responsible to create a reserve key pair which
will allow him the withdrawal using the \textit{Exchange} using the reserve
public key of the key pair.
+
+The reserve public key is created by the \textit{Taler Wallet} and sent to
C2EC to establish the mapping between the \textit{wopid} and the reserve public
key. The reserve public key is used to eventually create a reserve at the
exchange which contains the digital cash. The \textit{Taler Wallet} can then
withdraw the digital cash from this reserve using the withdrawal process of the
wallet \cite{wallet-withdrawal}. The process for the case of C2EC is slightly
different from the present p [...]
\ No newline at end of file
diff --git a/docs/content/implementation/exchange.tex
b/docs/content/implementation/exchange.tex
index 66748f6..bb05b29 100644
--- a/docs/content/implementation/exchange.tex
+++ b/docs/content/implementation/exchange.tex
@@ -1 +1 @@
-\section{implementing nonce2ecash docs}
\ No newline at end of file
+\section{implementing C2EC docs}
\ No newline at end of file
diff --git a/docs/content/introduction/goal.tex
b/docs/content/introduction/goal.tex
index 4740249..eaae982 100644
--- a/docs/content/introduction/goal.tex
+++ b/docs/content/introduction/goal.tex
@@ -1,10 +1,10 @@
\section{Goal}
-The goal of this thesis is to implement a process which allows withdrawing
Taler using a credit card at a terminal of the terminal provider
\textit{Wallee}.
+The goal of this thesis is to propose a framework for cashless withdrawals and
implement the process which allows withdrawing Taler using a credit card at a
terminal of the terminal provider \textit{Wallee}.
-\subsection{nonce2ecash}
+\subsection{C2EC}
-Therefore a new component, named \textbf{nonce2ecash}, will be implemented as
part of the Taler Exchange. Nonce2ecash will mediate between the Taler Exchange
and the terminal provider. This includes checking that the transaction of the
debitor reaches the account of the Exchange and therefore the digital currency
can be withdrawn by the user, using its Wallet.
+Therefore a new component, named \textbf{C2EC}, will be implemented as part of
the Taler Exchange. C2EC will mediate between the Taler Exchange and the
terminal provider. This includes checking that the transaction of the debitor
reaches the account of the Exchange and therefore the digital currency can be
withdrawn by the user, using its Wallet.
\subsection{Wallee}
A new app for the payment terminal provider \textbf{Wallee} must be
implemented which allows to start the withdrawal using providers facilities.
The provider will guarantee through its backend, that the payment was
successful. This puts the liability of the payment on the provider of the
terminal.
diff --git a/docs/content/introduction/introduction.tex
b/docs/content/introduction/introduction.tex
index bcab244..720f444 100644
--- a/docs/content/introduction/introduction.tex
+++ b/docs/content/introduction/introduction.tex
@@ -1,40 +1,29 @@
\section{Motivation}
-Ever used Taler to pay for your goods? Probably not. This is because there
exist only very specific ways to withdraw money with Taler.
+Which payment systems do you use in your daily live and why? Probably one you
know it is universally accepted, reliable, secure and the payment goes through
more or less instantly.
-So the problem currently is that it is not possible for a larger group of
users to get money using Taler. This thesis proposes a way allowing users who
own a credit card and a Taler Wallet, to withdraw money using Taler at a
terminal supporting the withdrawal.
+The \textbf{universal acceptance} was identified as one of the most important
in a report which was published on behalf of the ECB (European Central Bank) in
march 2022 as result of a focus group concerning the acceptance of a digital
euro \cite{panetta-speech-march-30} as new payment system. The universal
acceptance was even identified as \textit{the} most important property amongst
the general public and tech-savvy people in the report
\cite{study-new-digital-payment-methods}.
-To make the withdrawal possible, various loose ends must be put together
within the Taler ecosystem and the terminal provider. Also a new component
called \textit{nonce2ecash} is implemented. The thesis focuses on the terminal
provider called \textit{Wallee}. Therefore an application for the Wallee
Terminal (PAX A50) for withdrawing money with Taler is implemented.
+In a world, where everything is connected and everything is accessible from
everywhere (one might think), it is therefore very important to make it as easy
as possible to on-board people on a product. This is also the case for Taler.
For a wide acceptance of the payment system Taler, it is important that various
ways exist to withdraw digital cash in Taler.
-With these components, a trustworthy relationship can be created, which makes
it possible for the Exchange to issue digital money to a user. Therefore the
Exchange is not putting his trust on the money received but rather on the
promise of a trusted third party (the terminal provider) to put the received
money in a location, controlled by the Exchange eventually (e.g. a bank account
owned by the Exchange).
+This is where this thesis hooks in. Currenlty it is possible to withdraw
digital cash using Taler at a Bank which runs a \textit{Taler Exchange} and
integrates the respective API. At time of this writing only one Bank is in the
process of running a \textit{Taler Exchange}. At the Berner Fachhochschule an
\textit{Exchange} is operated and digital cash can be withdrawn at the
secretariat using cash.
-This enables a broader group of people to leverage Taler for their payments.
Which eventually leads to wider adoption of the payment system Taler.
-
-\section{Perspectives}
-During the initial analysis of the task, two main areas of work were
discovered. One is the Taler Exchange and the other is the Application for the
terminal. This led to different views on the system by two different players
within it. To allow a more concise view on the system and to support the
readers and implementer, two perspectives shall be kept in mind. They have
different views on the process but need to interact with each other seamlessly.
-
-\subsection{Terminal Application}
-The perspective of the terminal application includes all processes within the
application which interacts with the user, his Taler Wallet and its credit card
allowing the withdrawal of digital money. The terminal application wants to
conviently allow the withdrawal of digital money and charge fees to cover its
costs and risks.
+To make the access to digital cash using Taler easier and allow faster
spreading of the payment system Taler, a framework for cashless withdrawal of
digital cash is proposed and implemented in order to open new doors for the
integration and adoption of the Taler payment system within the society.
-\subsection{Taler Exchange (nonce2ecash)}
-The perspective of the Taler Exchange includes all processes within
nonce2ecash component and the interaction with the terminal application,
terminal backend and the wallet of the user. The Taler Exchange wants to allow
withdrawal of digital money only to users who pay the equivalent value to the
Exchange. The Exchange wants to stay out of any legal implications at all costs.
+To make the withdrawals using a credit card possible, various loose ends must
be put together within the Taler ecosystem and the terminal provider.
-\section{Fees}
-Since buying Taler using a credit card leverages a third party payment system,
new \textbf{fees} are introduced and must be taken care of. The fees to
withdraw money using Taler are defined by the third party payment system and
therefore do not lie in the control of the Taler system. The fees are retrieved
by the terminal and added to the amount of money which is to be withdrawn by
the user. Only after giving the confirmation to buy the specified amount of
Taler with the specified amount [...]
+Therefore a new component C2EC shall help, establishing a trustworthy
relationship, which makes it possible for the \textit{Exchange} to issue
digital cash to a customer. Therefore the \textit{Exchange} is not putting his
trust on cash received but rather on the promise of a trusted third party (a
terminal provider) to put the received digital cash in a location, controlled
by the \textit{Exchange} eventually (e.g. a bank account owned by the
\textit{Exchange}).
-\section{nonce2ecash}
-Very simplified, the process of a withdrawal currently looks as follows:
-
-\begin{enumerate}
- \item User pays Exchange
- \item Exchange validates payment and iff successful, creates reserve
- \item User can access reserve and withdraw money using his wallet
-\end{enumerate}
+This enables a broader group of people to leverage Taler for their payments.
Which eventually leads to wider adoption of the payment system Taler.
-As long as the interaction of withdrawal is manual and the identification and
verification of the payment is a human interaction, this process is ok because
this makes stealing Taler as hard as manipulating the Taler Exchange (which
would mean a complete compromisation of the system).
+\section{Perspectives}
+During the initial analysis of the task, three areas of work were discovered.
One is the \textit{Taler Exchange}, one the Application for the terminal and
the (Taler) \textit{Wallet}. This led to different views on the system by two
different players within it. To allow a more concise view on the system and to
support the readers and implementer, two perspectives shall be kept in mind.
They have different views on the process but need to interact with each other
seamlessly.
-But now we have the problem that the Exchange is not able to proof that the
money was sent to the wallet it was intended for. This leaves the Exchange with
liability weaknesses and makes it unattractive to operate the cashless2ecash
feature for Exchange operators and therefore introduces a weakness.
+\subsection{Taler Exchange (C2EC)}
+The perspective of the \textit{Taler Exchange} includes all processes within
C2EC component and the interaction with the terminal application, terminal
backend and the wallet of the user. The \textit{Taler Exchange} wants to allow
withdrawal of digital digital cash only to users who pay the equivalent value
to the \textit{Exchange}. The \textit{Exchange} wants to stay out of any legal
implications at all costs.
-Imagine the following situation: A user gets kidnapped and is forced to buy a
certain amount of Taler. But now instead of using the wallet of the kidnapped
user, the kidnapper accesses Exchange with his own wallet and steals the money.
This makes stealing money from someone as hard as making them pay using their
credit card or reveal the credentials to do so (which is totally possible
\cite{cc-fraud-types}). Also plain digital attacks are possible (and probably
more likely) where the att [...]
+\subsection{Terminal Application}
+The perspective of the terminal application includes all processes within the
application which interacts with the user, their \textit{Wallet} and credit
card allowing the withdrawal of digital cash. The terminal application wants to
conviently allow the withdrawal of digital cash and charge fees to cover its
costs and risks.
-This situation can be prevented by leveraging the \textbf{nonce2ecash}
approach proposed by Florian Jung. This approach forces the withdrawing party
to lock their withdrawal to a specific user (public key) before the actual
withdrawal. This approach makes stealing money as hard as gaining control over
the wallet (which is the equivalent to stealing the wallet).
+\subsection{Taler Wallet}
+The \textit{Wallet} holds the digital cash owned by the customer. The
\textit{Wallet} wants to eventually gather the digital cash from the
\textit{Taler Exchange}. The owner of the \textit{Wallet} must therefore
present their credit card at a \textit{Terminal} of the terminal provider and
pay the \textit{Exchange} as well accept the fees of the provider.
diff --git a/docs/listings/specs/api-c2ec.txt b/docs/listings/specs/api-c2ec.txt
new file mode 100644
index 0000000..92deb90
--- /dev/null
+++ b/docs/listings/specs/api-c2ec.txt
@@ -0,0 +1,342 @@
+..
+ This file is part of GNU TALER.
+
+ Copyright (C) 2014-2024 Taler Systems SA
+
+ TALER 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 2.1, or (at your option) any later version.
+
+ TALER 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
+ TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+
+ @author Joel Haeberli
+
+===========================
+The C2EC RESTful API
+===========================
+
+.. note::
+
+ **This API is experimental and not yet implemented**
+
+This chapter describe the APIs that third party providers need to integrate to
allow
+withdrawals through indirect payment channels like credit cards or ATM.
+
+.. contents:: Table of Contents
+
+--------------
+Authentication
+--------------
+
+Terminals which authenticate against the C2EC API must provide their
respective
+access token. Therefore they provide a ``Authorization: Bearer $ACCESS_TOKEN``
header,
+where `$ACCESS_TOKEN`` is a secret authentication token configured by the
exchange and
+must begin with the RFC 8959 prefix.
+
+----------------------------
+Configuration of C2EC
+----------------------------
+
+.. http:get:: /config
+
+ Return the protocol version and configuration information about the C2EC API.
+
+ **Response:**
+
+ :http:statuscode:`200 OK`:
+ The exchange responds with a `C2ECConfig` object. This request should
+ virtually always be successful.
+
+ **Details:**
+
+ .. ts:def:: C2ECConfig
+
+ interface C2ECConfig {
+ // Name of the API.
+ name: "taler-c2ec";
+
+ // libtool-style representation of the C2EC protocol version, see
+ //
https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning
+ // The format is "current:revision:age".
+ version: string;
+ }
+
+-----------------------------
+Withdrawing using C2EC
+-----------------------------
+
+Withdrawals with a C2EC are based on withdrawal operations which register a
withdrawal identifier
+(nonce) at the C2EC component. The provider must first create a unique
identifier for the withdrawal
+operation (the ``WOPID``) to interact with the withdrawal operation and
eventually withdraw using the wallet.
+
+.. http:post:: /withdrawal-operation
+
+ Register a `WOPID` belonging to a reserve public key.
+
+ **Request:**
+
+ .. ts:def:: C2ECWithdrawRegistration
+
+ interface C2ECWithdrawRegistration {
+ // Maps a nonce generated by the provider to a reserve public key
generated by the wallet.
+ wopid: ShortHashCode;
+
+ // Reserve public key generated by the wallet.
+ // According to TALER_ReservePublicKeyP
(https://docs.taler.net/core/api-common.html#cryptographic-primitives)
+ reserve_pub_key: EddsaPublicKey;
+
+ // Optional amount for the withdrawal.
+ amount?: Amount;
+
+ // Id of the terminal of the provider requesting a withdrawal by nonce.
+ // Assigned by the exchange.
+ terminal_id: SafeUint64;
+ }
+
+ **Response:**
+
+ :http:statuscode:`204 No content`:
+ The withdrawal was successfully registered.
+ :http:statuscode:`400 Bad request`:
+ The ``WithdrawRegistration`` request was malformed or contained invalid
parameters.
+ :http:statuscode:`500 Internal Server error`:
+ The registration of the withdrawal failed due to server side issues.
+
+.. http:get:: /withdrawal-operation/$WOPID
+
+ Query information about a withdrawal operation, identified by the ``WOPID``.
+
+ **Request:**
+
+ :query long_poll_ms:
+ *Optional.* If specified, the bank will wait up to ``long_poll_ms``
+ milliseconds for operationt state to be different from ``old_state``
before sending the HTTP
+ response. A client must never rely on this behavior, as the bank may
+ return a response immediately.
+ :query old_state:
+ *Optional.* Default to "pending".
+
+ **Response:**
+
+ :http:statuscode:`200 Ok`:
+ The withdrawal was found and is returned in the response body as
``C2ECWithdrawalStatus``.
+ :http:statuscode:`404 Not found`:
+ C2EC does not have a withdrawal registered with the specified ``WOPID``.
+
+ **Details**
+
+ .. ts:def:: C2ECWithdrawalStatus
+
+ interface C2ECWithdrawalStatus {
+ // Current status of the operation
+ // pending: the operation is pending parameters selection (exchange
and reserve public key)
+ // selected: the operations has been selected and is pending
confirmation
+ // aborted: the operation has been aborted
+ // confirmed: the transfer has been confirmed and registered by the
bank
+ // Since protocol v1.
+ status: "pending" | "selected" | "aborted" | "confirmed";
+
+ // Amount that will be withdrawn with this operation
+ // (raw amount without fee considerations).
+ amount: Amount;
+
+ // A refund address as ``payto`` URI. This address shall be used
+ // in case a refund must be done. Only not-null if the status
+ // is "confirmed" or "aborted"
+ sender_wire?: string;
+
+ // Reserve public key selected by the exchange,
+ // only non-null if ``status`` is ``selected`` or ``confirmed``.
+ // Since protocol v1.
+ selected_reserve_pub?: string;
+ }
+
+
+.. http:post:: /withdrawal-operation/$WOPID
+
+ Notifies C2EC about an executed payment for a specific withdrawal.
+
+ **Request:**
+
+ .. ts:def:: C2ECPaymentNotification
+
+ interface C2ECPaymentNotification {
+
+ // Unique identifier of the provider transaction.
+ provider_transaction_id: string;
+
+ // Specifies the amount which was payed to the provider (without fees).
+ // This amount shall be put into the reserve linked to by the withdrawal
id.
+ amount: Amount;
+
+ // Fees associated with the payment.
+ fees: Amount;
+ }
+
+ **Response:**
+
+ :http:statuscode:`204 No content`:
+ C2EC received the ``C2ECPaymentNotification`` successfully and will
further process
+ the withdrawal.
+ :http:statuscode:`400 Bad request`:
+ The ``C2ECPaymentNotification`` request was malformed or contained invalid
parameters.
+ :http:statuscode:`404 Not found`:
+ C2EC does not have a withdrawal registered with the specified ``WOPID``.
+ :http:statuscode:`500 Internal Server error`:
+ The ``C2ECPaymentNotification`` could not be processed due to server side
issues.
+
+
+--------------
+Taler Wire Gateway
+--------------
+
+C2EC implements the wire gateway API in order to check for incoming
transactions and
+let the exchange get proofs of payments. This will allow the C2EC componente
to add reserves
+and therefore allow the withdrawal of the digital cash. C2EC does not entirely
implement all endpoints,
+because the it is not needed for the case of C2EC. The endpoints not
implemented are not described
+further. They will be available but respond with 400 http error code.
+
+.. http:get:: /config
+
+ Return the protocol version and configuration information about the bank.
+ This specification corresponds to ``current`` protocol being version **0**.
+
+ **Response:**
+
+ :http:statuscode:`200 OK`:
+ The exchange responds with a `WireConfig` object. This request should
+ virtually always be successful.
+
+ **Details:**
+
+ .. ts:def:: WireConfig
+
+ interface WireConfig {
+ // Name of the API.
+ name: "taler-wire-gateway";
+
+ // libtool-style representation of the Bank protocol version, see
+ //
https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning
+ // The format is "current:revision:age".
+ version: string;
+
+ // Currency used by this gateway.
+ currency: string;
+
+ // URN of the implementation (needed to interpret 'revision' in version).
+ // @since v0, may become mandatory in the future.
+ implementation?: string;
+ }
+
+.. http:post:: /transfer
+
+ This API allows the exchange to make a transaction, typically to a merchant.
The bank account
+ of the exchange is not included in the request, but instead derived from the
user name in the
+ authentication header and/or the request base URL.
+
+ To make the API idempotent, the client must include a nonce. Requests with
the same nonce
+ are rejected unless the request is the same.
+
+ **Request:**
+
+ .. ts:def:: TransferRequest
+
+ interface TransferRequest {
+ // Nonce to make the request idempotent. Requests with the same
+ // ``request_uid`` that differ in any of the other fields
+ // are rejected.
+ request_uid: HashCode;
+
+ // Amount to transfer.
+ amount: Amount;
+
+ // Base URL of the exchange. Shall be included by the bank gateway
+ // in the appropriate section of the wire transfer details.
+ exchange_base_url: string;
+
+ // Wire transfer identifier chosen by the exchange,
+ // used by the merchant to identify the Taler order(s)
+ // associated with this wire transfer.
+ wtid: ShortHashCode;
+
+ // The recipient's account identifier as a payto URI.
+ credit_account: string;
+ }
+
+ **Response:**
+
+ :http:statuscode:`200 OK`:
+ The request has been correctly handled, so the funds have been transferred
to
+ the recipient's account. The body is a `TransferResponse`.
+ :http:statuscode:`400 Bad request`:
+ Request malformed. The bank replies with an `ErrorDetail` object.
+ :http:statuscode:`401 Unauthorized`:
+ Authentication failed, likely the credentials are wrong.
+ :http:statuscode:`404 Not found`:
+ The endpoint is wrong or the user name is unknown. The bank replies with
an `ErrorDetail` object.
+ :http:statuscode:`409 Conflict`:
+ A transaction with the same ``request_uid`` but different transaction
details
+ has been submitted before.
+
+ **Details:**
+
+ .. ts:def:: TransferResponse
+
+ interface TransferResponse {
+ // Timestamp that indicates when the wire transfer will be executed.
+ // In cases where the wire transfer gateway is unable to know when
+ // the wire transfer will be executed, the time at which the request
+ // has been received and stored will be returned.
+ // The purpose of this field is for debugging (humans trying to find
+ // the transaction) as well as for taxation (determining which
+ // time period a transaction belongs to).
+ timestamp: Timestamp;
+
+ // Opaque ID of the transaction that the bank has made.
+ row_id: SafeUint64;
+ }
+
+.. http:get:: /history/incoming
+
+ **Request:**
+
+ :query start: *Optional.*
+ Row identifier to explicitly set the *starting point* of the query.
+ :query delta:
+ The *delta* value that determines the range of the query.
+ :query long_poll_ms: *Optional.* If this parameter is specified and the
+ result of the query would be empty, the bank will wait up to
``long_poll_ms``
+ milliseconds for new transactions that match the query to arrive and only
+ then send the HTTP response. A client must never rely on this behavior, as
+ the bank may return a response immediately or after waiting only a fraction
+ of ``long_poll_ms``.
+
+ **Response:**
+
+ .. ts:def:: IncomingReserveTransaction
+
+ interface IncomingReserveTransaction {
+ type: "RESERVE";
+
+ // Opaque identifier of the returned record.
+ row_id: SafeUint64;
+
+ // Date of the transaction.
+ date: Timestamp;
+
+ // Amount transferred.
+ amount: Amount;
+
+ // Payto URI to identify the sender of funds.
+ debit_account: string;
+
+ // The reserve public key extracted from the transaction details.
+ reserve_pub: EddsaPublicKey;
+
+ }
+
diff --git a/docs/listings/specs/nonce2ecash_api_spec.yml
b/docs/listings/specs/nonce2ecash_api_spec.yml
deleted file mode 100644
index 7731437..0000000
--- a/docs/listings/specs/nonce2ecash_api_spec.yml
+++ /dev/null
@@ -1,115 +0,0 @@
-openapi: 3.0.3
-info:
- title: nonce2ecash API
- description: API managing a mapping table which links a nonce to a public
key. This allows withdrawing from the exchange by the nonce. Additionally it
provides facilities allowing for the Exchange operators to register new
providers or delete obsolete ones.
- version: 0.0.1
-paths:
- /n2c/nonces/withdrawal-registration:
- post:
- summary: Register Nonce to Reserve Public Key
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/N2CWithdrawalRequest'
- responses:
- '200':
- description: Message received successfully
- tags:
- - nonces
- /n2c/nonces/withdrawal-processing:
- post:
- summary: Provider notifies the exchange about the payment (if it was
successful or not)
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/N2CPaymentNotification'
- responses:
- '200':
- description: Message received successfully
- tags:
- - nonces
- /n2c/nonces/withdrawal-status:
- get:
- summary: Check Status
- parameters:
- - name: nonce
- in: query
- description: The nonce for which to check the status
- required: true
- schema:
- type: string
- - name: listenForStatus
- in: query
- description: The status to listen for the given nonce
- required: false
- schema:
- $ref: '#/components/schemas/N2CStatus'
- responses:
- '200':
- description: Status retrieved successfully
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/N2CMapping'
- '404':
- description: Mapping not found
- ''
- tags:
- - nonces
-tags:
- - name: nonces
- description: managing and retrieving information about the mapping table
for the nonce to reserve public key mapping.
-components:
- schemas:
- N2CWithdrawalRequest:
- description: Maps a nonce generated by the provider to a reserve public
key generated by the wallet.
- type: object
- properties:
- nonce:
- type: string
- reservePubKey:
- type: string
- format: byte
- amount:
- type: string
- providerType:
- $ref: '#/components/schemas/N2CProviderType'
- N2CPaymentNotification:
- description: Notifies the exchange about an executed payment. This will
trigger a provider specific attestation of the payment according to the
ProviderPaymentAttestationType.
- type: object
- properties:
- nonce:
- type: string
- providerTransactionId:
- type: string
- success:
- type: boolean
- fees:
- type: number
- N2CStatus:
- description: Describes the states a nonce to reserve public key mapping
can be in.
- type: string
- enum:
- - ESTABLISHED
- - PAYED
- - RESERVE_CREATED
- N2CMapping:
- description: Maps a nonce generated by the provider to a reserve public
key generated by the wallet.
- type: object
- properties:
- nonce:
- type: string
- reservePubKey:
- type: string
- format: byte
- status:
- $ref: '#/components/schemas/N2CStatus'
- N2CProviderType:
- description: Signals the exchange which provider is talking to him. Like
this more Providers can be easily supported by adding their verfification flow
to the code of nonce2ecash. This allows to extend the system with various
providers.
- type: string
- enum:
- - WALLEE
diff --git a/docs/pictures/database/relationships.png
b/docs/pictures/database/relationships.png
new file mode 100644
index 0000000..c106b39
Binary files /dev/null and b/docs/pictures/database/relationships.png differ
diff --git a/docs/pictures/database/table_terminal.png
b/docs/pictures/database/table_terminal.png
index e855f78..5b73568 100644
Binary files a/docs/pictures/database/table_terminal.png and
b/docs/pictures/database/table_terminal.png differ
diff --git a/docs/pictures/database/table_terminal_provider.png
b/docs/pictures/database/table_terminal_provider.png
index ac46b81..7ee2c66 100644
Binary files a/docs/pictures/database/table_terminal_provider.png and
b/docs/pictures/database/table_terminal_provider.png differ
diff --git a/docs/pictures/database/table_withdrawal.png
b/docs/pictures/database/table_withdrawal.png
index 15f33a9..3d448cc 100644
Binary files a/docs/pictures/database/table_withdrawal.png and
b/docs/pictures/database/table_withdrawal.png differ
diff --git a/docs/pictures/diagrams/overview.png
b/docs/pictures/diagrams/overview.png
new file mode 100644
index 0000000..0c164f3
Binary files /dev/null and b/docs/pictures/diagrams/overview.png differ
diff --git a/docs/pictures/diagrams/withdrawal-op-state-transition.png
b/docs/pictures/diagrams/withdrawal-op-state-transition.png
new file mode 100644
index 0000000..68baa95
Binary files /dev/null and
b/docs/pictures/diagrams/withdrawal-op-state-transition.png differ
diff --git a/docs/project.bib b/docs/project.bib
index 3221814..1da4b60 100644
--- a/docs/project.bib
+++ b/docs/project.bib
@@ -5,6 +5,27 @@
howpublished = {\url{https://docs.taler.net/taler-user-guide.html}}
}
+@misc{panetta-speech-march-30,
+ author = {Fabio Panetta},
+ role = {Member of the Executive Board of the ECB},
+ year = {2022},
+ month = {March},
+ day = {30},
+ speech-location = {Brussel, Committee on Economic and Monetary Affairs
of the European Parliament},
+ title = {A digital euro that serves the needs of the public:
striking the right balance},
+ url =
{https://www.ecb.europa.eu/press/key/date/2022/html/ecb.sp220330_1~f9fa9a6137.en.html},
+ howpublished =
{\url{https://www.ecb.europa.eu/press/key/date/2022/html/ecb.sp220330_1~f9fa9a6137.en.html}}
+}
+
+@misc{study-new-digital-payment-methods,
+ author = {Kantar Public (Verian since November 2023), on behalf of
ECB},
+ title = {Study on New Digital Payment Methods},
+ year = {2022},
+ month = {March},
+ url =
{https://www.ecb.europa.eu/euro/digital_euro/investigation/profuse/shared/files/dedocs/ecb.dedocs220330_report.en.pdf},
+ howpublished =
{\url{https://www.ecb.europa.eu/euro/digital_euro/investigation/profuse/shared/files/dedocs/ecb.dedocs220330_report.en.pdf}},
+}
+
@misc{srf-espresso-cc-fraud,
author = {Peter Fritsche},
year = {2022},
@@ -43,6 +64,20 @@
howpublished = {\url{https://app-wallee.com/de-de/doc/payment}}
}
+@misc{wallee-transaction-service-docs,
+ author = {Wallee},
+ title = {Transaction Service},
+ url =
{https://app-wallee.com/de-de/doc/api/web-service#transaction-service},
+ howpublished =
{\url{https://app-wallee.com/de-de/doc/api/web-service#transaction-service}}
+}
+
+@misc{wallee-refund-service-docs,
+ author = {Wallee},
+ title = {Refund Service},
+ url =
{https://app-wallee.com/de-de/doc/api/web-service#refund-service},
+ howpublished =
{\url{https://app-wallee.com/de-de/doc/api/web-service#refund-service}}
+}
+
@misc{rfc8959,
series = {Request for Comments},
number = 8959,
@@ -126,6 +161,13 @@
howpublished = {\url{https://docs.taler.net/core/api-bank-wire.html}}
}
+@misc{taler-c2ec-spec,
+ author = {Joel Häberli},
+ title = {The C2EC RESTful API},
+ url = {https://git.taler.net/docs.git/tree/core/api-c2ec.rst},
+ howpublished =
{\url{https://git.taler.net/docs.git/tree/core/api-c2ec.rst}}
+}
+
@misc{wallet-withdrawal,
author = {Taler},
title = {Withdrawal},
diff --git a/docs/thesis.pdf b/docs/thesis.pdf
index 248e2f8..35eac69 100644
Binary files a/docs/thesis.pdf and b/docs/thesis.pdf differ
diff --git a/docs/thesis.tex b/docs/thesis.tex
index 0079545..3c43876 100644
--- a/docs/thesis.tex
+++ b/docs/thesis.tex
@@ -119,6 +119,15 @@
frame=single,
backgroundcolor=\color{gray!5}
}
+
+%% rst style definition TODO (looks like shit)
+\lstdefinestyle{rst}{
+ basicstyle=\ttfamily,
+ breaklines=true,
+ showstringspaces=false,
+ backgroundcolor=\color{gray!5}
+}
+
%---------------------------------------------------------------------------
%% %% Customize Footer and Headers in Document
@@ -177,11 +186,12 @@
\input{content/introduction/introduction}
\input{content/introduction/goal}
-\chapter{System Overview}
+\chapter{Overview}
\input{content/architecture/overview}
\chapter{Architecture}
\input{content/architecture/c2ec}
+\input{content/architecture/wallet}
\input{content/architecture/wallee}
\chapter{Implementation}
@@ -221,7 +231,7 @@
\chapter{Appendix A}
\section{API}
\label{appendix-api-spec}
-\lstinputlisting[style=yaml,caption={nonce2ecash API
specification}]{listings/specs/nonce2ecash_api_spec.yml}
+\lstinputlisting[style=rst,caption={C2EC API
specification}]{listings/specs/api-c2ec.txt}
\chapter{Appendix B}
\section{Meeting notes}
diff --git a/schemaspy/nonce2ecash-erd/anomalies.html
b/schemaspy/c2ec-erd/anomalies.html
similarity index 99%
rename from schemaspy/nonce2ecash-erd/anomalies.html
rename to schemaspy/c2ec-erd/anomalies.html
index 03cbe02..2a13ebd 100644
--- a/schemaspy/nonce2ecash-erd/anomalies.html
+++ b/schemaspy/c2ec-erd/anomalies.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>postgres.public</title>
+ <title>postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
diff --git a/schemaspy/nonce2ecash-erd/anomalies.js
b/schemaspy/c2ec-erd/anomalies.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/anomalies.js
rename to schemaspy/c2ec-erd/anomalies.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.css
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.css
rename to schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.css.map
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.css.map
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.css.map
rename to
schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.css.map
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css.map
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css.map
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css.map
rename to
schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css.map
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap.css
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap.css
rename to schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap.css.map
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap.css.map
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap.css.map
rename to schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap.css.map
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap.min.css
rename to schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap.min.css.map
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap.min.css.map
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/css/bootstrap.min.css.map
rename to schemaspy/c2ec-erd/bower/admin-lte/bootstrap/css/bootstrap.min.css.map
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.eot
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.eot
rename to
schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.eot
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.svg
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.svg
rename to
schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.svg
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.ttf
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.ttf
rename to
schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.ttf
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff
rename to
schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff2
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff2
rename to
schemaspy/c2ec-erd/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff2
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/js/bootstrap.js
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/js/bootstrap.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/js/bootstrap.js
rename to schemaspy/c2ec-erd/bower/admin-lte/bootstrap/js/bootstrap.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/js/bootstrap.min.js
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/js/bootstrap.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/js/bootstrap.min.js
rename to schemaspy/c2ec-erd/bower/admin-lte/bootstrap/js/bootstrap.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/js/npm.js
b/schemaspy/c2ec-erd/bower/admin-lte/bootstrap/js/npm.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/admin-lte/bootstrap/js/npm.js
rename to schemaspy/c2ec-erd/bower/admin-lte/bootstrap/js/npm.js
diff --git a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/AdminLTE.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/AdminLTE.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/AdminLTE.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/AdminLTE.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/AdminLTE.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/AdminLTE.min.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/AdminLTE.min.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/AdminLTE.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-bootstrap-social.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-bootstrap-social.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-bootstrap-social.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-bootstrap-social.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-bootstrap-social.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-bootstrap-social.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-bootstrap-social.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-bootstrap-social.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-fullcalendar.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-fullcalendar.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-fullcalendar.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-fullcalendar.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-fullcalendar.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-fullcalendar.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-fullcalendar.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-fullcalendar.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-select2.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-select2.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-select2.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-select2.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-select2.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-select2.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-select2.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-select2.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-without-plugins.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-without-plugins.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-without-plugins.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-without-plugins.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-without-plugins.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-without-plugins.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/alt/AdminLTE-without-plugins.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/alt/AdminLTE-without-plugins.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-black-light.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-black-light.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-black-light.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-black-light.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-black-light.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-black-light.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-black-light.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-black-light.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-black.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-black.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-black.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-black.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-black.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-black.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-black.min.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-black.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-blue-light.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-blue-light.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-blue-light.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-blue-light.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-blue-light.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-blue-light.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-blue-light.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-blue-light.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-blue.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-blue.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-blue.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-blue.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-blue.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-blue.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-blue.min.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-blue.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-green-light.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-green-light.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-green-light.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-green-light.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-green-light.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-green-light.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-green-light.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-green-light.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-green.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-green.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-green.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-green.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-green.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-green.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-green.min.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-green.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-purple-light.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-purple-light.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-purple-light.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-purple-light.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-purple-light.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-purple-light.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-purple-light.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-purple-light.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-purple.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-purple.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-purple.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-purple.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-purple.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-purple.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-purple.min.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-purple.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-red-light.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-red-light.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-red-light.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-red-light.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-red-light.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-red-light.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-red-light.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-red-light.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-red.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-red.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-red.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-red.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-red.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-red.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-red.min.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-red.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-yellow-light.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-yellow-light.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-yellow-light.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-yellow-light.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-yellow-light.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-yellow-light.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-yellow-light.min.css
rename to
schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-yellow-light.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-yellow.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-yellow.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-yellow.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-yellow.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-yellow.min.css
b/schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-yellow.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/css/skins/skin-yellow.min.css
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/css/skins/skin-yellow.min.css
diff --git a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/app.js
b/schemaspy/c2ec-erd/bower/admin-lte/dist/js/app.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/app.js
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/js/app.js
diff --git a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/app.min.js
b/schemaspy/c2ec-erd/bower/admin-lte/dist/js/app.min.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/app.min.js
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/js/app.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/demo.js
b/schemaspy/c2ec-erd/bower/admin-lte/dist/js/demo.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/demo.js
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/js/demo.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/pages/dashboard.js
b/schemaspy/c2ec-erd/bower/admin-lte/dist/js/pages/dashboard.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/pages/dashboard.js
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/js/pages/dashboard.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/pages/dashboard2.js
b/schemaspy/c2ec-erd/bower/admin-lte/dist/js/pages/dashboard2.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/dist/js/pages/dashboard2.js
rename to schemaspy/c2ec-erd/bower/admin-lte/dist/js/pages/dashboard2.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/fastclick/fastclick.js
b/schemaspy/c2ec-erd/bower/admin-lte/plugins/fastclick/fastclick.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/fastclick/fastclick.js
rename to schemaspy/c2ec-erd/bower/admin-lte/plugins/fastclick/fastclick.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/fastclick/fastclick.min.js
b/schemaspy/c2ec-erd/bower/admin-lte/plugins/fastclick/fastclick.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/fastclick/fastclick.min.js
rename to schemaspy/c2ec-erd/bower/admin-lte/plugins/fastclick/fastclick.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js
b/schemaspy/c2ec-erd/bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js
rename to schemaspy/c2ec-erd/bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/jQueryUI/jquery-ui.js
b/schemaspy/c2ec-erd/bower/admin-lte/plugins/jQueryUI/jquery-ui.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/jQueryUI/jquery-ui.js
rename to schemaspy/c2ec-erd/bower/admin-lte/plugins/jQueryUI/jquery-ui.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js
b/schemaspy/c2ec-erd/bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js
rename to schemaspy/c2ec-erd/bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.js
b/schemaspy/c2ec-erd/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.js
rename to
schemaspy/c2ec-erd/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js
b/schemaspy/c2ec-erd/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js
rename to
schemaspy/c2ec-erd/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/anchor-js/anchor.min.js
b/schemaspy/c2ec-erd/bower/anchor-js/anchor.min.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/anchor-js/anchor.min.js
rename to schemaspy/c2ec-erd/bower/anchor-js/anchor.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/codemirror/codemirror.css
b/schemaspy/c2ec-erd/bower/codemirror/codemirror.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/codemirror/codemirror.css
rename to schemaspy/c2ec-erd/bower/codemirror/codemirror.css
diff --git a/schemaspy/nonce2ecash-erd/bower/codemirror/codemirror.js
b/schemaspy/c2ec-erd/bower/codemirror/codemirror.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/codemirror/codemirror.js
rename to schemaspy/c2ec-erd/bower/codemirror/codemirror.js
diff --git a/schemaspy/nonce2ecash-erd/bower/codemirror/sql.js
b/schemaspy/c2ec-erd/bower/codemirror/sql.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/codemirror/sql.js
rename to schemaspy/c2ec-erd/bower/codemirror/sql.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-bs/css/dataTables.bootstrap.css
b/schemaspy/c2ec-erd/bower/datatables.net-bs/css/dataTables.bootstrap.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-bs/css/dataTables.bootstrap.css
rename to
schemaspy/c2ec-erd/bower/datatables.net-bs/css/dataTables.bootstrap.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-bs/css/dataTables.bootstrap.min.css
b/schemaspy/c2ec-erd/bower/datatables.net-bs/css/dataTables.bootstrap.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-bs/css/dataTables.bootstrap.min.css
rename to
schemaspy/c2ec-erd/bower/datatables.net-bs/css/dataTables.bootstrap.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-bs/js/dataTables.bootstrap.js
b/schemaspy/c2ec-erd/bower/datatables.net-bs/js/dataTables.bootstrap.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-bs/js/dataTables.bootstrap.js
rename to schemaspy/c2ec-erd/bower/datatables.net-bs/js/dataTables.bootstrap.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-bs/js/dataTables.bootstrap.min.js
b/schemaspy/c2ec-erd/bower/datatables.net-bs/js/dataTables.bootstrap.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-bs/js/dataTables.bootstrap.min.js
rename to
schemaspy/c2ec-erd/bower/datatables.net-bs/js/dataTables.bootstrap.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons-bs/css/buttons.bootstrap.css
b/schemaspy/c2ec-erd/bower/datatables.net-buttons-bs/css/buttons.bootstrap.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons-bs/css/buttons.bootstrap.css
rename to
schemaspy/c2ec-erd/bower/datatables.net-buttons-bs/css/buttons.bootstrap.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css
b/schemaspy/c2ec-erd/bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css
rename to
schemaspy/c2ec-erd/bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons-bs/js/buttons.bootstrap.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons-bs/js/buttons.bootstrap.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons-bs/js/buttons.bootstrap.js
rename to
schemaspy/c2ec-erd/bower/datatables.net-buttons-bs/js/buttons.bootstrap.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js
rename to
schemaspy/c2ec-erd/bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.colVis.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.colVis.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.colVis.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.colVis.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.colVis.min.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.colVis.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.colVis.min.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.colVis.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.flash.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.flash.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.flash.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.flash.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.flash.min.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.flash.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.flash.min.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.flash.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.html5.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.html5.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.html5.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.html5.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.html5.min.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.html5.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.html5.min.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.html5.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.print.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.print.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.print.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.print.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.print.min.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.print.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/buttons.print.min.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/buttons.print.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/dataTables.buttons.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/dataTables.buttons.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/dataTables.buttons.js
rename to schemaspy/c2ec-erd/bower/datatables.net-buttons/dataTables.buttons.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/dataTables.buttons.min.js
b/schemaspy/c2ec-erd/bower/datatables.net-buttons/dataTables.buttons.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net-buttons/dataTables.buttons.min.js
rename to
schemaspy/c2ec-erd/bower/datatables.net-buttons/dataTables.buttons.min.js
diff --git
a/schemaspy/nonce2ecash-erd/bower/datatables.net/jquery.dataTables.min.js
b/schemaspy/c2ec-erd/bower/datatables.net/jquery.dataTables.min.js
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/datatables.net/jquery.dataTables.min.js
rename to schemaspy/c2ec-erd/bower/datatables.net/jquery.dataTables.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/font-awesome/css/font-awesome.css
b/schemaspy/c2ec-erd/bower/font-awesome/css/font-awesome.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/font-awesome/css/font-awesome.css
rename to schemaspy/c2ec-erd/bower/font-awesome/css/font-awesome.css
diff --git
a/schemaspy/nonce2ecash-erd/bower/font-awesome/css/font-awesome.css.map
b/schemaspy/c2ec-erd/bower/font-awesome/css/font-awesome.css.map
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/font-awesome/css/font-awesome.css.map
rename to schemaspy/c2ec-erd/bower/font-awesome/css/font-awesome.css.map
diff --git
a/schemaspy/nonce2ecash-erd/bower/font-awesome/css/font-awesome.min.css
b/schemaspy/c2ec-erd/bower/font-awesome/css/font-awesome.min.css
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/font-awesome/css/font-awesome.min.css
rename to schemaspy/c2ec-erd/bower/font-awesome/css/font-awesome.min.css
diff --git a/schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/FontAwesome.otf
b/schemaspy/c2ec-erd/bower/font-awesome/fonts/FontAwesome.otf
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/FontAwesome.otf
rename to schemaspy/c2ec-erd/bower/font-awesome/fonts/FontAwesome.otf
diff --git
a/schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.eot
b/schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.eot
rename to schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.eot
diff --git
a/schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.svg
b/schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.svg
rename to schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.svg
diff --git
a/schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.ttf
b/schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.ttf
rename to schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.ttf
diff --git
a/schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.woff
b/schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.woff
rename to schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.woff
diff --git
a/schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.woff2
b/schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/bower/font-awesome/fonts/fontawesome-webfont.woff2
rename to schemaspy/c2ec-erd/bower/font-awesome/fonts/fontawesome-webfont.woff2
diff --git a/schemaspy/nonce2ecash-erd/bower/html5shiv/html5shiv.min.js
b/schemaspy/c2ec-erd/bower/html5shiv/html5shiv.min.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/html5shiv/html5shiv.min.js
rename to schemaspy/c2ec-erd/bower/html5shiv/html5shiv.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/ionicons/css/ionicons.css
b/schemaspy/c2ec-erd/bower/ionicons/css/ionicons.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/ionicons/css/ionicons.css
rename to schemaspy/c2ec-erd/bower/ionicons/css/ionicons.css
diff --git a/schemaspy/nonce2ecash-erd/bower/ionicons/css/ionicons.min.css
b/schemaspy/c2ec-erd/bower/ionicons/css/ionicons.min.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/ionicons/css/ionicons.min.css
rename to schemaspy/c2ec-erd/bower/ionicons/css/ionicons.min.css
diff --git a/schemaspy/nonce2ecash-erd/bower/ionicons/fonts/ionicons.eot
b/schemaspy/c2ec-erd/bower/ionicons/fonts/ionicons.eot
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/ionicons/fonts/ionicons.eot
rename to schemaspy/c2ec-erd/bower/ionicons/fonts/ionicons.eot
diff --git a/schemaspy/nonce2ecash-erd/bower/ionicons/fonts/ionicons.svg
b/schemaspy/c2ec-erd/bower/ionicons/fonts/ionicons.svg
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/ionicons/fonts/ionicons.svg
rename to schemaspy/c2ec-erd/bower/ionicons/fonts/ionicons.svg
diff --git a/schemaspy/nonce2ecash-erd/bower/ionicons/fonts/ionicons.ttf
b/schemaspy/c2ec-erd/bower/ionicons/fonts/ionicons.ttf
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/ionicons/fonts/ionicons.ttf
rename to schemaspy/c2ec-erd/bower/ionicons/fonts/ionicons.ttf
diff --git a/schemaspy/nonce2ecash-erd/bower/ionicons/fonts/ionicons.woff
b/schemaspy/c2ec-erd/bower/ionicons/fonts/ionicons.woff
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/ionicons/fonts/ionicons.woff
rename to schemaspy/c2ec-erd/bower/ionicons/fonts/ionicons.woff
diff --git a/schemaspy/nonce2ecash-erd/bower/jquery/jquery.js
b/schemaspy/c2ec-erd/bower/jquery/jquery.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/jquery/jquery.js
rename to schemaspy/c2ec-erd/bower/jquery/jquery.js
diff --git a/schemaspy/nonce2ecash-erd/bower/js-xlsx/xlsx.full.min.js
b/schemaspy/c2ec-erd/bower/js-xlsx/xlsx.full.min.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/js-xlsx/xlsx.full.min.js
rename to schemaspy/c2ec-erd/bower/js-xlsx/xlsx.full.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/pdfmake/pdfmake.min.js
b/schemaspy/c2ec-erd/bower/pdfmake/pdfmake.min.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/pdfmake/pdfmake.min.js
rename to schemaspy/c2ec-erd/bower/pdfmake/pdfmake.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/pdfmake/vfs_fonts.js
b/schemaspy/c2ec-erd/bower/pdfmake/vfs_fonts.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/pdfmake/vfs_fonts.js
rename to schemaspy/c2ec-erd/bower/pdfmake/vfs_fonts.js
diff --git a/schemaspy/nonce2ecash-erd/bower/respond/respond.min.js
b/schemaspy/c2ec-erd/bower/respond/respond.min.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/respond/respond.min.js
rename to schemaspy/c2ec-erd/bower/respond/respond.min.js
diff --git a/schemaspy/nonce2ecash-erd/bower/salvattore/salvattore.css
b/schemaspy/c2ec-erd/bower/salvattore/salvattore.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/salvattore/salvattore.css
rename to schemaspy/c2ec-erd/bower/salvattore/salvattore.css
diff --git a/schemaspy/nonce2ecash-erd/bower/salvattore/salvattore.min.js
b/schemaspy/c2ec-erd/bower/salvattore/salvattore.min.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/bower/salvattore/salvattore.min.js
rename to schemaspy/c2ec-erd/bower/salvattore/salvattore.min.js
diff --git a/schemaspy/nonce2ecash-erd/column.js b/schemaspy/c2ec-erd/column.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/column.js
rename to schemaspy/c2ec-erd/column.js
diff --git a/schemaspy/nonce2ecash-erd/columns.html
b/schemaspy/c2ec-erd/columns.html
similarity index 73%
rename from schemaspy/nonce2ecash-erd/columns.html
rename to schemaspy/c2ec-erd/columns.html
index 557e6d3..7f23e1e 100644
--- a/schemaspy/nonce2ecash-erd/columns.html
+++ b/schemaspy/c2ec-erd/columns.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>postgres.public</title>
+ <title>postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
@@ -110,47 +110,89 @@
</section>
<script>
var tableData = [
+ {
+ "tableName": "terminal",
+ "tableFileName": "terminal",
+ "tableType": "Table",
+ "keyClass": "foreignKey",
+ "keyTitle": "Foreign Key",
+ "name": "<i class='icon ion-key iconkey' style='padding-left:
5px;'><\/i>provider_id",
+ "type": "int8",
+ "length": 19,
+ "nullable": "",
+ "autoUpdated": "",
+ "defaultValue": "null",
+ "comments": "<p>Indicates the terminal provider to which the terminal
belongs<\/p>"
+ },
{
"tableName": "terminal_provider",
"tableFileName": "terminal_provider",
"tableType": "Table",
"keyClass": "",
"keyTitle": "",
- "name": "name",
- "type": "varchar",
- "length": 50,
+ "name": "backend_base_url",
+ "type": "text",
+ "length": 2147483647,
+ "nullable": "",
+ "autoUpdated": "",
+ "defaultValue": "null",
+ "comments": "<p>URL of the provider backend for transaction
proofing<\/p>"
+ },
+ {
+ "tableName": "withdrawal",
+ "tableFileName": "withdrawal",
+ "tableType": "Table",
+ "keyClass": "",
+ "keyTitle": "",
+ "name": "provider_transaction_id",
+ "type": "text",
+ "length": 2147483647,
"nullable": "√",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Transaction identifier supplied by the provider for
backend request<\/p>"
},
{
- "tableName": "terminal",
- "tableFileName": "terminal",
+ "tableName": "withdrawal",
+ "tableFileName": "withdrawal",
"tableType": "Table",
- "keyClass": "primaryKey",
- "keyTitle": "Primary Key",
- "name": "<i class='icon ion-key iconkey' style='padding-left:
5px;'><\/i>id",
- "type": "int8",
- "length": 19,
+ "keyClass": "",
+ "keyTitle": "",
+ "name": "reserve_pub_key",
+ "type": "bytea",
+ "length": 2147483647,
"nullable": "",
- "autoUpdated": "√",
+ "autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Reserve public key for the reserve which will hold the
withdrawal amount after completion<\/p>"
},
{
- "tableName": "terminal_provider",
- "tableFileName": "terminal_provider",
+ "tableName": "withdrawal",
+ "tableFileName": "withdrawal",
"tableType": "Table",
- "keyClass": "primaryKey",
- "keyTitle": "Primary Key",
- "name": "<i class='icon ion-key iconkey' style='padding-left:
5px;'><\/i>id",
+ "keyClass": "",
+ "keyTitle": "",
+ "name": "withdrawal_status",
+ "type": "\"c2ec\".\"withdrawal_operation_status\"",
+ "length": 2147483647,
+ "nullable": "",
+ "autoUpdated": "",
+ "defaultValue": "'pending'::c2ec.withdrawal_operation_status",
+ "comments": "<p>Status of the withdrawal process<\/p>"
+ },
+ {
+ "tableName": "withdrawal",
+ "tableFileName": "withdrawal",
+ "tableType": "Table",
+ "keyClass": "",
+ "keyTitle": "",
+ "name": "registration_ts",
"type": "int8",
"length": 19,
"nullable": "",
- "autoUpdated": "√",
+ "autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Timestamp of when the withdrawal request was
registered<\/p>"
},
{
"tableName": "withdrawal",
@@ -164,49 +206,35 @@
"nullable": "",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
- },
- {
- "tableName": "terminal",
- "tableFileName": "terminal",
- "tableType": "Table",
- "keyClass": "",
- "keyTitle": "",
- "name": "remarks",
- "type": "varchar",
- "length": 255,
- "nullable": "√",
- "autoUpdated": "",
- "defaultValue": "null",
- "comments": ""
+ "comments": "<p>ID of the terminal that initiated the withdrawal<\/p>"
},
{
- "tableName": "terminal_provider",
- "tableFileName": "terminal_provider",
+ "tableName": "withdrawal",
+ "tableFileName": "withdrawal",
"tableType": "Table",
"keyClass": "",
"keyTitle": "",
- "name": "remarks",
- "type": "varchar",
- "length": 255,
+ "name": "last_retry_ts",
+ "type": "int8",
+ "length": 19,
"nullable": "√",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Timestamp of the last retry attempt<\/p>"
},
{
"tableName": "terminal",
"tableFileName": "terminal",
"tableType": "Table",
- "keyClass": "foreignKey",
- "keyTitle": "Foreign Key",
- "name": "<i class='icon ion-key iconkey' style='padding-left:
5px;'><\/i>provider_id",
+ "keyClass": "primaryKey",
+ "keyTitle": "Primary Key",
+ "name": "<i class='icon ion-key iconkey' style='padding-left:
5px;'><\/i>terminal_id",
"type": "int8",
"length": 19,
"nullable": "",
- "autoUpdated": "",
+ "autoUpdated": "√",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Uniquely identifies a terminal<\/p>"
},
{
"tableName": "withdrawal",
@@ -214,27 +242,41 @@
"tableType": "Table",
"keyClass": "",
"keyTitle": "",
- "name": "withdrawal_status",
- "type": "withdrawal_operation_status",
+ "name": "fees",
+ "type": "\"c2ec\".\"taler_amount_currency\"",
+ "length": 2147483647,
+ "nullable": "√",
+ "autoUpdated": "",
+ "defaultValue": "null",
+ "comments": "<p>Fees associated with the withdrawal, including
exchange and provider fees<\/p>"
+ },
+ {
+ "tableName": "terminal_provider",
+ "tableFileName": "terminal_provider",
+ "tableType": "Table",
+ "keyClass": "indexedColumn",
+ "keyTitle": "Indexed",
+ "name": "<i class='fa fa-sitemap fa-rotate-120' style='padding-right:
5px;'><\/i>name",
+ "type": "text",
"length": 2147483647,
"nullable": "",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Name of the provider, used for selection in
transaction proofing<\/p>"
},
{
- "tableName": "terminal",
- "tableFileName": "terminal",
+ "tableName": "withdrawal",
+ "tableFileName": "withdrawal",
"tableType": "Table",
"keyClass": "",
"keyTitle": "",
- "name": "access_token",
+ "name": "wopid",
"type": "bytea",
"length": 2147483647,
- "nullable": "√",
+ "nullable": "",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>The wopid (withdrawal operation id) is a nonce
generated by the terminal requesting a withdrawal. The wopid identifies a
specific withdrawal spawning all involved systems.<\/p>"
},
{
"tableName": "withdrawal",
@@ -242,13 +284,27 @@
"tableType": "Table",
"keyClass": "",
"keyTitle": "",
- "name": "registration_ts",
- "type": "int8",
- "length": 19,
- "nullable": "√",
+ "name": "retry_counter",
+ "type": "int4",
+ "length": 10,
+ "nullable": "",
+ "autoUpdated": "",
+ "defaultValue": "0",
+ "comments": "<p>Number of retry attempts<\/p>"
+ },
+ {
+ "tableName": "terminal",
+ "tableFileName": "terminal",
+ "tableType": "Table",
+ "keyClass": "",
+ "keyTitle": "",
+ "name": "access_token",
+ "type": "bytea",
+ "length": 2147483647,
+ "nullable": "",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>The access token of the terminal used for
authentication against the c2ec API<\/p>"
},
{
"tableName": "terminal",
@@ -259,24 +315,52 @@
"name": "active",
"type": "bool",
"length": 1,
- "nullable": "√",
+ "nullable": "",
"autoUpdated": "",
"defaultValue": "true",
- "comments": ""
+ "comments": "<p>Indicates if the terminal is active or
deactivated<\/p>"
},
{
- "tableName": "withdrawal",
- "tableFileName": "withdrawal",
+ "tableName": "terminal_provider",
+ "tableFileName": "terminal_provider",
"tableType": "Table",
"keyClass": "primaryKey",
"keyTitle": "Primary Key",
- "name": "<i class='icon ion-key iconkey' style='padding-left:
5px;'><\/i>withdrawal_id",
- "type": "bytea",
+ "name": "<i class='icon ion-key iconkey' style='padding-left:
5px;'><\/i>provider_terminal_id",
+ "type": "int8",
+ "length": 19,
+ "nullable": "",
+ "autoUpdated": "√",
+ "defaultValue": "null",
+ "comments": "<p>Uniquely identifies a provider<\/p>"
+ },
+ {
+ "tableName": "terminal_provider",
+ "tableFileName": "terminal_provider",
+ "tableType": "Table",
+ "keyClass": "",
+ "keyTitle": "",
+ "name": "backend_credentials",
+ "type": "text",
"length": 2147483647,
"nullable": "",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Credentials used to access the backend of the
provider<\/p>"
+ },
+ {
+ "tableName": "terminal",
+ "tableFileName": "terminal",
+ "tableType": "Table",
+ "keyClass": "",
+ "keyTitle": "",
+ "name": "description",
+ "type": "text",
+ "length": 2147483647,
+ "nullable": "√",
+ "autoUpdated": "",
+ "defaultValue": "null",
+ "comments": "<p>Description to help identify the terminal. This may
include the location and an identifier of the terminal.<\/p>"
},
{
"tableName": "withdrawal",
@@ -284,13 +368,27 @@
"tableType": "Table",
"keyClass": "",
"keyTitle": "",
- "name": "reserve_pub_key",
+ "name": "completion_proof",
"type": "bytea",
"length": 2147483647,
"nullable": "√",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Proof of transaction upon final completion delivered
by the providers system<\/p>"
+ },
+ {
+ "tableName": "withdrawal",
+ "tableFileName": "withdrawal",
+ "tableType": "Table",
+ "keyClass": "primaryKey",
+ "keyTitle": "Primary Key",
+ "name": "<i class='icon ion-key iconkey' style='padding-left:
5px;'><\/i>withdrawal_id",
+ "type": "int8",
+ "length": 19,
+ "nullable": "",
+ "autoUpdated": "√",
+ "defaultValue": "null",
+ "comments": "<p>The withdrawal id is used a technical id used by the
wire gateway to sequentially select new transactions<\/p>"
},
{
"tableName": "withdrawal",
@@ -299,12 +397,12 @@
"keyClass": "",
"keyTitle": "",
"name": "amount",
- "type": "varchar",
- "length": 50,
- "nullable": "√",
+ "type": "\"c2ec\".\"taler_amount_currency\"",
+ "length": 2147483647,
+ "nullable": "",
"autoUpdated": "",
"defaultValue": "null",
- "comments": ""
+ "comments": "<p>Effective amount to be put into the reserve after
completion<\/p>"
}
];
var config = {
diff --git a/schemaspy/nonce2ecash-erd/constraint.js
b/schemaspy/c2ec-erd/constraint.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/constraint.js
rename to schemaspy/c2ec-erd/constraint.js
diff --git a/schemaspy/nonce2ecash-erd/constraints.html
b/schemaspy/c2ec-erd/constraints.html
similarity index 97%
rename from schemaspy/nonce2ecash-erd/constraints.html
rename to schemaspy/c2ec-erd/constraints.html
index 641fa8b..59e68b9 100644
--- a/schemaspy/nonce2ecash-erd/constraints.html
+++ b/schemaspy/c2ec-erd/constraints.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>postgres.public</title>
+ <title>postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
@@ -115,7 +115,7 @@
<td>
<table border='0' cellspacing='0'
cellpadding='0'>
<tr>
- <td><a
href='tables/terminal_provider.html'>terminal_provider</a><span>.id</span></td>
+ <td><a
href='tables/terminal_provider.html'>terminal_provider</a><span>.provider_terminal_id</span></td>
</tr>
</table>
</td>
@@ -133,7 +133,7 @@
<td>
<table border='0' cellspacing='0'
cellpadding='0'>
<tr>
- <td><a
href='tables/terminal.html'>terminal</a><span>.id</span></td>
+ <td><a
href='tables/terminal.html'>terminal</a><span>.terminal_id</span></td>
</tr>
</table>
</td>
@@ -180,8 +180,8 @@
</tr>
<tr>
<td><a
href='tables/withdrawal.html'>withdrawal</a></td>
- <td>withdrawal_withdrawal_id_check</td>
- <td>((length(withdrawal_id) =
32))</td>
+ <td>withdrawal_wopid_check</td>
+ <td>((length(wopid) = 32))</td>
</tr>
</tbody>
</table>
diff --git a/schemaspy/nonce2ecash-erd/deletionOrder.txt
b/schemaspy/c2ec-erd/deletionOrder.txt
similarity index 100%
rename from schemaspy/nonce2ecash-erd/deletionOrder.txt
rename to schemaspy/c2ec-erd/deletionOrder.txt
diff --git a/schemaspy/nonce2ecash-erd/diagrams/orphans/orphans.dot
b/schemaspy/c2ec-erd/diagrams/orphans/orphans.dot
similarity index 100%
rename from schemaspy/nonce2ecash-erd/diagrams/orphans/orphans.dot
rename to schemaspy/c2ec-erd/diagrams/orphans/orphans.dot
diff --git
a/schemaspy/nonce2ecash-erd/diagrams/summary/relationships.real.compact.dot
b/schemaspy/c2ec-erd/diagrams/summary/relationships.real.compact.dot
similarity index 70%
rename from
schemaspy/nonce2ecash-erd/diagrams/summary/relationships.real.compact.dot
rename to schemaspy/c2ec-erd/diagrams/summary/relationships.real.compact.dot
index 816df9c..41c2f12 100644
--- a/schemaspy/nonce2ecash-erd/diagrams/summary/relationships.real.compact.dot
+++ b/schemaspy/c2ec-erd/diagrams/summary/relationships.real.compact.dot
@@ -4,7 +4,7 @@ digraph "compactRelationshipsDiagram" {
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57"
HEIGHT="16"><B>terminal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
@@ -17,7 +17,8 @@ digraph "compactRelationshipsDiagram" {
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16"><B>terminal_provider</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="provider_terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG
SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD></TR>
<TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
</TABLE>>
@@ -29,8 +30,8 @@ digraph "compactRelationshipsDiagram" {
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75"
HEIGHT="16"><B>withdrawal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD></TR>
</TABLE>>
@@ -38,6 +39,6 @@ digraph "compactRelationshipsDiagram" {
target="_top"
tooltip="withdrawal"
];
- "terminal":"provider_id":w -> "terminal_provider":"id":e [arrowhead=none
dir=back arrowtail=crowodot];
- "withdrawal":"terminal_id":w -> "terminal":"id":e [arrowhead=none dir=back
arrowtail=crowodot];
+ "terminal":"provider_id":w -> "terminal_provider":"provider_terminal_id":e
[arrowhead=none dir=back arrowtail=crowodot];
+ "withdrawal":"terminal_id":w -> "terminal":"terminal_id":e [arrowhead=none
dir=back arrowtail=crowodot];
}
diff --git
a/schemaspy/nonce2ecash-erd/diagrams/summary/relationships.real.large.dot
b/schemaspy/c2ec-erd/diagrams/summary/relationships.real.large.dot
similarity index 52%
rename from
schemaspy/nonce2ecash-erd/diagrams/summary/relationships.real.large.dot
rename to schemaspy/c2ec-erd/diagrams/summary/relationships.real.large.dot
index 02b4a79..2029c99 100644
--- a/schemaspy/nonce2ecash-erd/diagrams/summary/relationships.real.large.dot
+++ b/schemaspy/c2ec-erd/diagrams/summary/relationships.real.large.dot
@@ -4,10 +4,10 @@ digraph "largeRelationshipsDiagram" {
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57"
HEIGHT="16"><B>terminal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="access_token" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">access_token</TD></TR></TABLE></TD></TR>
<TR><TD PORT="active" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">active</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="remarks" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">remarks</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="description" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">description</TD></TR></TABLE></TD></TR>
<TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
</TABLE>>
@@ -19,9 +19,10 @@ digraph "largeRelationshipsDiagram" {
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16"><B>terminal_provider</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="name" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">name</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="remarks" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">remarks</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="provider_terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG
SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="backend_base_url" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="backend_credentials" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
</TABLE>>
URL="tables/terminal_provider.html"
@@ -32,18 +33,24 @@ digraph "largeRelationshipsDiagram" {
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75"
HEIGHT="16"><B>withdrawal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="reserve_pub_key" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="registration_ts" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">registration_ts</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="amount" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">amount</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="withdrawal_status" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="wopid" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">wopid</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="reserve_pub_key" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="registration_ts" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">registration_ts</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="amount" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">amount</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="fees" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">fees</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="withdrawal_status" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="provider_transaction_id" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">provider_transaction_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="last_retry_ts" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">last_retry_ts</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="retry_counter" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">retry_counter</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="completion_proof" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">completion_proof</TD></TR></TABLE></TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD></TR>
</TABLE>>
URL="tables/withdrawal.html"
target="_top"
tooltip="withdrawal"
];
- "terminal":"provider_id":w -> "terminal_provider":"id":e [arrowhead=none
dir=back arrowtail=crowodot];
- "withdrawal":"terminal_id":w -> "terminal":"id":e [arrowhead=none dir=back
arrowtail=crowodot];
+ "terminal":"provider_id":w -> "terminal_provider":"provider_terminal_id":e
[arrowhead=none dir=back arrowtail=crowodot];
+ "withdrawal":"terminal_id":w -> "terminal":"terminal_id":e [arrowhead=none
dir=back arrowtail=crowodot];
}
diff --git a/schemaspy/nonce2ecash-erd/diagrams/tables/terminal.1degree.dot
b/schemaspy/c2ec-erd/diagrams/tables/terminal.1degree.dot
similarity index 68%
rename from schemaspy/nonce2ecash-erd/diagrams/tables/terminal.1degree.dot
rename to schemaspy/c2ec-erd/diagrams/tables/terminal.1degree.dot
index 18b61ab..b25e363 100644
--- a/schemaspy/nonce2ecash-erd/diagrams/tables/terminal.1degree.dot
+++ b/schemaspy/c2ec-erd/diagrams/tables/terminal.1degree.dot
@@ -1,15 +1,15 @@
digraph "oneDegreeRelationshipsDiagram" {
graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by
SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46"
fontname="Helvetica" fontsize="11" ration="compress" ]; node [
fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [
arrowsize="0.8" ];
- "terminal":"provider_id":w -> "terminal_provider":"id":e [arrowhead=none
dir=back arrowtail=crowodot];
- "withdrawal":"terminal_id":w -> "terminal":"id.type":e [arrowhead=none
dir=back arrowtail=crowodot];
+ "terminal":"provider_id":w -> "terminal_provider":"provider_terminal_id":e
[arrowhead=none dir=back arrowtail=crowodot];
+ "withdrawal":"terminal_id":w -> "terminal":"terminal_id.type":e
[arrowhead=none dir=back arrowtail=crowodot];
"terminal" [
label=<
<TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57"
HEIGHT="16"><B>terminal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">id</TD></TR></TABLE></TD><TD PORT="id.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD><TD PORT="terminal_id.type"
ALIGN="LEFT">int8[19]</TD></TR>
<TR><TD PORT="access_token" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">access_token</TD></TR></TABLE></TD><TD PORT="access_token.type"
ALIGN="LEFT">bytea[2147483647]</TD></TR>
<TR><TD PORT="active" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">active</TD></TR></TABLE></TD><TD PORT="active.type"
ALIGN="LEFT">bool[1]</TD></TR>
- <TR><TD PORT="remarks" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">remarks</TD></TR></TABLE></TD><TD PORT="remarks.type"
ALIGN="LEFT">varchar[255]</TD></TR>
+ <TR><TD PORT="description" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">description</TD></TR></TABLE></TD><TD PORT="description.type"
ALIGN="LEFT">text[2147483647]</TD></TR>
<TR><TD PORT="provider_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">provider_id</TD></TR></TABLE></TD><TD PORT="provider_id.type"
ALIGN="LEFT">int8[19]</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
</TABLE>>
@@ -21,7 +21,8 @@ digraph "oneDegreeRelationshipsDiagram" {
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16"><B>terminal_provider</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="provider_terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG
SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD></TR>
<TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
</TABLE>>
@@ -33,8 +34,8 @@ digraph "oneDegreeRelationshipsDiagram" {
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75"
HEIGHT="16"><B>withdrawal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD></TR>
</TABLE>>
diff --git a/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.1degree.dot
b/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.1degree.dot
new file mode 100644
index 0000000..9bd2940
--- /dev/null
+++ b/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.1degree.dot
@@ -0,0 +1,31 @@
+digraph "oneDegreeRelationshipsDiagram" {
+ graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by
SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46"
fontname="Helvetica" fontsize="11" ration="compress" ]; node [
fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [
arrowsize="0.8" ];
+ "terminal":"provider_id":w ->
"terminal_provider":"provider_terminal_id.type":e [arrowhead=none dir=back
arrowtail=crowodot];
+ "terminal" [
+ label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
+ <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57"
HEIGHT="16"><B>terminal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
+ <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
+ </TABLE>>
+ URL="terminal.html"
+ target="_top"
+ tooltip="terminal"
+ ];
+ "terminal_provider" [
+ label=<
+ <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
+ <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16"><B>terminal_provider</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="provider_terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG
SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD><TD
PORT="provider_terminal_id.type" ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="name" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD><TD PORT="name.type"
ALIGN="LEFT">text[2147483647]</TD></TR>
+ <TR><TD PORT="backend_base_url" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD><TD
PORT="backend_base_url.type" ALIGN="LEFT">text[2147483647]</TD></TR>
+ <TR><TD PORT="backend_credentials" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD><TD
PORT="backend_credentials.type" ALIGN="LEFT">text[2147483647]</TD></TR>
+ <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 0</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
+ </TABLE>>
+ URL="terminal_provider.html"
+ target="_top"
+ tooltip="terminal_provider"
+ ];
+}
diff --git
a/schemaspy/nonce2ecash-erd/diagrams/tables/terminal_provider.2degrees.dot
b/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.2degrees.dot
similarity index 55%
rename from
schemaspy/nonce2ecash-erd/diagrams/tables/terminal_provider.2degrees.dot
rename to schemaspy/c2ec-erd/diagrams/tables/terminal_provider.2degrees.dot
index f2fc5a1..c3ca87c 100644
--- a/schemaspy/nonce2ecash-erd/diagrams/tables/terminal_provider.2degrees.dot
+++ b/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.2degrees.dot
@@ -1,12 +1,12 @@
digraph "twoDegreesRelationshipsDiagram" {
graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by
SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46"
fontname="Helvetica" fontsize="11" ration="compress" ]; node [
fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [
arrowsize="0.8" ];
- "terminal":"provider_id":w -> "terminal_provider":"id.type":e
[arrowhead=none dir=back arrowtail=crowodot];
- "withdrawal":"elipses":w -> "terminal":"id":e [arrowhead=none dir=back
arrowtail=crowodot];
+ "terminal":"provider_id":w ->
"terminal_provider":"provider_terminal_id.type":e [arrowhead=none dir=back
arrowtail=crowodot];
+ "withdrawal":"elipses":w -> "terminal":"terminal_id":e [arrowhead=none
dir=back arrowtail=crowodot];
"terminal" [
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57"
HEIGHT="16"><B>terminal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
@@ -19,9 +19,10 @@ digraph "twoDegreesRelationshipsDiagram" {
label=<
<TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16"><B>terminal_provider</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">id</TD></TR></TABLE></TD><TD PORT="id.type"
ALIGN="LEFT">int8[19]</TD></TR>
- <TR><TD PORT="name" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">name</TD></TR></TABLE></TD><TD PORT="name.type"
ALIGN="LEFT">varchar[50]</TD></TR>
- <TR><TD PORT="remarks" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">remarks</TD></TR></TABLE></TD><TD PORT="remarks.type"
ALIGN="LEFT">varchar[255]</TD></TR>
+ <TR><TD PORT="provider_terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG
SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD><TD
PORT="provider_terminal_id.type" ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="name" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD><TD PORT="name.type"
ALIGN="LEFT">text[2147483647]</TD></TR>
+ <TR><TD PORT="backend_base_url" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD><TD
PORT="backend_base_url.type" ALIGN="LEFT">text[2147483647]</TD></TR>
+ <TR><TD PORT="backend_credentials" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="139" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD><TD
PORT="backend_credentials.type" ALIGN="LEFT">text[2147483647]</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 0</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
</TABLE>>
URL="terminal_provider.html"
diff --git a/schemaspy/nonce2ecash-erd/diagrams/tables/withdrawal.1degree.dot
b/schemaspy/c2ec-erd/diagrams/tables/withdrawal.1degree.dot
similarity index 51%
rename from schemaspy/nonce2ecash-erd/diagrams/tables/withdrawal.1degree.dot
rename to schemaspy/c2ec-erd/diagrams/tables/withdrawal.1degree.dot
index c22809d..8d16940 100644
--- a/schemaspy/nonce2ecash-erd/diagrams/tables/withdrawal.1degree.dot
+++ b/schemaspy/c2ec-erd/diagrams/tables/withdrawal.1degree.dot
@@ -1,11 +1,11 @@
digraph "oneDegreeRelationshipsDiagram" {
graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by
SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46"
fontname="Helvetica" fontsize="11" ration="compress" ]; node [
fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [
arrowsize="0.8" ];
- "withdrawal":"terminal_id":w -> "terminal":"id":e [arrowhead=none dir=back
arrowtail=crowodot];
+ "withdrawal":"terminal_id":w -> "terminal":"terminal_id":e [arrowhead=none
dir=back arrowtail=crowodot];
"terminal" [
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57"
HEIGHT="16"><B>terminal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
@@ -18,12 +18,18 @@ digraph "oneDegreeRelationshipsDiagram" {
label=<
<TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75"
HEIGHT="16"><B>withdrawal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="withdrawal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD><TD PORT="withdrawal_id.type"
ALIGN="LEFT">bytea[2147483647]</TD></TR>
- <TR><TD PORT="reserve_pub_key" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD><TD
PORT="reserve_pub_key.type" ALIGN="LEFT">bytea[2147483647]</TD></TR>
- <TR><TD PORT="registration_ts" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">registration_ts</TD></TR></TABLE></TD><TD
PORT="registration_ts.type" ALIGN="LEFT">int8[19]</TD></TR>
- <TR><TD PORT="amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">amount</TD></TR></TABLE></TD><TD PORT="amount.type"
ALIGN="LEFT">varchar[50]</TD></TR>
- <TR><TD PORT="withdrawal_status" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD><TD
PORT="withdrawal_status.type"
ALIGN="LEFT">withdrawal_operation_status[2147483647]</TD></TR>
- <TR><TD PORT="terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD><TD PORT="terminal_id.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="withdrawal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD><TD PORT="withdrawal_id.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="wopid" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">wopid</TD></TR></TABLE></TD><TD PORT="wopid.type"
ALIGN="LEFT">bytea[2147483647]</TD></TR>
+ <TR><TD PORT="reserve_pub_key" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD><TD
PORT="reserve_pub_key.type" ALIGN="LEFT">bytea[2147483647]</TD></TR>
+ <TR><TD PORT="registration_ts" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">registration_ts</TD></TR></TABLE></TD><TD
PORT="registration_ts.type" ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">amount</TD></TR></TABLE></TD><TD PORT="amount.type"
ALIGN="LEFT">"c2ec"."taler_amount_currency"[2147483647]</TD></TR>
+ <TR><TD PORT="fees" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">fees</TD></TR></TABLE></TD><TD PORT="fees.type"
ALIGN="LEFT">"c2ec"."taler_amount_currency"[2147483647]</TD></TR>
+ <TR><TD PORT="withdrawal_status" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD><TD
PORT="withdrawal_status.type"
ALIGN="LEFT">"c2ec"."withdrawal_operation_status"[2147483647]</TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD><TD PORT="terminal_id.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="provider_transaction_id" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">provider_transaction_id</TD></TR></TABLE></TD><TD
PORT="provider_transaction_id.type" ALIGN="LEFT">text[2147483647]</TD></TR>
+ <TR><TD PORT="last_retry_ts" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">last_retry_ts</TD></TR></TABLE></TD><TD PORT="last_retry_ts.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="retry_counter" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">retry_counter</TD></TR></TABLE></TD><TD PORT="retry_counter.type"
ALIGN="LEFT">int4[10]</TD></TR>
+ <TR><TD PORT="completion_proof" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">completion_proof</TD></TR></TABLE></TD><TD
PORT="completion_proof.type" ALIGN="LEFT">bytea[2147483647]</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">0 ></TD></TR>
</TABLE>>
URL="withdrawal.html"
diff --git a/schemaspy/nonce2ecash-erd/diagrams/tables/withdrawal.2degrees.dot
b/schemaspy/c2ec-erd/diagrams/tables/withdrawal.2degrees.dot
similarity index 56%
rename from schemaspy/nonce2ecash-erd/diagrams/tables/withdrawal.2degrees.dot
rename to schemaspy/c2ec-erd/diagrams/tables/withdrawal.2degrees.dot
index 08905c8..db58116 100644
--- a/schemaspy/nonce2ecash-erd/diagrams/tables/withdrawal.2degrees.dot
+++ b/schemaspy/c2ec-erd/diagrams/tables/withdrawal.2degrees.dot
@@ -1,12 +1,12 @@
digraph "twoDegreesRelationshipsDiagram" {
graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by
SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46"
fontname="Helvetica" fontsize="11" ration="compress" ]; node [
fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [
arrowsize="0.8" ];
"terminal":"provider_id":w -> "terminal_provider":"elipses":e
[arrowhead=none dir=back arrowtail=crowodot];
- "withdrawal":"terminal_id":w -> "terminal":"id":e [arrowhead=none dir=back
arrowtail=crowodot];
+ "withdrawal":"terminal_id":w -> "terminal":"terminal_id":e [arrowhead=none
dir=back arrowtail=crowodot];
"terminal" [
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57"
HEIGHT="16"><B>terminal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR>
<TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
@@ -30,12 +30,18 @@ digraph "twoDegreesRelationshipsDiagram" {
label=<
<TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
<TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75"
HEIGHT="16"><B>withdrawal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="withdrawal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD><TD PORT="withdrawal_id.type"
ALIGN="LEFT">bytea[2147483647]</TD></TR>
- <TR><TD PORT="reserve_pub_key" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD><TD
PORT="reserve_pub_key.type" ALIGN="LEFT">bytea[2147483647]</TD></TR>
- <TR><TD PORT="registration_ts" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">registration_ts</TD></TR></TABLE></TD><TD
PORT="registration_ts.type" ALIGN="LEFT">int8[19]</TD></TR>
- <TR><TD PORT="amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">amount</TD></TR></TABLE></TD><TD PORT="amount.type"
ALIGN="LEFT">varchar[50]</TD></TR>
- <TR><TD PORT="withdrawal_status" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="123" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD><TD
PORT="withdrawal_status.type"
ALIGN="LEFT">withdrawal_operation_status[2147483647]</TD></TR>
- <TR><TD PORT="terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="123"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD><TD PORT="terminal_id.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="withdrawal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD><TD PORT="withdrawal_id.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="wopid" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">wopid</TD></TR></TABLE></TD><TD PORT="wopid.type"
ALIGN="LEFT">bytea[2147483647]</TD></TR>
+ <TR><TD PORT="reserve_pub_key" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD><TD
PORT="reserve_pub_key.type" ALIGN="LEFT">bytea[2147483647]</TD></TR>
+ <TR><TD PORT="registration_ts" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">registration_ts</TD></TR></TABLE></TD><TD
PORT="registration_ts.type" ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">amount</TD></TR></TABLE></TD><TD PORT="amount.type"
ALIGN="LEFT">"c2ec"."taler_amount_currency"[2147483647]</TD></TR>
+ <TR><TD PORT="fees" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">fees</TD></TR></TABLE></TD><TD PORT="fees.type"
ALIGN="LEFT">"c2ec"."taler_amount_currency"[2147483647]</TD></TR>
+ <TR><TD PORT="withdrawal_status" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD><TD
PORT="withdrawal_status.type"
ALIGN="LEFT">"c2ec"."withdrawal_operation_status"[2147483647]</TD></TR>
+ <TR><TD PORT="terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">terminal_id</TD></TR></TABLE></TD><TD PORT="terminal_id.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="provider_transaction_id" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">provider_transaction_id</TD></TR></TABLE></TD><TD
PORT="provider_transaction_id.type" ALIGN="LEFT">text[2147483647]</TD></TR>
+ <TR><TD PORT="last_retry_ts" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">last_retry_ts</TD></TR></TABLE></TD><TD PORT="last_retry_ts.type"
ALIGN="LEFT">int8[19]</TD></TR>
+ <TR><TD PORT="retry_counter" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159"
HEIGHT="16">retry_counter</TD></TR></TABLE></TD><TD PORT="retry_counter.type"
ALIGN="LEFT">int4[10]</TD></TR>
+ <TR><TD PORT="completion_proof" COLSPAN="2" ALIGN="LEFT"><TABLE
BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT"
FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="159" HEIGHT="16">completion_proof</TD></TR></TABLE></TD><TD
PORT="completion_proof.type" ALIGN="LEFT">bytea[2147483647]</TD></TR>
<TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">0 ></TD></TR>
</TABLE>>
URL="withdrawal.html"
diff --git
a/schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.eot
b/schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.eot
rename to schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.eot
diff --git
a/schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.svg
b/schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.svg
rename to schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.svg
diff --git
a/schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.ttf
b/schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.ttf
rename to schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.ttf
diff --git
a/schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.woff
b/schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.woff
rename to
schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.woff
diff --git
a/schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.woff2
b/schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower-v8-latin-regular.woff2
rename to
schemaspy/c2ec-erd/fonts/indieflower/indie-flower-v8-latin-regular.woff2
diff --git a/schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower.css
b/schemaspy/c2ec-erd/fonts/indieflower/indie-flower.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/fonts/indieflower/indie-flower.css
rename to schemaspy/c2ec-erd/fonts/indieflower/indie-flower.css
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.eot
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.eot
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.eot
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.svg
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.svg
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.svg
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.ttf
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.ttf
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.ttf
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff2
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff2
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff2
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.eot
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.eot
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.eot
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.svg
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.svg
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.svg
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.ttf
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.ttf
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.ttf
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff2
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff2
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff2
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.eot
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.eot
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.eot
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.svg
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.svg
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.svg
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.ttf
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.ttf
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.ttf
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff2
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff2
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff2
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.eot
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.eot
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.eot
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.svg
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.svg
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.svg
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.ttf
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.ttf
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.ttf
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff2
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff2
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff2
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.eot
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.eot
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.eot
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.svg
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.svg
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.svg
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.ttf
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.ttf
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.ttf
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff2
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff2
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff2
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.eot
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.eot
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.eot
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.eot
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.svg
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.svg
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.svg
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.svg
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.ttf
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.ttf
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.ttf
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.ttf
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff2
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff2
similarity index 100%
rename from
schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff2
rename to
schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff2
diff --git
a/schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro.css
b/schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/fonts/source-sans-pro/source-sans-pro.css
rename to schemaspy/c2ec-erd/fonts/source-sans-pro/source-sans-pro.css
diff --git a/schemaspy/nonce2ecash-erd/index.html
b/schemaspy/c2ec-erd/index.html
similarity index 95%
rename from schemaspy/nonce2ecash-erd/index.html
rename to schemaspy/c2ec-erd/index.html
index 25c0f98..c263153 100644
--- a/schemaspy/nonce2ecash-erd/index.html
+++ b/schemaspy/c2ec-erd/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>postgres.public</title>
+ <title>postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
@@ -77,12 +77,12 @@
<div class="row">
<div class="col-md-12">
<div class="callout callout-info">
- <h4>SchemaSpy Analysis of postgres.public</h4>
- <p>Generated on Wed Mar 06 14:13 CET 2024</p>
+ <h4>SchemaSpy Analysis of postgres.c2ec</h4>
+ <p>Generated on Sun Mar 24 12:44 CET 2024</p>
</div>
</div>
</div>
- <a href="postgres.public.xml" title="XML
Representation">XML Representation</a><br />
+ <a href="postgres.c2ec.xml" title="XML Representation">XML
Representation</a><br />
<a href="insertionOrder.txt" title="Useful for loading
data into a database">Insertion Order</a>
<a href="deletionOrder.txt" title="Useful for purging data
from a database">Deletion Order</a>
</section>
@@ -118,7 +118,7 @@
<span class="info-box-icon bg-green"><span
class="glyphicon glyphicon-list-alt" aria-hidden="true"></span></span>
<div class="info-box-content">
<span class="info-box-text">COLUMNS</span>
- <span class="info-box-number">14</span>
+ <span class="info-box-number">21</span>
</div>
<!-- /.info-box-content -->
</div>
@@ -182,11 +182,11 @@
</div>
<div class="box box-primary">
<div class="box-header with-border">
- <h3 class="box-title">Schema public</h3>
+ <h3 class="box-title">Schema c2ec</h3>
<span class="label label-primary pull-right"><i
class="fa fa-cog fa-2x"></i></span>
</div><!-- /.box-header -->
<div class="box-body">
- <p> <p>standard public schema</p> </p>
+ <p> <p>Schema containing all tables and types
related to c2ec (cashless2ecash)</p> </p>
</div><!-- /.box-body -->
</div>
<div class="box box-primary">
@@ -221,25 +221,25 @@
<td class="detail" align="right">5</td>
<td class="detail"
align="right">-1</td>
<td class="detail"
align="right">Table</td>
- <td class="comment detail"
style="display: table-cell;"></td>
+ <td class="comment detail"
style="display: table-cell;"><p>Table containing information about terminals of
providers</p></td>
</tr>
<tr class="tbl even" valign="top">
<td class="detail"><a
href="tables/terminal_provider.html">terminal_provider</a></td>
<td class="detail" align="right">1</td>
<td class="detail" align="right">0</td>
- <td class="detail" align="right">3</td>
+ <td class="detail" align="right">4</td>
<td class="detail"
align="right">-1</td>
<td class="detail"
align="right">Table</td>
- <td class="comment detail"
style="display: table-cell;"></td>
+ <td class="comment detail"
style="display: table-cell;"><p>Table describing providers of c2ec
terminal</p></td>
</tr>
<tr class="tbl even" valign="top">
<td class="detail"><a
href="tables/withdrawal.html">withdrawal</a></td>
<td class="detail" align="right">0</td>
<td class="detail" align="right">1</td>
- <td class="detail" align="right">6</td>
+ <td class="detail"
align="right">12</td>
<td class="detail"
align="right">-1</td>
<td class="detail"
align="right">Table</td>
- <td class="comment detail"
style="display: table-cell;"></td>
+ <td class="comment detail"
style="display: table-cell;"><p>Table representing withdrawal processes
initiated by terminals</p></td>
</tr>
</table>
</div>
diff --git a/schemaspy/nonce2ecash-erd/info-html.txt
b/schemaspy/c2ec-erd/info-html.txt
similarity index 63%
rename from schemaspy/nonce2ecash-erd/info-html.txt
rename to schemaspy/c2ec-erd/info-html.txt
index 535c4a7..6b93fd2 100644
--- a/schemaspy/nonce2ecash-erd/info-html.txt
+++ b/schemaspy/c2ec-erd/info-html.txt
@@ -1,5 +1,5 @@
-date=2024-03-06 14:13:45+0100
-os=Linux 6.5.0-21-generic
+date=2024-03-24 12:44:39+0100
+os=Linux 6.5.0-26-generic
schemaspy-version=6.2.4
schemaspy-build=6.2.4.41 2023-07-21 11:15:12
renderer=Graphviz dot 2.43.0
diff --git a/schemaspy/nonce2ecash-erd/insertionOrder.txt
b/schemaspy/c2ec-erd/insertionOrder.txt
similarity index 100%
rename from schemaspy/nonce2ecash-erd/insertionOrder.txt
rename to schemaspy/c2ec-erd/insertionOrder.txt
diff --git a/schemaspy/nonce2ecash-erd/main.js b/schemaspy/c2ec-erd/main.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/main.js
rename to schemaspy/c2ec-erd/main.js
diff --git a/schemaspy/nonce2ecash-erd/orphans.html
b/schemaspy/c2ec-erd/orphans.html
similarity index 99%
rename from schemaspy/nonce2ecash-erd/orphans.html
rename to schemaspy/c2ec-erd/orphans.html
index 0b7f288..d027125 100644
--- a/schemaspy/nonce2ecash-erd/orphans.html
+++ b/schemaspy/c2ec-erd/orphans.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>postgres.public</title>
+ <title>postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
diff --git a/schemaspy/c2ec-erd/postgres.c2ec.xml
b/schemaspy/c2ec-erd/postgres.c2ec.xml
new file mode 100644
index 0000000..9dc240e
--- /dev/null
+++ b/schemaspy/c2ec-erd/postgres.c2ec.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?><database name="postgres" schema="c2ec"
type="PostgreSQL - 15.2 (Debian 15.2-1.pgdg110+1)">
+ <tables>
+ <table name="terminal" remarks="Table containing information about
terminals of providers" schema="c2ec" type="TABLE">
+ <column autoUpdated="true" defaultValue="null" digits="0" id="0"
name="terminal_id" nullable="false" remarks="Uniquely identifies a terminal"
size="19" type="int8" typeCode="-5">
+ <child column="terminal_id"
foreignKey="withdrawal_terminal_id_fkey" implied="false"
onDeleteCascade="false" schema="c2ec" table="withdrawal"/>
+ </column>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="1"
name="access_token" nullable="false" remarks="The access token of the terminal
used for authentication against the c2ec API" size="2147483647" type="bytea"
typeCode="-2"/>
+ <column autoUpdated="false" defaultValue="true" digits="0" id="2"
name="active" nullable="false" remarks="Indicates if the terminal is active or
deactivated" size="1" type="bool" typeCode="-7"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="3"
name="description" nullable="true" remarks="Description to help identify the
terminal. This may include the location and an identifier of the terminal."
size="2147483647" type="text" typeCode="12"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="4"
name="provider_id" nullable="false" remarks="Indicates the terminal provider to
which the terminal belongs" size="19" type="int8" typeCode="-5">
+ <parent column="provider_terminal_id"
foreignKey="terminal_provider_id_fkey" implied="false" onDeleteCascade="false"
schema="c2ec" table="terminal_provider"/>
+ </column>
+ <primaryKey column="terminal_id" sequenceNumberInPK="1"/>
+ <index name="terminal_pkey" unique="true">
+ <column ascending="true" name="terminal_id"/>
+ </index>
+ <checkConstraint constraint="((length(access_token) = 32))"
name="terminal_access_token_check"/>
+ </table>
+ <table name="terminal_provider" remarks="Table describing providers of
c2ec terminal" schema="c2ec" type="TABLE">
+ <column autoUpdated="true" defaultValue="null" digits="0" id="0"
name="provider_terminal_id" nullable="false" remarks="Uniquely identifies a
provider" size="19" type="int8" typeCode="-5">
+ <child column="provider_id" foreignKey="terminal_provider_id_fkey"
implied="false" onDeleteCascade="false" schema="c2ec" table="terminal"/>
+ </column>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="1"
name="name" nullable="false" remarks="Name of the provider, used for selection
in transaction proofing" size="2147483647" type="text" typeCode="12"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="2"
name="backend_base_url" nullable="false" remarks="URL of the provider backend
for transaction proofing" size="2147483647" type="text" typeCode="12"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="3"
name="backend_credentials" nullable="false" remarks="Credentials used to access
the backend of the provider" size="2147483647" type="text" typeCode="12"/>
+ <primaryKey column="provider_terminal_id" sequenceNumberInPK="1"/>
+ <index name="terminal_provider_pkey" unique="true">
+ <column ascending="true" name="provider_terminal_id"/>
+ </index>
+ <index name="terminal_provider_name_key" unique="true">
+ <column ascending="true" name="name"/>
+ </index>
+ </table>
+ <table name="withdrawal" remarks="Table representing withdrawal
processes initiated by terminals" schema="c2ec" type="TABLE">
+ <column autoUpdated="true" defaultValue="null" digits="0" id="0"
name="withdrawal_id" nullable="false" remarks="The withdrawal id is used a
technical id used by the wire gateway to sequentially select new transactions"
size="19" type="int8" typeCode="-5"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="1"
name="wopid" nullable="false" remarks="The wopid (withdrawal operation id) is a
nonce generated by the terminal requesting a withdrawal. 	The wopid
identifies a specific withdrawal spawning all involved systems."
size="2147483647" type="bytea" typeCode="-2"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="2"
name="reserve_pub_key" nullable="false" remarks="Reserve public key for the
reserve which will hold the withdrawal amount after completion"
size="2147483647" type="bytea" typeCode="-2"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="3"
name="registration_ts" nullable="false" remarks="Timestamp of when the
withdrawal request was registered" size="19" type="int8" typeCode="-5"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="4"
name="amount" nullable="false" remarks="Effective amount to be put into the
reserve after completion" size="2147483647"
type=""c2ec"."taler_amount_currency"" typeCode="2002"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="5"
name="fees" nullable="true" remarks="Fees associated with the withdrawal,
including exchange and provider fees" size="2147483647"
type=""c2ec"."taler_amount_currency"" typeCode="2002"/>
+ <column autoUpdated="false"
defaultValue="'pending'::c2ec.withdrawal_operation_status" digits="0" id="6"
name="withdrawal_status" nullable="false" remarks="Status of the withdrawal
process" size="2147483647"
type=""c2ec"."withdrawal_operation_status"" typeCode="12"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="7"
name="terminal_id" nullable="false" remarks="ID of the terminal that initiated
the withdrawal" size="19" type="int8" typeCode="-5">
+ <parent column="terminal_id"
foreignKey="withdrawal_terminal_id_fkey" implied="false"
onDeleteCascade="false" schema="c2ec" table="terminal"/>
+ </column>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="8"
name="provider_transaction_id" nullable="true" remarks="Transaction identifier
supplied by the provider for backend request" size="2147483647" type="text"
typeCode="12"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="9"
name="last_retry_ts" nullable="true" remarks="Timestamp of the last retry
attempt" size="19" type="int8" typeCode="-5"/>
+ <column autoUpdated="false" defaultValue="0" digits="0" id="10"
name="retry_counter" nullable="false" remarks="Number of retry attempts"
size="10" type="int4" typeCode="4"/>
+ <column autoUpdated="false" defaultValue="null" digits="0" id="11"
name="completion_proof" nullable="true" remarks="Proof of transaction upon
final completion delivered by the providers system" size="2147483647"
type="bytea" typeCode="-2"/>
+ <primaryKey column="withdrawal_id" sequenceNumberInPK="1"/>
+ <index name="withdrawal_pkey" unique="true">
+ <column ascending="true" name="withdrawal_id"/>
+ </index>
+ <checkConstraint constraint="((length(reserve_pub_key) = 32))"
name="withdrawal_reserve_pub_key_check"/>
+ <checkConstraint constraint="((length(wopid) = 32))"
name="withdrawal_wopid_check"/>
+ </table>
+ </tables>
+</database>
diff --git a/schemaspy/nonce2ecash-erd/relationships.html
b/schemaspy/c2ec-erd/relationships.html
similarity index 96%
rename from schemaspy/nonce2ecash-erd/relationships.html
rename to schemaspy/c2ec-erd/relationships.html
index 052c40e..94bd54d 100644
--- a/schemaspy/nonce2ecash-erd/relationships.html
+++ b/schemaspy/c2ec-erd/relationships.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>postgres.public</title>
+ <title>postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
@@ -94,16 +94,16 @@
<div class="chart tab-pane active"
id="compactDegreeImg-chart" style="position: relative; overflow-x:auto;">
<map id="compactRelationshipsDiagram"
name="compactRelationshipsDiagram">
<area shape="rect" id="node1" href="tables/terminal.html" target="_top"
title="terminal" alt="" coords="293,35,461,181">
-<area shape="rect" id="node2" href="tables/terminal_provider.html"
target="_top" title="terminal_provider" alt="" coords="5,64,249,181">
-<area shape="rect" id="node3" href="tables/withdrawal.html" target="_top"
title="withdrawal" alt="" coords="505,5,719,152">
+<area shape="rect" id="node2" href="tables/terminal_provider.html"
target="_top" title="terminal_provider" alt="" coords="5,64,249,211">
+<area shape="rect" id="node3" href="tables/withdrawal.html" target="_top"
title="withdrawal" alt="" coords="505,5,767,152">
</map>
<a name='diagram'><img
id="compactDegreeImg" src="diagrams/summary/relationships.real.compact.png"
usemap="#compactRelationshipsDiagram" class="diagram" border="0"
align="left"></a>
</div>
<div class="chart tab-pane "
id="largeDegreeImg-chart" style="position: relative; overflow-x:auto;">
<map id="largeRelationshipsDiagram"
name="largeRelationshipsDiagram">
-<area shape="rect" id="node1" href="tables/terminal.html" target="_top"
title="terminal" alt="" coords="293,152,461,363">
-<area shape="rect" id="node2" href="tables/terminal_provider.html"
target="_top" title="terminal_provider" alt="" coords="5,269,249,421">
-<area shape="rect" id="node3" href="tables/withdrawal.html" target="_top"
title="withdrawal" alt="" coords="505,5,719,245">
+<area shape="rect" id="node1" href="tables/terminal.html" target="_top"
title="terminal" alt="" coords="293,211,461,421">
+<area shape="rect" id="node2" href="tables/terminal_provider.html"
target="_top" title="terminal_provider" alt="" coords="5,328,249,509">
+<area shape="rect" id="node3" href="tables/withdrawal.html" target="_top"
title="withdrawal" alt="" coords="505,5,767,421">
</map>
<a name='diagram'><img
id="largeDegreeImg" src="diagrams/summary/relationships.real.large.png"
usemap="#largeRelationshipsDiagram" class="diagram" border="0" align="left"></a>
</div>
diff --git a/schemaspy/nonce2ecash-erd/relationships.js
b/schemaspy/c2ec-erd/relationships.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/relationships.js
rename to schemaspy/c2ec-erd/relationships.js
diff --git a/schemaspy/nonce2ecash-erd/routines.html
b/schemaspy/c2ec-erd/routines.html
similarity index 99%
rename from schemaspy/nonce2ecash-erd/routines.html
rename to schemaspy/c2ec-erd/routines.html
index 9971b1f..fde41fd 100644
--- a/schemaspy/nonce2ecash-erd/routines.html
+++ b/schemaspy/c2ec-erd/routines.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>postgres.public</title>
+ <title>postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
diff --git a/schemaspy/nonce2ecash-erd/routines.js
b/schemaspy/c2ec-erd/routines.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/routines.js
rename to schemaspy/c2ec-erd/routines.js
diff --git a/schemaspy/nonce2ecash-erd/routines/routine.js
b/schemaspy/c2ec-erd/routines/routine.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/routines/routine.js
rename to schemaspy/c2ec-erd/routines/routine.js
diff --git a/schemaspy/nonce2ecash-erd/schemaSpy.css
b/schemaspy/c2ec-erd/schemaSpy.css
similarity index 100%
rename from schemaspy/nonce2ecash-erd/schemaSpy.css
rename to schemaspy/c2ec-erd/schemaSpy.css
diff --git a/schemaspy/nonce2ecash-erd/schemaSpy.js
b/schemaspy/c2ec-erd/schemaSpy.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/schemaSpy.js
rename to schemaspy/c2ec-erd/schemaSpy.js
diff --git a/schemaspy/nonce2ecash-erd/tables/table.js
b/schemaspy/c2ec-erd/tables/table.js
similarity index 100%
rename from schemaspy/nonce2ecash-erd/tables/table.js
rename to schemaspy/c2ec-erd/tables/table.js
diff --git a/schemaspy/nonce2ecash-erd/tables/terminal.html
b/schemaspy/c2ec-erd/tables/terminal.html
similarity index 89%
rename from schemaspy/nonce2ecash-erd/tables/terminal.html
rename to schemaspy/c2ec-erd/tables/terminal.html
index 763dc37..2f91934 100644
--- a/schemaspy/nonce2ecash-erd/tables/terminal.html
+++ b/schemaspy/c2ec-erd/tables/terminal.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>terminal - postgres.public</title>
+ <title>terminal - postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="../favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="../index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="../index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
@@ -74,6 +74,19 @@
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>terminal</h1><p><span id="recordNumber">-1</span>
rows</p><br />
+ <div class="box box-primary">
+ <div class="box-header with-border">
+ <i class="fa fa-file-text-o"></i>
+ <h3 id="Description"
class="box-title">Description</h3>
+ <div class="box-tools pull-right">
+ <button type="button" class="btn btn-box-tool"
data-widget="collapse"><i class="fa fa-minus"></i></button>
+ <button type="button" class="btn btn-box-tool"
data-widget="remove"><i class="fa fa-times"></i></button>
+ </div>
+ </div><!-- /.box-header -->
+ <div class="box-body clearfix">
+ <p>Table containing information about terminals of
providers</p>
+ </div><!-- /.box-body -->
+ </div>
</section>
<!-- Main content -->
<section class="content">
@@ -109,7 +122,7 @@
</thead>
<tbody>
<tr>
- <td class='primaryKey' title='Primary
Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span
id="id">id</span></td>
+ <td class='primaryKey' title='Primary
Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span
id="terminal_id">terminal_id</span></td>
<td>int8</td>
<td>19</td>
<td title=''></td>
@@ -118,7 +131,7 @@
<td>
<table border='0' cellspacing='0'
cellpadding='0'>
<tr>
- <td
title="withdrawal.terminal_id references terminal.id via
withdrawal_terminal_id_fkey"><a href='withdrawal.html'>withdrawal</a><span
class='relatedKey'>.terminal_id</span></td>
+ <td
title="withdrawal.terminal_id references terminal.terminal_id via
withdrawal_terminal_id_fkey"><a href='withdrawal.html'>withdrawal</a><span
class='relatedKey'>.terminal_id</span></td>
<td class="constraint
detail">withdrawal_terminal_id_fkey</td>
<td class="constraint
detail"><span title='Restrict delete: Parent cannot be deleted if children
exist'>R</span></td>
</tr>
@@ -128,13 +141,13 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Uniquely identifies a
terminal</p></td>
</tr>
<tr>
<td><span
id="access_token">access_token</span></td>
<td>bytea</td>
<td>2147483647</td>
- <td title='nullable'>√</td>
+ <td title=''></td>
<td title=''></td>
<td>null</td>
<td>
@@ -145,13 +158,13 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>The access token of the terminal
used for authentication against the c2ec API</p></td>
</tr>
<tr>
<td><span id="active">active</span></td>
<td>bool</td>
<td>1</td>
- <td title='nullable'>√</td>
+ <td title=''></td>
<td title=''></td>
<td>true</td>
<td>
@@ -162,12 +175,12 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Indicates if the terminal is active
or deactivated</p></td>
</tr>
<tr>
- <td><span id="remarks">remarks</span></td>
- <td>varchar</td>
- <td>255</td>
+ <td><span
id="description">description</span></td>
+ <td>text</td>
+ <td>2147483647</td>
<td title='nullable'>√</td>
<td title=''></td>
<td>null</td>
@@ -179,7 +192,7 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Description to help identify the
terminal. This may include the location and an identifier of the
terminal.</p></td>
</tr>
<tr>
<td class='foreignKey' title='Foreign
Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span
id="provider_id">provider_id</span></td>
@@ -195,13 +208,13 @@
<td>
<table border='0' cellspacing='0'
cellpadding='0'>
<tr>
- <td
title="terminal.provider_id references terminal_provider.id via
terminal_provider_id_fkey"><a
href='terminal_provider.html'>terminal_provider</a><span
class='relatedKey'>.id</span></td>
+ <td
title="terminal.provider_id references terminal_provider.provider_terminal_id
via terminal_provider_id_fkey"><a
href='terminal_provider.html'>terminal_provider</a><span
class='relatedKey'>.provider_terminal_id</span></td>
<td class="constraint
detail">terminal_provider_id_fkey</td>
<td class="constraint
detail"><span title='Restrict delete: Parent cannot be deleted if children
exist'>R</span></td>
</tr>
</table>
</td>
- <td></td>
+ <td><p>Indicates the terminal provider to
which the terminal belongs</p></td>
</tr>
</tbody>
</table>
@@ -237,7 +250,7 @@
<td class='primaryKey' title='Primary
Key'><i class='icon ion-key iconkey'></i> terminal_pkey</td>
<td>Primary key</td>
<td><span title='Ascending'>Asc</span></td>
- <td>id</td>
+ <td>terminal_id</td>
</tr>
</tbody>
</table>
@@ -294,8 +307,8 @@
<div class="chart tab-pane active"
id="oneDegreeImg-chart" style="position: relative; overflow-x:auto;">
<map
id="oneDegreeRelationshipsDiagram" name="oneDegreeRelationshipsDiagram">
<area shape="rect" id="node1" href="terminal.html" target="_top"
title="terminal" alt="" coords="293,32,620,248">
-<area shape="rect" id="node2" href="terminal_provider.html" target="_top"
title="terminal_provider" alt="" coords="5,152,249,269">
-<area shape="rect" id="node3" href="withdrawal.html" target="_top"
title="withdrawal" alt="" coords="664,5,877,152">
+<area shape="rect" id="node2" href="terminal_provider.html" target="_top"
title="terminal_provider" alt="" coords="5,152,249,299">
+<area shape="rect" id="node3" href="withdrawal.html" target="_top"
title="withdrawal" alt="" coords="664,5,925,152">
</map>
<a name='diagram'><img
id="oneDegreeImg" src="../diagrams/tables/terminal.1degree.png"
usemap="#oneDegreeRelationshipsDiagram" class="diagram" border="0"
align="left"></a>
</div>
diff --git a/schemaspy/nonce2ecash-erd/tables/terminal_provider.html
b/schemaspy/c2ec-erd/tables/terminal_provider.html
similarity index 81%
rename from schemaspy/nonce2ecash-erd/tables/terminal_provider.html
rename to schemaspy/c2ec-erd/tables/terminal_provider.html
index 56c3495..b5450f1 100644
--- a/schemaspy/nonce2ecash-erd/tables/terminal_provider.html
+++ b/schemaspy/c2ec-erd/tables/terminal_provider.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>terminal_provider - postgres.public</title>
+ <title>terminal_provider - postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="../favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="../index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="../index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
@@ -74,6 +74,19 @@
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>terminal_provider</h1><p><span
id="recordNumber">-1</span> rows</p><br />
+ <div class="box box-primary">
+ <div class="box-header with-border">
+ <i class="fa fa-file-text-o"></i>
+ <h3 id="Description"
class="box-title">Description</h3>
+ <div class="box-tools pull-right">
+ <button type="button" class="btn btn-box-tool"
data-widget="collapse"><i class="fa fa-minus"></i></button>
+ <button type="button" class="btn btn-box-tool"
data-widget="remove"><i class="fa fa-times"></i></button>
+ </div>
+ </div><!-- /.box-header -->
+ <div class="box-body clearfix">
+ <p>Table describing providers of c2ec terminal</p>
+ </div><!-- /.box-body -->
+ </div>
</section>
<!-- Main content -->
<section class="content">
@@ -109,7 +122,7 @@
</thead>
<tbody>
<tr>
- <td class='primaryKey' title='Primary
Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span
id="id">id</span></td>
+ <td class='primaryKey' title='Primary
Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span
id="provider_terminal_id">provider_terminal_id</span></td>
<td>int8</td>
<td>19</td>
<td title=''></td>
@@ -118,7 +131,7 @@
<td>
<table border='0' cellspacing='0'
cellpadding='0'>
<tr>
- <td
title="terminal.provider_id references terminal_provider.id via
terminal_provider_id_fkey"><a href='terminal.html'>terminal</a><span
class='relatedKey'>.provider_id</span></td>
+ <td
title="terminal.provider_id references terminal_provider.provider_terminal_id
via terminal_provider_id_fkey"><a href='terminal.html'>terminal</a><span
class='relatedKey'>.provider_id</span></td>
<td class="constraint
detail">terminal_provider_id_fkey</td>
<td class="constraint
detail"><span title='Restrict delete: Parent cannot be deleted if children
exist'>R</span></td>
</tr>
@@ -128,13 +141,30 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Uniquely identifies a
provider</p></td>
+ </tr>
+ <tr>
+ <td class='indexedColumn'
title='Indexed'><i class='fa fa-sitemap fa-rotate-120' style='padding-right:
5px;'></i><span id="name">name</span></td>
+ <td>text</td>
+ <td>2147483647</td>
+ <td title=''></td>
+ <td title=''></td>
+ <td>null</td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td><p>Name of the provider, used for
selection in transaction proofing</p></td>
</tr>
<tr>
- <td><span id="name">name</span></td>
- <td>varchar</td>
- <td>50</td>
- <td title='nullable'>√</td>
+ <td><span
id="backend_base_url">backend_base_url</span></td>
+ <td>text</td>
+ <td>2147483647</td>
+ <td title=''></td>
<td title=''></td>
<td>null</td>
<td>
@@ -145,13 +175,13 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>URL of the provider backend for
transaction proofing</p></td>
</tr>
<tr>
- <td><span id="remarks">remarks</span></td>
- <td>varchar</td>
- <td>255</td>
- <td title='nullable'>√</td>
+ <td><span
id="backend_credentials">backend_credentials</span></td>
+ <td>text</td>
+ <td>2147483647</td>
+ <td title=''></td>
<td title=''></td>
<td>null</td>
<td>
@@ -162,7 +192,7 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Credentials used to access the
backend of the provider</p></td>
</tr>
</tbody>
</table>
@@ -198,7 +228,13 @@
<td class='primaryKey' title='Primary
Key'><i class='icon ion-key iconkey'></i> terminal_provider_pkey</td>
<td>Primary key</td>
<td><span title='Ascending'>Asc</span></td>
- <td>id</td>
+ <td>provider_terminal_id</td>
+ </tr>
+ <tr>
+ <td class='uniqueKey' title='Unique
Key'><i class='icon ion-key iconkey'></i> terminal_provider_name_key</td>
+ <td>Must be unique</td>
+ <td><span title='Ascending'>Asc</span></td>
+ <td>name</td>
</tr>
</tbody>
</table>
@@ -223,16 +259,16 @@
<div class="tab-content no-padding">
<div class="chart tab-pane active"
id="oneDegreeImg-chart" style="position: relative; overflow-x:auto;">
<map
id="oneDegreeRelationshipsDiagram" name="oneDegreeRelationshipsDiagram">
-<area shape="rect" id="node1" href="terminal.html" target="_top"
title="terminal" alt="" coords="368,5,536,152">
-<area shape="rect" id="node2" href="terminal_provider.html" target="_top"
title="terminal_provider" alt="" coords="5,32,324,189">
+<area shape="rect" id="node1" href="terminal.html" target="_top"
title="terminal" alt="" coords="431,5,599,152">
+<area shape="rect" id="node2" href="terminal_provider.html" target="_top"
title="terminal_provider" alt="" coords="5,32,387,219">
</map>
<a name='diagram'><img
id="oneDegreeImg" src="../diagrams/tables/terminal_provider.1degree.png"
usemap="#oneDegreeRelationshipsDiagram" class="diagram" border="0"
align="left"></a>
</div>
<div class="chart tab-pane "
id="twodegreesDegreeImg-chart" style="position: relative; overflow-x:auto;">
<map
id="twoDegreesRelationshipsDiagram" name="twoDegreesRelationshipsDiagram">
-<area shape="rect" id="node1" href="terminal.html" target="_top"
title="terminal" alt="" coords="368,5,536,152">
-<area shape="rect" id="node2" href="terminal_provider.html" target="_top"
title="terminal_provider" alt="" coords="5,32,324,189">
-<area shape="rect" id="node3" href="withdrawal.html" target="_top"
title="withdrawal" alt="" coords="580,8,764,96">
+<area shape="rect" id="node1" href="terminal.html" target="_top"
title="terminal" alt="" coords="431,5,599,152">
+<area shape="rect" id="node2" href="terminal_provider.html" target="_top"
title="terminal_provider" alt="" coords="5,32,387,219">
+<area shape="rect" id="node3" href="withdrawal.html" target="_top"
title="withdrawal" alt="" coords="643,8,827,96">
</map>
<a name='diagram'><img
id="twodegreesDegreeImg"
src="../diagrams/tables/terminal_provider.2degrees.png"
usemap="#twoDegreesRelationshipsDiagram" class="diagram" border="0"
align="left"></a>
</div>
diff --git a/schemaspy/nonce2ecash-erd/tables/withdrawal.html
b/schemaspy/c2ec-erd/tables/withdrawal.html
similarity index 72%
rename from schemaspy/nonce2ecash-erd/tables/withdrawal.html
rename to schemaspy/c2ec-erd/tables/withdrawal.html
index d69c370..8a244d9 100644
--- a/schemaspy/nonce2ecash-erd/tables/withdrawal.html
+++ b/schemaspy/c2ec-erd/tables/withdrawal.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>withdrawal - postgres.public</title>
+ <title>withdrawal - postgres.c2ec</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1,
user-scalable=no" name="viewport">
<link rel="icon" type="image/png" sizes="16x16" href="../favicon.png">
@@ -46,7 +46,7 @@
<nav class="navbar navbar-static-top">
<div class="container">
<div class="navbar-header">
- <a href="../index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.public</span>
+ <a href="../index.html"
class="navbar-brand"><b>postgres</b></a><span class="navbar-brand"
style="padding-left: 0">.c2ec</span>
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa
fa-bars"></i></button>
</div>
@@ -74,6 +74,19 @@
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>withdrawal</h1><p><span id="recordNumber">-1</span>
rows</p><br />
+ <div class="box box-primary">
+ <div class="box-header with-border">
+ <i class="fa fa-file-text-o"></i>
+ <h3 id="Description"
class="box-title">Description</h3>
+ <div class="box-tools pull-right">
+ <button type="button" class="btn btn-box-tool"
data-widget="collapse"><i class="fa fa-minus"></i></button>
+ <button type="button" class="btn btn-box-tool"
data-widget="remove"><i class="fa fa-times"></i></button>
+ </div>
+ </div><!-- /.box-header -->
+ <div class="box-body clearfix">
+ <p>Table representing withdrawal processes
initiated by terminals</p>
+ </div><!-- /.box-body -->
+ </div>
</section>
<!-- Main content -->
<section class="content">
@@ -110,6 +123,23 @@
<tbody>
<tr>
<td class='primaryKey' title='Primary
Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span
id="withdrawal_id">withdrawal_id</span></td>
+ <td>int8</td>
+ <td>19</td>
+ <td title=''></td>
+ <td title='Automatically updated by the
database'>√</td>
+ <td>null</td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td><p>The withdrawal id is used a
technical id used by the wire gateway to sequentially select new
transactions</p></td>
+ </tr>
+ <tr>
+ <td><span id="wopid">wopid</span></td>
<td>bytea</td>
<td>2147483647</td>
<td title=''></td>
@@ -123,13 +153,13 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>The wopid (withdrawal operation id)
is a nonce generated by the terminal requesting a withdrawal. The wopid
identifies a specific withdrawal spawning all involved systems.</p></td>
</tr>
<tr>
<td><span
id="reserve_pub_key">reserve_pub_key</span></td>
<td>bytea</td>
<td>2147483647</td>
- <td title='nullable'>√</td>
+ <td title=''></td>
<td title=''></td>
<td>null</td>
<td>
@@ -140,13 +170,13 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Reserve public key for the reserve
which will hold the withdrawal amount after completion</p></td>
</tr>
<tr>
<td><span
id="registration_ts">registration_ts</span></td>
<td>int8</td>
<td>19</td>
- <td title='nullable'>√</td>
+ <td title=''></td>
<td title=''></td>
<td>null</td>
<td>
@@ -157,12 +187,29 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Timestamp of when the withdrawal
request was registered</p></td>
</tr>
<tr>
<td><span id="amount">amount</span></td>
- <td>varchar</td>
- <td>50</td>
+
<td>"c2ec"."taler_amount_currency"</td>
+ <td>2147483647</td>
+ <td title=''></td>
+ <td title=''></td>
+ <td>null</td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td><p>Effective amount to be put into the
reserve after completion</p></td>
+ </tr>
+ <tr>
+ <td><span id="fees">fees</span></td>
+
<td>"c2ec"."taler_amount_currency"</td>
+ <td>2147483647</td>
<td title='nullable'>√</td>
<td title=''></td>
<td>null</td>
@@ -174,15 +221,15 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Fees associated with the
withdrawal, including exchange and provider fees</p></td>
</tr>
<tr>
<td><span
id="withdrawal_status">withdrawal_status</span></td>
- <td>withdrawal_operation_status</td>
+
<td>"c2ec"."withdrawal_operation_status"</td>
<td>2147483647</td>
<td title=''></td>
<td title=''></td>
- <td>null</td>
+
<td>'pending'::c2ec.withdrawal_operation_status</td>
<td>
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
@@ -191,7 +238,7 @@
<table border='0' cellspacing='0'
cellpadding='0'>
</table>
</td>
- <td></td>
+ <td><p>Status of the withdrawal
process</p></td>
</tr>
<tr>
<td class='foreignKey' title='Foreign
Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span
id="terminal_id">terminal_id</span></td>
@@ -207,13 +254,81 @@
<td>
<table border='0' cellspacing='0'
cellpadding='0'>
<tr>
- <td
title="withdrawal.terminal_id references terminal.id via
withdrawal_terminal_id_fkey"><a href='terminal.html'>terminal</a><span
class='relatedKey'>.id</span></td>
+ <td
title="withdrawal.terminal_id references terminal.terminal_id via
withdrawal_terminal_id_fkey"><a href='terminal.html'>terminal</a><span
class='relatedKey'>.terminal_id</span></td>
<td class="constraint
detail">withdrawal_terminal_id_fkey</td>
<td class="constraint
detail"><span title='Restrict delete: Parent cannot be deleted if children
exist'>R</span></td>
</tr>
</table>
</td>
- <td></td>
+ <td><p>ID of the terminal that initiated
the withdrawal</p></td>
+ </tr>
+ <tr>
+ <td><span
id="provider_transaction_id">provider_transaction_id</span></td>
+ <td>text</td>
+ <td>2147483647</td>
+ <td title='nullable'>√</td>
+ <td title=''></td>
+ <td>null</td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td><p>Transaction identifier supplied by
the provider for backend request</p></td>
+ </tr>
+ <tr>
+ <td><span
id="last_retry_ts">last_retry_ts</span></td>
+ <td>int8</td>
+ <td>19</td>
+ <td title='nullable'>√</td>
+ <td title=''></td>
+ <td>null</td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td><p>Timestamp of the last retry
attempt</p></td>
+ </tr>
+ <tr>
+ <td><span
id="retry_counter">retry_counter</span></td>
+ <td>int4</td>
+ <td>10</td>
+ <td title=''></td>
+ <td title=''></td>
+ <td>0</td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td><p>Number of retry attempts</p></td>
+ </tr>
+ <tr>
+ <td><span
id="completion_proof">completion_proof</span></td>
+ <td>bytea</td>
+ <td>2147483647</td>
+ <td title='nullable'>√</td>
+ <td title=''></td>
+ <td>null</td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td>
+ <table border='0' cellspacing='0'
cellpadding='0'>
+ </table>
+ </td>
+ <td><p>Proof of transaction upon final
completion delivered by the providers system</p></td>
</tr>
</tbody>
</table>
@@ -279,14 +394,14 @@
</tr>
</thead>
<tbody>
- <tr>
- <td>withdrawal_withdrawal_id_check</td>
- <td>((length(withdrawal_id) = 32))</td>
- </tr>
<tr>
<td>withdrawal_reserve_pub_key_check</td>
<td>((length(reserve_pub_key) =
32))</td>
</tr>
+ <tr>
+ <td>withdrawal_wopid_check</td>
+ <td>((length(wopid) = 32))</td>
+ </tr>
</tbody>
</table>
</div>
@@ -310,16 +425,16 @@
<div class="tab-content no-padding">
<div class="chart tab-pane active"
id="oneDegreeImg-chart" style="position: relative; overflow-x:auto;">
<map
id="oneDegreeRelationshipsDiagram" name="oneDegreeRelationshipsDiagram">
-<area shape="rect" id="node1" href="withdrawal.html" target="_top"
title="withdrawal" alt="" coords="217,5,757,251">
-<area shape="rect" id="node2" href="terminal.html" target="_top"
title="terminal" alt="" coords="5,155,173,301">
+<area shape="rect" id="node1" href="withdrawal.html" target="_top"
title="withdrawal" alt="" coords="217,5,872,427">
+<area shape="rect" id="node2" href="terminal.html" target="_top"
title="terminal" alt="" coords="5,213,173,360">
</map>
<a name='diagram'><img
id="oneDegreeImg" src="../diagrams/tables/withdrawal.1degree.png"
usemap="#oneDegreeRelationshipsDiagram" class="diagram" border="0"
align="left"></a>
</div>
<div class="chart tab-pane "
id="twodegreesDegreeImg-chart" style="position: relative; overflow-x:auto;">
<map
id="twoDegreesRelationshipsDiagram" name="twoDegreesRelationshipsDiagram">
-<area shape="rect" id="node1" href="terminal.html" target="_top"
title="terminal" alt="" coords="293,155,461,301">
-<area shape="rect" id="node2" href="terminal_provider.html" target="_top"
title="terminal_provider" alt="" coords="5,187,249,275">
-<area shape="rect" id="node3" href="withdrawal.html" target="_top"
title="withdrawal" alt="" coords="505,5,1045,251">
+<area shape="rect" id="node1" href="terminal.html" target="_top"
title="terminal" alt="" coords="293,213,461,360">
+<area shape="rect" id="node2" href="terminal_provider.html" target="_top"
title="terminal_provider" alt="" coords="5,245,249,333">
+<area shape="rect" id="node3" href="withdrawal.html" target="_top"
title="withdrawal" alt="" coords="505,5,1160,427">
</map>
<a name='diagram'><img
id="twodegreesDegreeImg" src="../diagrams/tables/withdrawal.2degrees.png"
usemap="#twoDegreesRelationshipsDiagram" class="diagram" border="0"
align="left"></a>
</div>
diff --git
a/schemaspy/nonce2ecash-erd/diagrams/tables/terminal_provider.1degree.dot
b/schemaspy/nonce2ecash-erd/diagrams/tables/terminal_provider.1degree.dot
deleted file mode 100644
index 0e2811d..0000000
--- a/schemaspy/nonce2ecash-erd/diagrams/tables/terminal_provider.1degree.dot
+++ /dev/null
@@ -1,30 +0,0 @@
-digraph "oneDegreeRelationshipsDiagram" {
- graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by
SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46"
fontname="Helvetica" fontsize="11" ration="compress" ]; node [
fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [
arrowsize="0.8" ];
- "terminal":"provider_id":w -> "terminal_provider":"id.type":e
[arrowhead=none dir=back arrowtail=crowodot];
- "terminal" [
- label=<
- <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
- <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57"
HEIGHT="16"><B>terminal</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">id</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89"
HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR>
- <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 1</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
- </TABLE>>
- URL="terminal.html"
- target="_top"
- tooltip="terminal"
- ];
- "terminal_provider" [
- label=<
- <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff">
- <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0"
CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16"><B>terminal_provider</B></TD><TD
ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR>
- <TR><TD PORT="id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD
ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">id</TD></TR></TABLE></TD><TD PORT="id.type"
ALIGN="LEFT">int8[19]</TD></TR>
- <TR><TD PORT="name" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">name</TD></TR></TABLE></TD><TD PORT="name.type"
ALIGN="LEFT">varchar[50]</TD></TR>
- <TR><TD PORT="remarks" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0"
CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE"
WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120"
HEIGHT="16">remarks</TD></TR></TABLE></TD><TD PORT="remarks.type"
ALIGN="LEFT">varchar[255]</TD></TR>
- <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">< 0</TD><TD ALIGN="RIGHT"
BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 ></TD></TR>
- </TABLE>>
- URL="terminal_provider.html"
- target="_top"
- tooltip="terminal_provider"
- ];
-}
diff --git a/schemaspy/nonce2ecash-erd/postgres.public.xml
b/schemaspy/nonce2ecash-erd/postgres.public.xml
deleted file mode 100644
index b62a97a..0000000
--- a/schemaspy/nonce2ecash-erd/postgres.public.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><database name="postgres"
schema="public" type="PostgreSQL - 15.2 (Debian 15.2-1.pgdg110+1)">
- <tables>
- <table name="terminal" remarks="" schema="public" type="TABLE">
- <column autoUpdated="true" defaultValue="null" digits="0" id="0"
name="id" nullable="false" remarks="" size="19" type="int8" typeCode="-5">
- <child column="terminal_id"
foreignKey="withdrawal_terminal_id_fkey" implied="false"
onDeleteCascade="false" schema="public" table="withdrawal"/>
- </column>
- <column autoUpdated="false" defaultValue="null" digits="0" id="1"
name="access_token" nullable="true" remarks="" size="2147483647" type="bytea"
typeCode="-2"/>
- <column autoUpdated="false" defaultValue="true" digits="0" id="2"
name="active" nullable="true" remarks="" size="1" type="bool" typeCode="-7"/>
- <column autoUpdated="false" defaultValue="null" digits="0" id="3"
name="remarks" nullable="true" remarks="" size="255" type="varchar"
typeCode="12"/>
- <column autoUpdated="false" defaultValue="null" digits="0" id="4"
name="provider_id" nullable="false" remarks="" size="19" type="int8"
typeCode="-5">
- <parent column="id" foreignKey="terminal_provider_id_fkey"
implied="false" onDeleteCascade="false" schema="public"
table="terminal_provider"/>
- </column>
- <primaryKey column="id" sequenceNumberInPK="1"/>
- <index name="terminal_pkey" unique="true">
- <column ascending="true" name="id"/>
- </index>
- <checkConstraint constraint="((length(access_token) = 32))"
name="terminal_access_token_check"/>
- </table>
- <table name="terminal_provider" remarks="" schema="public" type="TABLE">
- <column autoUpdated="true" defaultValue="null" digits="0" id="0"
name="id" nullable="false" remarks="" size="19" type="int8" typeCode="-5">
- <child column="provider_id" foreignKey="terminal_provider_id_fkey"
implied="false" onDeleteCascade="false" schema="public" table="terminal"/>
- </column>
- <column autoUpdated="false" defaultValue="null" digits="0" id="1"
name="name" nullable="true" remarks="" size="50" type="varchar" typeCode="12"/>
- <column autoUpdated="false" defaultValue="null" digits="0" id="2"
name="remarks" nullable="true" remarks="" size="255" type="varchar"
typeCode="12"/>
- <primaryKey column="id" sequenceNumberInPK="1"/>
- <index name="terminal_provider_pkey" unique="true">
- <column ascending="true" name="id"/>
- </index>
- </table>
- <table name="withdrawal" remarks="" schema="public" type="TABLE">
- <column autoUpdated="false" defaultValue="null" digits="0" id="0"
name="withdrawal_id" nullable="false" remarks="" size="2147483647" type="bytea"
typeCode="-2"/>
- <column autoUpdated="false" defaultValue="null" digits="0" id="1"
name="reserve_pub_key" nullable="true" remarks="" size="2147483647"
type="bytea" typeCode="-2"/>
- <column autoUpdated="false" defaultValue="null" digits="0" id="2"
name="registration_ts" nullable="true" remarks="" size="19" type="int8"
typeCode="-5"/>
- <column autoUpdated="false" defaultValue="null" digits="0" id="3"
name="amount" nullable="true" remarks="" size="50" type="varchar"
typeCode="12"/>
- <column autoUpdated="false" defaultValue="null" digits="0" id="4"
name="withdrawal_status" nullable="false" remarks="" size="2147483647"
type="withdrawal_operation_status" typeCode="12"/>
- <column autoUpdated="false" defaultValue="null" digits="0" id="5"
name="terminal_id" nullable="false" remarks="" size="19" type="int8"
typeCode="-5">
- <parent column="id" foreignKey="withdrawal_terminal_id_fkey"
implied="false" onDeleteCascade="false" schema="public" table="terminal"/>
- </column>
- <primaryKey column="withdrawal_id" sequenceNumberInPK="1"/>
- <index name="withdrawal_pkey" unique="true">
- <column ascending="true" name="withdrawal_id"/>
- </index>
- <checkConstraint constraint="((length(reserve_pub_key) = 32))"
name="withdrawal_reserve_pub_key_check"/>
- <checkConstraint constraint="((length(withdrawal_id) = 32))"
name="withdrawal_withdrawal_id_check"/>
- </table>
- </tables>
-</database>
diff --git a/specs/withdrawal-op-state-transition.plantuml
b/specs/withdrawal-op-state-transition.plantuml
new file mode 100644
index 0000000..5d1375c
--- /dev/null
+++ b/specs/withdrawal-op-state-transition.plantuml
@@ -0,0 +1,10 @@
+@startuml
+
+[*] --> Pending
+Pending --> Selected : C2ECWithdrawalRegistration
+Selected --> Confirmed : Attestation successful
+Selected --> Aborted : Attestation not successful
+Confirmed --> [*]
+Aborted --> [*]
+
+@enduml
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-cashless2ecash] branch master updated: docs: improve documentation,
gnunet <=