Skip to main content

DCC API Overview

DCC middleware consists of two API categories:

  • Bank API: endpoints provided by the DCC middleware for you to trigger an action.
  • Callback API: endpoints outgoing from DCC middleware for callbacks events and reporting.

Authentication

Authentication between DCC middleware and a banking system relies on TLS inter-network, or 2-way TLS if hosted by a third party provider. TBD: 2-way TLS settings need to be optionally configurable in DCCS middleware.

As part of DCC middleware setup, certificates must be shared between DCC middleware and bank to include in respective Keystore and optionally Truststore configurations.

General Rules

Data Types

Unless otherwise specified, the timestamp fields are ISO_OFFSET_DATE_TIME format. The timezone offset is typically UTC with a "Z" suffix.

Numbers that contain an "amount" or contain decimal value are generally returned as a JSON string field instead of a JSON number. Integer-only values are returned as JSON number fields.

Client Library

We do not maintain an official client library given the different technology stacks that will be integrating with DCC middleware. However, DCC middleware provides an Open API configuration accessible through your DCC middleware instance that can be used to auto generate a client library in the language of your choice.

APIs

Bank API

The Bank API is collectively the endpoints provided by the DCC middleware that allow you to initialize required actions as a member of the USDF Consortium. This includes authorizing the USDF smart contract, registering Provenance Blockchain addresses that have passed the Consortium bank’s AML/KYC processes, minting USDF, burning USDF, and additional reporting endpoints.

Governance API

The Governance API consists of endpoints that allow you get smart contract details and permission your key pair to interact with USDF.

Registration API

The Registration API allows you to tag a Provenance Blockchain account as having passed your AML/KYC process as a member bank. It also allows you to remove the tag where fraud or regulatory/compliance action where needed to lock down or prevent a Provenance Blockchain account from further interacting with USDF.

USDF API

Once you are a member of the USDF Consortium, you can use the USDF API to mint, burn and transfer USDF to registered accountholders of the Consortium bank.

Reporting API

Although more robust aggregation and reporting functionality is being built outside of DCC, the middleware provides a Reporting API proxy to the Provenance Blockchain to query for hash gas balance for your system account, as well as initialize a Provenance Blockchain account balance report for your accountholders, retrievable through the Callback API. We are collecting feedback for any additional queries that banks would find useful for integration and reporting.

Callback API

The Callback API is collectively the endpoints that you need to make available for the DCC middleware to make callback requests to. This includes callbacks triggered from events, as well as reporting persistance.

Event API

The Event API is endpoint requests providing you with updates caused by asynchronous Provenance Blockchain actions. This includes when a mint or burn request initialized by you is complete, as well as when a transfer from an accountholder is executed for redemption.

Persistence API

The Persistence API is endpoint requests providing you persistable reporting results. This includes providing raw low-level USDF movement transaction history data, completion of balance reporting triggered by the Reporting API, and alerting of important events such as smart contract migrations.

Data Model

The following SQL data model backs the DCC middleware. The service is designed and tested to work with a PostgreSQL database.

Data Model Schema

The coin_mint, coin_redemption, coin_burn, coin_transfer and marker_transfer tables inherit the tx_request table. Each tx_request-based table is a separate asynchronous Provenance Blockchain TX submitted for each action the record represents.

You do not need to have an in-depth understanding of the Data Model to be effective integrating with DCC middleware. It can provide some context for the integration and API references, as well as eventual troubleshooting.