Portfolios API (2.0.0)

Download OpenAPI specification:

Public API for managing DVPs. Public routes are GET /, GET /openapi.json, GET /health, and GET /registry. Protected routes are authorized by a dedicated Lambda authorizer that verifies the Auth API JWT access token locally and validates its scope claim. GET /portfolios, GET /portfolios/{portfolio-id}, and GET /orders require portfolios:#read. GET /portfolios/{portfolio-id}/price, GET /portfolios/{portfolio-id}/metadata, and GET /portfolios/{portfolio-id}/vaults/cardano/orders require portfolios:{portfolio-id}:read. GET /portfolios/{portfolio-id}/vaults/ib requires portfolios:{portfolio-id}:manage. POST /portfolios/{portfolio-id}/metadata and POST /portfolios/{portfolio-id}/vaults/cardano/orders require portfolios:{portfolio-id}:write. Portfolio management routes require portfolios:#manage. GET /assets and GET /assets/{ticker} require assets:#read. Asset registry mutation routes require assets:#manage.

System

Get the HTML API documentation

Responses

Get API health

Responses

Response samples

Content type
application/json
{
  • "ok": true
}

Get the OpenAPI specification

Responses

Response samples

Content type
application/json
{ }

Get registry metadata

Responses

Response samples

Content type
application/json
{
  • "address": "string",
  • "admin": "string"
}

Portfolios

List portfolios

Authorizations:
AuthToken

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a portfolio

Authorizations:
AuthToken
Request Body schema: application/json
required
name
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": 0
}

Get a portfolio

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer
Request Body schema: application/json
optional
secretArn
required
string

AWS Secrets Manager ARN containing credentials for this IB vault only.

Responses

Request samples

Content type
application/json
{
  • "secretArn": "string"
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "admin": {
    },
  • "status": "initializing",
  • "vaults": [
    ],
  • "cardano": {
    },
  • "displayName": "string",
  • "ticker": "string",
  • "teaser": "string",
  • "description": "string",
  • "accentColor": "string",
  • "logoUrl": "string",
  • "totalValueUsd": 0,
  • "change24hUsd": 0,
  • "change24hPct": 0,
  • "updatedAt": "string",
  • "primaryVaultAddress": "string",
  • "totalSupply": "string",
  • "tokenPriceUsd": 0,
  • "tokenPrice": {
    },
  • "assets": [
    ]
}

Delete a portfolio

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer

Responses

Response samples

Content type
application/json
{
  • "executionArn": "string"
}

Get live portfolio price

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer

Responses

Response samples

Content type
application/json
{
  • "portfolioId": 0,
  • "top": "string",
  • "bottom": "string",
  • "timestamp": "string"
}

Get cached portfolio metadata

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer

Responses

Response samples

Content type
application/json
{
  • "portfolioId": 0,
  • "name": "string",
  • "ticker": "string",
  • "logo": "string",
  • "url": "string",
  • "decimals": 0,
  • "description": "string"
}

Update portfolio metadata

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer
Request Body schema: application/json
required
non-empty
name
string non-empty
ticker
string non-empty
logo
string
url
string
decimals
integer >= 0
description
string non-empty

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "ticker": "string",
  • "logo": "string",
  • "url": "string",
  • "decimals": 0,
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "executionArn": "string"
}

Trigger Cardano portfolio initialization

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer

Responses

Response samples

Content type
application/json
{
  • "started": false,
  • "reason": "already_initialized"
}

Create a portfolio vault

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer
venue
required
string
Enum: "Cardano" "IB"

Responses

Response samples

Content type
application/json
{
  • "executionArn": "string"
}

Delete a portfolio vault

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer
venue
required
string
Enum: "Cardano" "IB"

Responses

Response samples

Content type
application/json
{
  • "executionArn": "string"
}

Get IB vault value

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer

Responses

Response samples

Content type
application/json
{
  • "portfolioId": 0,
  • "valueUsd": 0
}

Update an IB vault value

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer
Request Body schema: application/json
required
One of
_tag
required
any
Value: "Create"
action
required
string
Enum: "RefreshValue" "AddValue" "RemoveValue"
object

USD delta amount. Required for AddValue and RemoveValue.

walletAddress
string

Required for AddValue when participation tokens are minted.

changeAddress
string

Required for RemoveValue when participation tokens are burned.

utxos
Array of strings

CBOR hex encoded full Cardano UTxOs required for RemoveValue burn transactions.

Responses

Request samples

Content type
application/json
Example
{
  • "_tag": "Create",
  • "action": "RefreshValue",
  • "amount": {
    },
  • "walletAddress": "string",
  • "changeAddress": "string",
  • "utxos": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "Created",
  • "transactionId": "string",
  • "tx": "string",
  • "generatedTx": "string",
  • "portfolioId": 0,
  • "txHash": "string",
  • "tokenDelta": "string",
  • "valueMicroUsd": "string",
  • "valueBottom": "string",
  • "valueTop": "string"
}

List Cardano vault deposit orders

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer

Responses

Response samples

Content type
application/json
{
  • "orders": [
    ]
}

Create a Cardano vault deposit order

Authorizations:
AuthToken
path Parameters
portfolio-id
required
integer
Request Body schema: application/json
required
One of
_tag
required
any
Value: "Create"
utxos
required
Array of strings non-empty
changeAddress
required
string
amount
required
string

CBOR hex encoded Cardano Value. This is the net deposit amount; the API adds required min lovelace to the order UTxO.

Responses

Request samples

Content type
application/json
Example
{
  • "_tag": "Create",
  • "utxos": [
    ],
  • "changeAddress": "string",
  • "amount": "string"
}

Response samples

Content type
application/json
{
  • "network": "Cardano",
  • "orderId": "string",
  • "orderRef": "string",
  • "status": "Created",
  • "tx": "string",
  • "txHash": "string",
  • "vaultAddress": "string",
  • "orderAssetClass": "string"
}

Orders

List orders

Authorizations:
AuthToken

Responses

Response samples

Content type
application/json
{
  • "orders": [
    ]
}

Assets

Register an asset on-chain

Authorizations:
AuthToken
path Parameters
ticker
required
string non-empty

Responses

Response samples

Content type
application/json
{
  • "executionArn": "string"
}

Deregister an asset on-chain

Authorizations:
AuthToken
path Parameters
ticker
required
string non-empty

Responses

Response samples

Content type
application/json
{
  • "executionArn": "string"
}

Sync an asset price on-chain

Authorizations:
AuthToken
path Parameters
ticker
required
string non-empty

Responses

Response samples

Content type
application/json
{
  • "executionArn": "string"
}

List asset registry state

Authorizations:
AuthToken

Responses

Response samples

Content type
application/json
{
  • "assets": [
    ]
}

Get asset registry state

Authorizations:
AuthToken
path Parameters
ticker
required
string non-empty

Responses

Response samples

Content type
application/json
{
  • "currentOnChainPrice": 0,
  • "registered": true,
  • "symbol": "string",
  • "risk": "Low",
  • "description": "string"
}