Spydra Docs
For Developers
Spydra Platform
Spydra Platform
  • GETTING STARTED
    • Introduction
    • Why Spydra?
    • Blockchain fundamentals
      • Why Blockchain?
      • Private Blockchain
      • Public Chain
    • 🎧Getting started with a Private Network
      • Creating an account
      • Creating an organization
      • Creating a Network
      • Apps
    • 🔊Getting started with a Token Store on Public Chain
      • Token store
      • Customise token store front
      • List a real world asset and issue tokens
      • Manage token lifecycle
    • Intro to Hyperledger Fabric
  • Products Overview
    • 🎧Private Network
      • Organizations
        • Users and Organizations
        • Organisation Hosting - Spydra Hosted and BYOC
        • Organization Statuses
        • Organization Roles & Permissions
        • Organization Dashboard
        • Organization Entities
      • Networks
        • Network Statuses
        • Network Roles & Permissions
        • Network Configurations
        • Mandatory Card Addition
        • Nodes: Peer, Orderer & CA
        • Network Hosting Type
        • Network Dashboard
        • Network Operations
        • Nodes
      • Channels
      • Apps
        • Pre-Configured Apps
        • Custom Apps
      • Asset Tokenization
        • Use cases
        • Asset types
        • References
        • Asset Owners
        • Permissions
      • Tokens & Vault
      • Listeners
        • Network Listeners
        • App Listeners
        • Token Listeners
      • Workflow Builder
      • Oracles
      • GraphQL
      • Block Explorer
      • IPFS
      • Fabric Debug Plugin
    • 🔊Public Chain
      • Token Store
      • Tokenize Real World Assets
      • Tokenomics: Token & Token Sale
      • Trade & Payout
  • How to
    • 🎧Private Network
      • Account
        • Create an Account
        • Edit Profile details
        • Update email & Password
        • Forgot password
        • Google OAuth Signup - Update Email & Password
        • Deactivating or deleting your account?
      • Organizations
        • Create an Organization
        • Create & Manage BYOC Hosting
        • Invite members to an organisation
        • Edit Organization details
        • Manage Org members
        • Leave an Organization
        • Update Organization member roles
        • Pay Organisation Invoice
        • Update Billing Address
        • View Invoices
        • Organization Dashboard
        • Delete an Organisation
      • Networks
        • Create a Network
        • Advance Settings: Key Vault Store
        • View and edit Network details
          • Update Permissions for Network Members
          • Update Network Configuration
          • Update Key Vault
          • Manage API Keys
          • Delete a network
        • Inviting an organisation to a Network
        • Network Roles & Permissions
        • Joining a Network
        • Network Dashboard
      • Apps
        • Explore Apps
        • Deploy App
          • Deploying Asset Tokenization App
        • Manage Apps
        • Application Dashboard
      • Channels
        • Creating a Channel
        • Create a Consensus Policy
        • Update Channel
        • Channel Members
        • Delete channel
      • Nodes
        • Create Node
        • Node Dashboard
        • Delete Node
      • Pre-configured Apps
        • Deploy Asset Tokenization App
        • Asset Data
      • Custom Apps
        • Deploy Custom Chaincode
        • Chaincode as external service
        • Supported File Formats - ZIP format
        • Building in Binary format
          • Golang - Binary Format
          • Java Jar files
        • Chaincode Logs
      • Workflow
        • Triggers
        • Condition
        • Read
        • Actions
        • End
        • Variables & Identifiers
        • Calculations & Formulas
      • Oracles
        • Create an Oracle
        • Oracle with Asset tokenisation
        • Oracle with Custom Chaincode
      • Listeners
        • Create a Listener
        • Manage Listeners
    • 🔊Public Chain
      • Account
        • Create an Account
        • Edit Profile details
        • Update email & Password
        • Forgot password
        • Google OAuth Signup - Update Email & Password
        • Deactivating or deleting your account?
      • Token Store
        • Create a Token Store
        • Design Store Front
        • Custom Domain Hosting
        • Google Analytics Integration
        • Create & Manage Store Users
          • Store User KYC
        • Accreditation Management
        • Store Payments
        • Token Store Customers
      • Tokenise a Real World Asset
        • Real Estate
        • Other Asset Categories
      • Create a token
        • Define your token
        • Investor & Buyback Settings
        • Configure token returns & payouts
        • Create token sale
      • Additional Configurations
        • Create a Document Workflow
      • Publish Asset
      • Tokenise on TestNet
        • Polygon Amoy
      • Manage Token lifecycle
        • Returns & Payouts
          • Initiate an equity payout
          • Authorise Debt Payouts
          • View all payouts
        • View token investors
        • View token transactions
        • View signed documents
        • View/ Create a token sale
        • Post Token Updates
        • Update Price
        • Buyback Requests
  • Billing & Pricing
    • Pricing
    • Billing
      • Opt-in Billing
      • Opt-out Billing
    • Adding a Card & Autopay
    • Invoice Payments
    • Billing forecast
    • Unpaid Invoices
    • Credits
  • Developers
    • API Reference
      • Asset Tokenization
        • REST API
        • Testing REST API
        • GraphQL
          • Quickstart
          • Simple queries
          • Nested object queries
          • Complex queries
          • Aggregate queries
          • Operators
          • Built-in attributes
          • Pagination
      • Custom Chaincode
        • REST API
        • Testing REST API
        • GraphQL
          • Quickstart
          • Simple queries
          • Complex queries
          • Operators
          • Pagination
      • Token Store (Public Chain)
        • Token Issuer
        • Investor
      • IPFS
    • Developer Tools
      • Monitoring [Coming Soon]
    • API Key
  • Support
    • FAQs
    • My account is banned [D]
    • Why is it recommended to have an Odd number of Orderer nodes on a Network?
    • Support
  • Others
    • Glossary
  • Policies
    • Terms & Conditions
    • Privacy Policies
    • Open Spydra
Powered by GitBook
On this page

Was this helpful?

  1. Developers
  2. API Reference
  3. Token Store (Public Chain)

Token Issuer

PreviousToken Store (Public Chain)NextInvestor

Last updated 1 month ago

Was this helpful?

Tokenise Real World Assets

Use these APIs to tokenise an asset, and view/ manage tokenised assets.

Steps before tokenising an asset:

How to Connect Your Wallet
import React, { useState } from "react";
import { ethers } from "ethers";

const MetaMaskConnect = () => {
  const [account, setAccount] = useState(null);
  const [balance, setBalance] = useState(null);
  const [error, setError] = useState(null);

  const connectWallet = async () => {
    if (window.ethereum) {
      try {
        const provider = new ethers.BrowserProvider(window.ethereum);
        const accounts = await provider.send("eth_requestAccounts", []);
        setAccount(accounts[0]);

        const signer = await provider.getSigner();
        const balance = await provider.getBalance(signer.address);
        setBalance(ethers.formatEther(balance));
      } catch (err) {
        setError("Failed to connect to MetaMask");
      }
    } else {
      setError("MetaMask is not installed");
    }
  };

  return (
    <div className="p-4 text-center">
      <h1 className="text-2xl font-bold">MetaMask Wallet Connect</h1>
      <button
        onClick={connectWallet}
        className="mt-4 px-4 py-2 bg-blue-500 text-white rounded"
      >
        Connect Wallet
      </button>
      {account && (
        <div className="mt-4">
          <p><strong>Connected Account:</strong> {account}</p>
          <p><strong>Balance:</strong> {balance} ETH</p>
        </div>
      )}
      {error && <p className="text-red-500 mt-4">{error}</p>}
    </div>
  );
};

export default MetaMaskConnect;

Similarly other libraries can be used to achieve this functionality

Publishing Asset

Payment via wallet directly to spydra

  1. Fetch the fee config by calling the api https://api.openrwa.io/api/v/1/config/store/{storeId}/fee

  2. After fetching the data, check the balance and obtain approval for the appropriate listing fee

  3. To check balance, use the following snippet:

    1. userAddress is the wallet address of the user making the transaction

    2. signer is the JsonRPCSigner object

    3. provider is the BrowserProvider object

    4. listingFee is the amount for publishing asset from fee config result

    5. contractAddress is the currency contract address from fee config result

    6. contractDecimal is the currency contract decimal from fee config result

const genericErc20Abi = [
  'function balanceOf(address account) public view returns (uint256)',
];

const contract = new Contract(
  contractAddress,
  genericErc20Abi,
  signer,
);

const nativeTokenBalance = await provider.getBalance(userAddress as string);
const formattedBalanceNative = Number(formatEther(nativeTokenBalance));

if (
  Number.isNaN(formattedBalanceNative)
  || formattedBalanceNative <= 0
) {
  throw new Error('Not enough native tokens to pay the gas fee.')
}

const balance = await contract.balanceOf(userAddress);
const formattedBalance = Number(formatUnits(balance, contractDecimal));

if (
  formattedBalance < listingFee
) {
  throw new Error('Not enough tokens for listing fee.')
}
  1. To approve, use the following snippet:

    1. signer is the JsonRPCSigner object

    2. listingFee is the amount for publishing asset from fee config result

    3. contractAddress is the currency contract address from fee config result

    4. contractDecimal is the currency contract decimal from fee config result

    5. tRexContractAddress is the RWA contract address from fee config result

const approvalAmount = parseUnits(listingFee.toString(), contractDecimal);

const genericErc20Abi = [
  'function approve(address spender, uint256 amount) public returns (bool)',
];

const contract = new Contract(
  contractAddress,
  genericErc20Abi,
  signer,
);

await contract.approve(tRexContractAddress, approvalAmount).then(async (tx: any) => tx.wait());
  1. After successful approval, send these additional parameters to the publish API

listingFeePaymentMode: 'wallet' // this value will always be wallet
listingFeePaymentChainId: number // chain id passed to fee config api
listingFeeContractAddress: string // selected currency contract address 

Node Modules Required

  1. ethers.js

  2. Any preferred libaray to connect wallet for getting the BrowserProvider and Signer objects


Token & Token Sale

Issuer API's to create/update a token, and token sale. API's to view and manage token price.

Creating a Debt Token

Debt Tokens require the debt object while creating the token which are

  • interestPayoutFrequency

    • 1 - Monthly Payouts

    • 2 - Quaterly Payouts

    • 3 - Annual Payouts

    • 5 - Semi-Annual Payouts

  • date

    • Required in case of monthly, quaterly, annual and semi-annual payouts

    • Accepted Range: 1-28

  • month

    • Required in case of annual payouts

    • Accepted Range: 1-12

      • 1 : Jan

      • 2 : Feb

      • 3 : Mar

      • 4 : Apr

      • 5 : May

      • 6 : June

      • 7 : July

      • 8 : Aug

      • 9 : Sept

      • 10 : Oct

      • 11 : Nov

      • 12 : Dec

  • quarter

    • Required in case of quartely payouts

    • Accepted Range: 1-3

      • 1 : Jan-Apr-Jul-Oct

      • 2 : Feb-May-Aug-Nov

      • 3 : Mar-Jun-Sep-Dec

  • halfYear

    • Required in case of semi-annauly payouts

    • Accepted Range: 1-6

      • 1 : Jan-Jul

      • 2 : Feb-Aug

      • 3 : Mar-Sept

      • 4 : Apr-Oct

      • 5 : May-Nov

      • 6 : Jun-Dec

  • schedules

    • array of schedule objects

      • name

      • principal

        • Principal amount for particular schedule

  • numberOfPayouts

  • interestRate

  • Token Sales can be Running or have End Date

Creating an Equity Token

Equity Tokens require the equity object while creating the token which are

  • payoutFrequency

    • 1 - Monthly Payouts

    • 2 - Quaterly Payouts

    • 3 - Annual Payouts

  • expectedReturns


Token Payout

Token Lifecycle APIs: Initiating/ Managing Payout for Debt and Equity Tokens.

How to Set Up an Equity Payout
  1. Fetch the payout metadata by calling the API https://api.openrwa.io/api/v/1/payouts/{storeId}/token/{tokenId}/metadata

  2. After fetching the data, check the balance and obtain approval fora. totalAmount = amountPerToken × totalTokens

  3. To check the balance, use the following snippet:

    1. userAddress is the wallet address of the user making the transaction

    2. signer is the JsonRPCSigner object

    3. provider is the BrowserProvider object

    4. contractAddress is the currency contract address from metadata result

    5. contractDecimal is the currency contract decimal from metadata result

const genericErc20Abi = [
  'function balanceOf(address account) public view returns (uint256)',
];

const contract = new Contract(
  contractAddress,
  genericErc20Abi,
  signer,
);

const nativeTokenBalance = await provider.getBalance(userAddress as string);
const formattedBalanceNative = Number(formatEther(nativeTokenBalance));

if (
  Number.isNaN(formattedBalanceNative)
  || formattedBalanceNative <= 0
) {
  throw new Error('Not enough native tokens to pay the gas fee.')
}

const balance = await contract.balanceOf(userAddress);
const formattedBalance = Number(formatUnits(balance, contractDecimal));

if (
  formattedBalance < totalAmount
) {
  throw new Error('Not enough tokens for payout.')
}
  1. To approve, use the following snippet:

    1. signer is the JsonRPCSigner object

    2. contractAddress is the currency contract address from metadata result

    3. contractDecimal is the currency contract decimal from metadata result

    4. tokenContractAddress is the Token Contract Address from metadata result

const approvalAmount = parseUnits(totalAmount.toString(), contractDecimal);

const genericErc20Abi = [
  'function approve(address spender, uint256 amount) public returns (bool)',
];

const contract = new Contract(
  contractAddress,
  genericErc20Abi,
  signer,
);

await contract.approve(tokenContractAddress, approvalAmount).then(async (tx: any) => tx.wait());

How to Set Up an Debt Payout
  1. Fetch the payout metadata by calling the API https://api.openrwa.io/api/v/1/payouts/{storeId}/token/{tokenId}/metadata?payoutId={payoutId}

  2. After fetching the data, check the balance and obtain approval for totalAmount

  3. To check balance, use the following snippet:

    1. userAddress is the wallet address of the user making the transaction

    2. signer is the JsonRPCSigner object

    3. provider is the BrowserProvider object

    4. contractAddress is the currency contract address from metadata result

    5. contractDecimal is the currency contract decimal from metadata result

const genericErc20Abi = [
  'function balanceOf(address account) public view returns (uint256)',
];

const contract = new Contract(
  contractAddress,
  genericErc20Abi,
  signer,
);

const nativeTokenBalance = await provider.getBalance(userAddress as string);
const formattedBalanceNative = Number(formatEther(nativeTokenBalance));

if (
  Number.isNaN(formattedBalanceNative)
  || formattedBalanceNative <= 0
) {
  throw new Error('Not enough native tokens to pay the gas fee.')
}

const balance = await contract.balanceOf(userAddress);
const formattedBalance = Number(formatUnits(balance, contractDecimal));

if (
  formattedBalance < totalAmount
) {
  throw new Error('Not enough tokens for payout.')
}
  1. To approve, use the following snippet:

    1. signer is the JsonRPCSigner object

    2. contractAddress is the currency contract address from metadata result

    3. contractDecimal is the currency contract decimal from metadata result

    4. tokenContractAddress is the Token Contract Address from metadata result

const approvalAmount = parseUnits(totalAmount.toString(), contractDecimal);

const genericErc20Abi = [
  'function approve(address spender, uint256 amount) public returns (bool)',
];

const contract = new Contract(
  contractAddress,
  genericErc20Abi,
  signer,
);

await contract.approve(tokenContractAddress, approvalAmount).then(async (tx: any) => tx.wait());


Store User Authentication


Investor Mangement


IPFS

When is this required?
  • While Updating the Asset when Asset is live

  • While Updating the Token when Asset/Token is live

  • While Creatingthe TokenSale when Token is live

Uploading Asset Metadata to IPFS

const tokenAbi = [
  'function setTokenURI(string _uri)',
];

const contract = new Contract(
  tokenAddress,
  tokenAbi,
  signer,
);

await contract.setTokenURI(cid).then(async (tx: any) => tx.wait());

After Updating the TokenURL, the respective save API's should be called.

eg. After Calling the Upload to IPFS API with new Token Sales Data and updating the Token URI, we need to call the Put TokenSales API to reflect the new token sales.


Configs

https://reown.com/appkit
https://www.rainbowkit.com/

Retrieve a paginated list of assets

get

This endpoint returns a paginated list of assets based on the provided query parameters. Users can filter the assets by status (Draft or Published) and control pagination using page and limit parameters. This is useful for browsing through the available assets in the system.

Authorizations
Query parameters
pageinteger · min: 1Optional

Page number for pagination

Default: 1
limitinteger · min: 1Optional

Number of items per page

Default: 10
statusnumber · enumRequired

Status of the assets

  • 1: Draft
  • 2: Published
Possible values:
Responses
200
Successful response with a list of assets
application/json
Responseall of
401
Unauthorized access
application/json
get
GET /api/v/1/assets HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "assets": [
      {
        "id": "text",
        "assetCategory": 1,
        "assetCategoryText": "text",
        "chain": "text",
        "chainIcon": "text",
        "chainType": "text",
        "investmentType": 1,
        "investmentTypeText": "text",
        "title": "text",
        "description": "text",
        "coverImage": "text",
        "constructionYear": 1,
        "numberOfBedrooms": 1,
        "propertyType": 1,
        "propertyTypeText": "text",
        "shortDescription": "text",
        "assetType": "text",
        "status": 1,
        "statusText": "text",
        "images": [
          {
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text"
          }
        ],
        "documents": [
          {
            "id": "text",
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text",
            "title": "text",
            "description": "text",
            "order": 1
          }
        ],
        "valuation": [
          {
            "id": "text",
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text",
            "title": "text",
            "description": "text",
            "order": 1
          }
        ],
        "address": {
          "address_1": "text",
          "address_2": "text",
          "google_place": "text",
          "city": "text",
          "zip_code": "text",
          "country": "text",
          "coords": {
            "lat": 1,
            "lng": 1
          }
        },
        "aboutTheIssuer": "text",
        "moreInfo": [
          {
            "title": "text",
            "description": "text"
          }
        ],
        "termsAndConditions": "text",
        "faqs": [
          {
            "question": "text",
            "answer": "text"
          }
        ],
        "storeId": "text",
        "timezone": "text",
        "createdAt": "2025-05-25T01:04:05.268Z",
        "updatedAt": "2025-05-25T01:04:05.268Z",
        "publishedOn": "2025-05-25T01:04:05.268Z",
        "tokens": [
          {
            "id": "text",
            "assetId": "text",
            "storeId": "text",
            "availableTokens": 1,
            "soldTokens": 1,
            "chainId": "text",
            "icon": "text",
            "name": "text",
            "symbol": "text",
            "debt": {
              "date": 1,
              "month": 1,
              "quarter": 1,
              "halfYear": 1,
              "schedules": [
                {
                  "id": "text",
                  "principal": 1
                }
              ],
              "numberOfPayouts": 1,
              "interestRate": 1,
              "interestPayoutFrequency": 1
            },
            "equity": {
              "expectedReturns": 1,
              "payoutFrequency": 1
            },
            "includedJurisdictions": [
              "text"
            ],
            "excludedJurisdictions": [
              "text"
            ],
            "maxSupply": 1,
            "maxPerUser": 1,
            "minHoldInPeriod": 1,
            "percentageAvailableTokens": 1,
            "percentageSoldTokens": 1,
            "price": 1,
            "requiresKyc": true,
            "secondaryMarketplace": true,
            "timezone": "text",
            "tokenAddress": "text",
            "createdAt": "2025-05-25T01:04:05.268Z",
            "updatedAt": "2025-05-25T01:04:05.268Z",
            "tokenSales": [
              {
                "id": "text",
                "tokenId": "text",
                "tokenName": "text",
                "tokenSymbol": "text",
                "name": "text",
                "description": "text",
                "startDate": "2025-05-25T01:04:05.268Z",
                "endDate": "2025-05-25T01:04:05.268Z",
                "payoutStartDate": "2025-05-25T01:04:05.268Z",
                "tokenCountOnSale": 1,
                "images": [
                  {
                    "name": "text",
                    "size": 1,
                    "type": "text",
                    "url": "text"
                  }
                ],
                "documents": [
                  {
                    "id": "text",
                    "name": "text",
                    "size": 1,
                    "type": "text",
                    "url": "text",
                    "title": "text",
                    "description": "text",
                    "order": 1
                  }
                ],
                "softCap": 1,
                "timezone": "text",
                "expectedReturns": 1,
                "totalSoldTokens": 1,
                "percentageTokenSold": 1,
                "createdAt": "2025-05-25T01:04:05.268Z",
                "updatedAt": "2025-05-25T01:04:05.268Z"
              }
            ]
          }
        ]
      }
    ]
  },
  "pagination": {
    "page": 1,
    "limit": 1,
    "totalPages": 1,
    "totalItems": 1
  }
}

Retrieve detailed information about a specific asset

get

This endpoint fetches detailed information about a specific asset identified by its ID. It provides comprehensive details including the asset's metadata, associated tokens, and any related token sales. This is essential for users who need in-depth information about a particular asset.

Authorizations
Path parameters
assetIdstringRequired

ID of the asset to retrieve

Query parameters
Responses
200
Successful response with asset details
application/json
Responseall of
401
Unauthorized access
application/json
404
Asset not found
application/json
get
GET /api/v/1/assets/{assetId} HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "asset": {
      "id": "text",
      "assetCategory": 1,
      "assetCategoryText": "text",
      "chain": "text",
      "chainIcon": "text",
      "chainType": "text",
      "investmentType": 1,
      "investmentTypeText": "text",
      "title": "text",
      "description": "text",
      "coverImage": "text",
      "constructionYear": 1,
      "numberOfBedrooms": 1,
      "propertyType": 1,
      "propertyTypeText": "text",
      "shortDescription": "text",
      "assetType": "text",
      "status": 1,
      "statusText": "text",
      "images": [
        {
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text"
        }
      ],
      "documents": [
        {
          "id": "text",
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text",
          "title": "text",
          "description": "text",
          "order": 1
        }
      ],
      "valuation": [
        {
          "id": "text",
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text",
          "title": "text",
          "description": "text",
          "order": 1
        }
      ],
      "address": {
        "address_1": "text",
        "address_2": "text",
        "google_place": "text",
        "city": "text",
        "zip_code": "text",
        "country": "text",
        "coords": {
          "lat": 1,
          "lng": 1
        }
      },
      "aboutTheIssuer": "text",
      "moreInfo": [
        {
          "title": "text",
          "description": "text"
        }
      ],
      "termsAndConditions": "text",
      "faqs": [
        {
          "question": "text",
          "answer": "text"
        }
      ],
      "storeId": "text",
      "timezone": "text",
      "createdAt": "2025-05-25T01:04:05.268Z",
      "updatedAt": "2025-05-25T01:04:05.268Z",
      "publishedOn": "2025-05-25T01:04:05.268Z",
      "tokens": [
        {
          "id": "text",
          "assetId": "text",
          "storeId": "text",
          "availableTokens": 1,
          "soldTokens": 1,
          "chainId": "text",
          "icon": "text",
          "name": "text",
          "symbol": "text",
          "debt": {
            "date": 1,
            "month": 1,
            "quarter": 1,
            "halfYear": 1,
            "schedules": [
              {
                "id": "text",
                "principal": 1
              }
            ],
            "numberOfPayouts": 1,
            "interestRate": 1,
            "interestPayoutFrequency": 1
          },
          "equity": {
            "expectedReturns": 1,
            "payoutFrequency": 1
          },
          "includedJurisdictions": [
            "text"
          ],
          "excludedJurisdictions": [
            "text"
          ],
          "maxSupply": 1,
          "maxPerUser": 1,
          "minHoldInPeriod": 1,
          "percentageAvailableTokens": 1,
          "percentageSoldTokens": 1,
          "price": 1,
          "requiresKyc": true,
          "secondaryMarketplace": true,
          "timezone": "text",
          "tokenAddress": "text",
          "createdAt": "2025-05-25T01:04:05.268Z",
          "updatedAt": "2025-05-25T01:04:05.268Z",
          "tokenSales": [
            {
              "id": "text",
              "tokenId": "text",
              "tokenName": "text",
              "tokenSymbol": "text",
              "name": "text",
              "description": "text",
              "startDate": "2025-05-25T01:04:05.268Z",
              "endDate": "2025-05-25T01:04:05.268Z",
              "payoutStartDate": "2025-05-25T01:04:05.268Z",
              "tokenCountOnSale": 1,
              "images": [
                {
                  "name": "text",
                  "size": 1,
                  "type": "text",
                  "url": "text"
                }
              ],
              "documents": [
                {
                  "id": "text",
                  "name": "text",
                  "size": 1,
                  "type": "text",
                  "url": "text",
                  "title": "text",
                  "description": "text",
                  "order": 1
                }
              ],
              "softCap": 1,
              "timezone": "text",
              "expectedReturns": 1,
              "totalSoldTokens": 1,
              "percentageTokenSold": 1,
              "createdAt": "2025-05-25T01:04:05.268Z",
              "updatedAt": "2025-05-25T01:04:05.268Z"
            }
          ]
        }
      ]
    }
  }
}

Retrieve tokens associated with a specific asset

get

This endpoint returns all tokens that are associated with a specific asset. It is useful for understanding the tokenization of an asset and the available tokens for investment or trading.

Authorizations
Path parameters
assetIdstringRequired

ID of the asset

Responses
200
Successful response with tokens data
application/json
Responseall of
401
Unauthorized access
application/json
404
Asset not found
application/json
get
GET /api/v/1/assets/{assetId}/tokens HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "tokens": [
      {
        "id": "text",
        "assetId": "text",
        "storeId": "text",
        "availableTokens": 1,
        "soldTokens": 1,
        "chainId": "text",
        "icon": "text",
        "name": "text",
        "symbol": "text",
        "debt": {
          "date": 1,
          "month": 1,
          "quarter": 1,
          "halfYear": 1,
          "schedules": [
            {
              "id": "text",
              "principal": 1
            }
          ],
          "numberOfPayouts": 1,
          "interestRate": 1,
          "interestPayoutFrequency": 1
        },
        "equity": {
          "expectedReturns": 1,
          "payoutFrequency": 1
        },
        "includedJurisdictions": [
          "text"
        ],
        "excludedJurisdictions": [
          "text"
        ],
        "maxSupply": 1,
        "maxPerUser": 1,
        "minHoldInPeriod": 1,
        "percentageAvailableTokens": 1,
        "percentageSoldTokens": 1,
        "price": 1,
        "requiresKyc": true,
        "secondaryMarketplace": true,
        "timezone": "text",
        "tokenAddress": "text",
        "createdAt": "2025-05-25T01:04:05.268Z",
        "updatedAt": "2025-05-25T01:04:05.268Z",
        "tokenSales": [
          {
            "id": "text",
            "tokenId": "text",
            "tokenName": "text",
            "tokenSymbol": "text",
            "name": "text",
            "description": "text",
            "startDate": "2025-05-25T01:04:05.268Z",
            "endDate": "2025-05-25T01:04:05.268Z",
            "payoutStartDate": "2025-05-25T01:04:05.268Z",
            "tokenCountOnSale": 1,
            "images": [
              {
                "name": "text",
                "size": 1,
                "type": "text",
                "url": "text"
              }
            ],
            "documents": [
              {
                "id": "text",
                "name": "text",
                "size": 1,
                "type": "text",
                "url": "text",
                "title": "text",
                "description": "text",
                "order": 1
              }
            ],
            "softCap": 1,
            "timezone": "text",
            "expectedReturns": 1,
            "totalSoldTokens": 1,
            "percentageTokenSold": 1,
            "createdAt": "2025-05-25T01:04:05.268Z",
            "updatedAt": "2025-05-25T01:04:05.268Z"
          }
        ]
      }
    ]
  }
}

Retrieve token sales associated with a specific asset

get

This endpoint provides information about all token sales related to a specific asset. It includes details such as the number of tokens on sale, start and end dates, and any associated documents or images. This is crucial for investors looking to participate in token sales for a particular asset.

Authorizations
Path parameters
assetIdstringRequired

ID of the asset

Responses
200
Successful response with token sales data
application/json
Responseall of
401
Unauthorized access
application/json
404
Asset not found
application/json
get
GET /api/v/1/assets/{assetId}/token-sales HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "tokenSales": [
      {
        "id": "text",
        "tokenId": "text",
        "name": "text",
        "description": "text",
        "startDate": "2025-05-25T01:04:05.268Z",
        "endDate": "2025-05-25T01:04:05.268Z",
        "payoutStartDate": "2025-05-25T01:04:05.268Z",
        "tokenCountOnSale": 1,
        "images": [
          {
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text"
          }
        ],
        "documents": [
          {
            "id": "text",
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text",
            "title": "text",
            "description": "text",
            "order": 1
          }
        ],
        "softCap": 1,
        "timezone": "text"
      }
    ]
  }
}

Retrieve the current price of a token

get

This endpoint fetches the current price of a specific token, along with historical price data and metadata. It is useful for investors and analysts who need to track token price movements and trends over time.

Authorizations
Path parameters
tokenIdstringRequired
Responses
200
Token price retrieved successfully
application/json
Responseall of
get
GET /api/v/1/tokens/{tokenId}/price HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Accept: */*
200

Token price retrieved successfully

{
  "status": 0,
  "token": {
    "id": "text",
    "assetId": "text",
    "icon": "text",
    "name": "text",
    "symbol": "text",
    "debt": {
      "interestPayoutFrequency": "text",
      "interestRate": 1,
      "numberOfPayouts": 1,
      "payoutMethod": "text",
      "principalPayoutFrequency": "text",
      "schedules": [
        {
          "id": "text",
          "name": "text",
          "principal": 1
        }
      ],
      "date": "2025-05-25",
      "month": "text",
      "quarter": "text",
      "halfYear": "text"
    },
    "equity": {
      "expectedReturns": 1,
      "payoutFrequency": "text",
      "payoutType": "text"
    },
    "includedJurisdictions": [
      "text"
    ],
    "excludedJurisdictions": [
      "text"
    ],
    "maxSupply": 1,
    "maxPerUser": 1,
    "minHoldInPeriod": 1,
    "price": 1,
    "requiresKyc": true,
    "secondaryMarketplace": true,
    "timezone": "text",
    "tokenSales": [
      {
        "id": "text",
        "tokenId": "text",
        "name": "text",
        "description": "text",
        "startDate": "2025-05-25T01:04:05.268Z",
        "endDate": "2025-05-25T01:04:05.268Z",
        "payoutStartDate": "2025-05-25T01:04:05.268Z",
        "tokenCountOnSale": 1,
        "images": [
          {
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text"
          }
        ],
        "documents": [
          {
            "id": "text",
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text",
            "title": "text",
            "description": "text",
            "order": 1
          }
        ],
        "softCap": 1,
        "timezone": "text"
      }
    ]
  },
  "chartData": {
    "points": [
      {
        "date": "text",
        "price": 1
      }
    ],
    "metadata": {},
    "updateIntervals": [
      {
        "date": "text",
        "price": 1,
        "updatedBy": "text"
      }
    ]
  }
}

Create or update an asset

put

This endpoint allows for the creation of new assets or updating existing ones in the RWA platform. Assets represent real-world properties or investments that can be tokenized. The request should include all required asset details such as category, investment type, property information, location data, and optional media like images and documents. For updates, include the asset ID to modify an existing record. The system will validate all inputs and return the created or updated asset information upon successful processing.

Authorizations
Body
idstringOptional

Unique identifier for the asset

assetCategorynumber · enumOptional

Category of the asset

  • 1: Real Estate
  • 2: Others
Possible values:
investmentTypenumber · enumOptional

Type of investment

  • 1: Equity
  • 2: Debt
Possible values:
titlestringRequired

Title of the asset

descriptionstringRequired

Description of the asset

shortDescriptionstringOptional

Short description of the asset

coverImagestringOptional

URL of the cover image

constructionYearintegerOptional

Year of construction

numberOfBedroomsintegerOptional

Number of bedrooms

propertyTypenumber · enumOptional

Type of property

  • 1: Residential
  • 2: Commercial
Possible values:
assetTypestringOptional

Type of the asset

aboutTheIssuerstringOptional

Information about the issuer

termsAndConditionsstringOptional

Terms and conditions of the asset

timezonestringOptional

Timezone of the asset

Responses
201
Asset created or updated successfully
application/json
Responseall of
400
Invalid input data
application/json
401
Unauthorized access
application/json
put
PUT /api/v/1/assets HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 1896

{
  "assetCategory": 1,
  "investmentType": 2,
  "coverImage": "https://devrwaassets.blob.core.windows.net/rwaassetsdocuments/6728d2c9fbe7a9ccf6f2db8d/07cdf99f-5ad9-4734-900a-3fafc1da8e9a_fumfudppcfedox0yim9m.png",
  "title": "Luxury Beachfront Villa",
  "description": "<p>Beautiful 4-bedroom villa with direct beach access</p>",
  "shortDescription": "",
  "propertyType": 1,
  "constructionYear": 2010,
  "numberOfBedrooms": 3,
  "images": [
    {
      "name": "qqwgbirwqbaxjzfxah5t.png",
      "size": 1312647,
      "type": "image/png",
      "url": "https://devrwaassets.blob.core.windows.net/rwaassetsdocuments/6728d2c9fbe7a9ccf6f2db8d/ab0972bb-998c-410c-a70e-95e3921f03a9_qqwgbirwqbaxjzfxah5t.png"
    },
    {
      "name": "nsmjdavtyphppvg7wki1.png",
      "size": 784638,
      "type": "image/png",
      "url": "https://devrwaassets.blob.core.windows.net/rwaassetsdocuments/6728d2c9fbe7a9ccf6f2db8d/07f7c9da-3160-4c84-9c29-0079cdf4c39e_nsmjdavtyphppvg7wki1.png"
    }
  ],
  "documents": [],
  "valuations": [],
  "address": {
    "google_place": "Miami Beach, FL, USA",
    "coords": {
      "lat": 25.790654,
      "lng": -80.1300455
    },
    "address_1": "123, Beach Road",
    "address_2": "Unit A",
    "zip_code": 33139,
    "city": "Miami",
    "country": "630364b1739406442c73e3fb"
  },
  "aboutTheIssuer": "<p>Beach Villas Ltd. is a visionary entrepreneur dedicated to creating luxury beachfront villas that blend modern design with natural beauty. With a passion for sustainable architecture, they focus on building exclusive, eco-friendly homes that offer unparalleled comfort and breathtaking ocean views. Their commitment to quality craftsmanship and attention to detail ensures each villa is a tranquil retreat, offering an ideal blend of elegance and coastal living.</p>",
  "moreInfo": [
    {
      "id": "339",
      "label": "Distance to shore",
      "description": "250 yards"
    }
  ],
  "faqs": [
    {
      "id": "339",
      "question": "What are the amenities?",
      "answer": "The villas come with a private beach access, a swimming pool, a gym, and a spa."
    },
    {
      "id": "340",
      "question": "What is the construction year?",
      "answer": "2010"
    }
  ]
}
{
  "status": 0,
  "response": {
    "asset": {
      "id": "text",
      "assetCategory": 1,
      "assetCategoryText": "text",
      "chain": "text",
      "chainIcon": "text",
      "chainType": "text",
      "investmentType": 1,
      "investmentTypeText": "text",
      "title": "text",
      "description": "text",
      "coverImage": "text",
      "constructionYear": 1,
      "numberOfBedrooms": 1,
      "propertyType": 1,
      "propertyTypeText": "text",
      "shortDescription": "text",
      "assetType": "text",
      "status": 1,
      "statusText": "text",
      "images": [
        {
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text"
        }
      ],
      "documents": [
        {
          "id": "text",
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text",
          "title": "text",
          "description": "text",
          "order": 1
        }
      ],
      "valuation": [
        {
          "id": "text",
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text",
          "title": "text",
          "description": "text",
          "order": 1
        }
      ],
      "address": {
        "address_1": "text",
        "address_2": "text",
        "google_place": "text",
        "city": "text",
        "zip_code": "text",
        "country": "text",
        "coords": {
          "lat": 1,
          "lng": 1
        }
      },
      "aboutTheIssuer": "text",
      "moreInfo": [
        {
          "title": "text",
          "description": "text"
        }
      ],
      "termsAndConditions": "text",
      "faqs": [
        {
          "question": "text",
          "answer": "text"
        }
      ],
      "storeId": "text",
      "timezone": "text",
      "createdAt": "2025-05-25T01:04:05.268Z",
      "updatedAt": "2025-05-25T01:04:05.268Z",
      "publishedOn": "2025-05-25T01:04:05.268Z",
      "tokens": [
        {
          "id": "text",
          "assetId": "text",
          "storeId": "text",
          "availableTokens": 1,
          "soldTokens": 1,
          "chainId": "text",
          "icon": "text",
          "name": "text",
          "symbol": "text",
          "debt": {
            "date": 1,
            "month": 1,
            "quarter": 1,
            "halfYear": 1,
            "schedules": [
              {
                "id": "text",
                "principal": 1
              }
            ],
            "numberOfPayouts": 1,
            "interestRate": 1,
            "interestPayoutFrequency": 1
          },
          "equity": {
            "expectedReturns": 1,
            "payoutFrequency": 1
          },
          "includedJurisdictions": [
            "text"
          ],
          "excludedJurisdictions": [
            "text"
          ],
          "maxSupply": 1,
          "maxPerUser": 1,
          "minHoldInPeriod": 1,
          "percentageAvailableTokens": 1,
          "percentageSoldTokens": 1,
          "price": 1,
          "requiresKyc": true,
          "secondaryMarketplace": true,
          "timezone": "text",
          "tokenAddress": "text",
          "createdAt": "2025-05-25T01:04:05.268Z",
          "updatedAt": "2025-05-25T01:04:05.268Z",
          "tokenSales": [
            {
              "id": "text",
              "tokenId": "text",
              "tokenName": "text",
              "tokenSymbol": "text",
              "name": "text",
              "description": "text",
              "startDate": "2025-05-25T01:04:05.268Z",
              "endDate": "2025-05-25T01:04:05.268Z",
              "payoutStartDate": "2025-05-25T01:04:05.268Z",
              "tokenCountOnSale": 1,
              "images": [
                {
                  "name": "text",
                  "size": 1,
                  "type": "text",
                  "url": "text"
                }
              ],
              "documents": [
                {
                  "id": "text",
                  "name": "text",
                  "size": 1,
                  "type": "text",
                  "url": "text",
                  "title": "text",
                  "description": "text",
                  "order": 1
                }
              ],
              "softCap": 1,
              "timezone": "text",
              "expectedReturns": 1,
              "totalSoldTokens": 1,
              "percentageTokenSold": 1,
              "createdAt": "2025-05-25T01:04:05.268Z",
              "updatedAt": "2025-05-25T01:04:05.268Z"
            }
          ]
        }
      ]
    }
  }
}

Publish an asset to make it available for tokenization

post

This endpoint publishes an asset, making it available for tokenization and investment. It requires asset data, including wallet addresses and chain IDs for token and payment processing. Upon successful publication, the asset becomes available for token sales and other related activities.

Authorizations
Body
assetIdstringRequired

ID of the asset to publish

tokenWalletAddressstringRequired

Token Issuer Wallet Address

tokenChainIdstringRequired

Token Issuer Chain ID

paymentWalletAddressstringRequired

Payment Wallet Address, this is the wallet address of the investor which will be receiving payment on token purchase, transfer etc.

paymentChainIdstringRequired

Payment Chain ID

listingFeePaymentModestring · enumOptional

Payment mode for listing fee, send 'wallet' if you want to pay listing fee on publishing directly to spydra Note: Required only if listing fee is paid on publishing directly to spydra

Possible values:
listingFeePaymentChainIdstringOptional

Chain ID of the payment for listing fee Note: Required only if listing fee is paid on publishing directly to spydra

listingFeeContractAddressstringOptional

Currency Contract address for listing fee Note: Required only if listing fee is paid on publishing directly to spydra

Responses
200
Asset published successfully
application/json
Responseall of
400
Invalid input data
application/json
401
Unauthorized access
application/json
post
POST /api/v/1/assets/publish HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 216

{
  "assetId": "6788d2a296f0630b8b1318e0",
  "tokenWalletAddress": "0x649458E05F928Fa77Ec2cd5e2f1889C891c20015",
  "tokenChainId": 80002,
  "paymentWalletAddress": "0x649458E05F928Fa77Ec2cd5e2f1889C891c20015",
  "paymentChainId": 80002
}
{
  "status": 0,
  "response": {
    "asset": {
      "id": "text",
      "assetCategory": 1,
      "assetCategoryText": "text",
      "chain": "text",
      "chainIcon": "text",
      "chainType": "text",
      "investmentType": 1,
      "investmentTypeText": "text",
      "title": "text",
      "description": "text",
      "coverImage": "text",
      "constructionYear": 1,
      "numberOfBedrooms": 1,
      "propertyType": 1,
      "propertyTypeText": "text",
      "shortDescription": "text",
      "assetType": "text",
      "status": 1,
      "statusText": "text",
      "images": [
        {
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text"
        }
      ],
      "documents": [
        {
          "id": "text",
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text",
          "title": "text",
          "description": "text",
          "order": 1
        }
      ],
      "valuation": [
        {
          "id": "text",
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text",
          "title": "text",
          "description": "text",
          "order": 1
        }
      ],
      "address": {
        "address_1": "text",
        "address_2": "text",
        "google_place": "text",
        "city": "text",
        "zip_code": "text",
        "country": "text",
        "coords": {
          "lat": 1,
          "lng": 1
        }
      },
      "aboutTheIssuer": "text",
      "moreInfo": [
        {
          "title": "text",
          "description": "text"
        }
      ],
      "termsAndConditions": "text",
      "faqs": [
        {
          "question": "text",
          "answer": "text"
        }
      ],
      "storeId": "text",
      "timezone": "text",
      "createdAt": "2025-05-25T01:04:05.268Z",
      "updatedAt": "2025-05-25T01:04:05.268Z",
      "publishedOn": "2025-05-25T01:04:05.268Z",
      "tokens": [
        {
          "id": "text",
          "assetId": "text",
          "storeId": "text",
          "availableTokens": 1,
          "soldTokens": 1,
          "chainId": "text",
          "icon": "text",
          "name": "text",
          "symbol": "text",
          "debt": {
            "date": 1,
            "month": 1,
            "quarter": 1,
            "halfYear": 1,
            "schedules": [
              {
                "id": "text",
                "principal": 1
              }
            ],
            "numberOfPayouts": 1,
            "interestRate": 1,
            "interestPayoutFrequency": 1
          },
          "equity": {
            "expectedReturns": 1,
            "payoutFrequency": 1
          },
          "includedJurisdictions": [
            "text"
          ],
          "excludedJurisdictions": [
            "text"
          ],
          "maxSupply": 1,
          "maxPerUser": 1,
          "minHoldInPeriod": 1,
          "percentageAvailableTokens": 1,
          "percentageSoldTokens": 1,
          "price": 1,
          "requiresKyc": true,
          "secondaryMarketplace": true,
          "timezone": "text",
          "tokenAddress": "text",
          "createdAt": "2025-05-25T01:04:05.268Z",
          "updatedAt": "2025-05-25T01:04:05.268Z",
          "tokenSales": [
            {
              "id": "text",
              "tokenId": "text",
              "tokenName": "text",
              "tokenSymbol": "text",
              "name": "text",
              "description": "text",
              "startDate": "2025-05-25T01:04:05.268Z",
              "endDate": "2025-05-25T01:04:05.268Z",
              "payoutStartDate": "2025-05-25T01:04:05.268Z",
              "tokenCountOnSale": 1,
              "images": [
                {
                  "name": "text",
                  "size": 1,
                  "type": "text",
                  "url": "text"
                }
              ],
              "documents": [
                {
                  "id": "text",
                  "name": "text",
                  "size": 1,
                  "type": "text",
                  "url": "text",
                  "title": "text",
                  "description": "text",
                  "order": 1
                }
              ],
              "softCap": 1,
              "timezone": "text",
              "expectedReturns": 1,
              "totalSoldTokens": 1,
              "percentageTokenSold": 1,
              "createdAt": "2025-05-25T01:04:05.268Z",
              "updatedAt": "2025-05-25T01:04:05.268Z"
            }
          ]
        }
      ]
    }
  }
}

Create or update multiple tokens

put

This endpoint allows the creation or updating of multiple tokens in a single request. It supports batch processing of tokens, including details such as name, symbol, max supply, and associated sales. This is useful for efficiently managing multiple tokens and their attributes.

Authorizations
Body
Responses
201
Tokens saved successfully
application/json
401
Unauthorized User
application/json
put
PUT /api/v/1/tokens HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 1108

{
  "tokens": [
    {
      "assetId": "6788d2a296f0630b8b1318e0",
      "icon": "",
      "name": "Beach Villa Token",
      "symbol": "BVTD",
      "maxSupply": 10000000,
      "price": 1,
      "maxPerUser": 10000,
      "requiresKyc": false,
      "secondaryMarketplace": false,
      "minHoldInPeriod": 30,
      "includedJurisdictions": [
        "-1"
      ],
      "excludedJurisdictions": [],
      "tokenSales": [
        {
          "name": "Villa 104 - Initial Offering",
          "description": "",
          "tokenCountOnSale": 100000,
          "startDate": "2025-01-17T00:00:01+05:30",
          "endDate": "2025-01-30T23:59:59+05:30",
          "payoutStartDate": "2030-05-10T00:00:01+05:30",
          "images": [],
          "documents": []
        }
      ],
      "debt": {
        "interestRate": 12,
        "interestPayoutFrequency": 3,
        "numberOfPayouts": 5,
        "month": 5,
        "date": 10,
        "schedules": [
          {
            "id": "6788d40233ea3664e4ea11de",
            "name": "Annual Payment 1 (Interest only)",
            "principal": 0
          },
          {
            "id": "6788d40233ea3664e4ea11df",
            "name": "Annual Payment 2 (Interest only)",
            "principal": 0
          },
          {
            "id": "6788d40233ea3664e4ea11e0",
            "name": "Annual Payment 3 (Interest only)",
            "principal": 0
          },
          {
            "id": "6788d40233ea3664e4ea11e1",
            "name": "Annual Payment 4 (Principal + Interest)",
            "principal": 0.5
          },
          {
            "id": "6788d40233ea3664e4ea11e2",
            "name": "Annual Payment 5 (Principal + Interest)",
            "principal": 0.5
          }
        ]
      }
    }
  ]
}
{
  "status": "SUCCESS",
  "response": {
    "tokens": [
      {
        "id": "text",
        "assetId": "text",
        "icon": "text",
        "name": "text",
        "symbol": "text",
        "debt": {
          "interestPayoutFrequency": "text",
          "interestRate": 1,
          "numberOfPayouts": 1,
          "payoutMethod": "text",
          "principalPayoutFrequency": "text",
          "schedules": [
            {
              "id": "text",
              "name": "text",
              "principal": 1
            }
          ],
          "date": "2025-05-25",
          "month": "text",
          "quarter": "text",
          "halfYear": "text"
        },
        "equity": {
          "expectedReturns": 1,
          "payoutFrequency": "text",
          "payoutType": "text"
        },
        "includedJurisdictions": [
          "text"
        ],
        "excludedJurisdictions": [
          "text"
        ],
        "maxSupply": 1,
        "maxPerUser": 1,
        "minHoldInPeriod": 1,
        "price": 1,
        "requiresKyc": true,
        "secondaryMarketplace": true,
        "timezone": "text",
        "tokenSales": [
          {
            "id": "text",
            "tokenId": "text",
            "name": "text",
            "description": "text",
            "startDate": "2025-05-25T01:04:05.268Z",
            "endDate": "2025-05-25T01:04:05.268Z",
            "payoutStartDate": "2025-05-25T01:04:05.268Z",
            "tokenCountOnSale": 1,
            "images": [
              {
                "name": "text",
                "size": 1,
                "type": "text",
                "url": "text"
              }
            ],
            "documents": [
              {
                "id": "text",
                "name": "text",
                "size": 1,
                "type": "text",
                "url": "text",
                "title": "text",
                "description": "text",
                "order": 1
              }
            ],
            "softCap": 1,
            "timezone": "text"
          }
        ]
      }
    ]
  }
}

Update the price of a token

post

This endpoint allows updating the price of a specific token. It requires the token ID and the new price value. This is essential for administrators and market operators who need to adjust token prices based on market conditions or other factors.

Authorizations
Path parameters
tokenIdstringRequired
Body
pricenumberOptional

Price of the token

cidstringOptional

CID of the token

Responses
200
Token price updated successfully
application/json
Responseall of
post
POST /api/v/1/tokens/{tokenId}/price HTTP/1.1
Host: api.openrwa.io
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 24

{
  "price": 1,
  "cid": "text"
}
200

Token price updated successfully

{
  "status": 0,
  "token": {
    "id": "text",
    "assetId": "text",
    "icon": "text",
    "name": "text",
    "symbol": "text",
    "debt": {
      "interestPayoutFrequency": "text",
      "interestRate": 1,
      "numberOfPayouts": 1,
      "payoutMethod": "text",
      "principalPayoutFrequency": "text",
      "schedules": [
        {
          "id": "text",
          "name": "text",
          "principal": 1
        }
      ],
      "date": "2025-05-25",
      "month": "text",
      "quarter": "text",
      "halfYear": "text"
    },
    "equity": {
      "expectedReturns": 1,
      "payoutFrequency": "text",
      "payoutType": "text"
    },
    "includedJurisdictions": [
      "text"
    ],
    "excludedJurisdictions": [
      "text"
    ],
    "maxSupply": 1,
    "maxPerUser": 1,
    "minHoldInPeriod": 1,
    "price": 1,
    "requiresKyc": true,
    "secondaryMarketplace": true,
    "timezone": "text",
    "tokenSales": [
      {
        "id": "text",
        "tokenId": "text",
        "name": "text",
        "description": "text",
        "startDate": "2025-05-25T01:04:05.268Z",
        "endDate": "2025-05-25T01:04:05.268Z",
        "payoutStartDate": "2025-05-25T01:04:05.268Z",
        "tokenCountOnSale": 1,
        "images": [
          {
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text"
          }
        ],
        "documents": [
          {
            "id": "text",
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text",
            "title": "text",
            "description": "text",
            "order": 1
          }
        ],
        "softCap": 1,
        "timezone": "text"
      }
    ]
  }
}
  • Tokenise Real World Assets
  • PUTCreate or update an asset
  • GETRetrieve a paginated list of assets
  • GETRetrieve detailed information about a specific asset
  • GETRetrieve tokens associated with a specific asset
  • GETRetrieve token sales associated with a specific asset
  • POSTPublish an asset to make it available for tokenization
  • Token & Token Sale
  • PUTCreate or update multiple tokens
  • POSTUpdate the price of a token
  • GETRetrieve the current price of a token
  • POSTPurchase tokens from a token sale
  • GETRetrieve token sales by token ID
  • GETRetrieve a list of token sales
  • GETRetrieve details of a specific token sale
  • Token Payout
  • POSTInitiate a payout for an equity token
  • POSTInitiate a payout for a debt token
  • GETRetrieve past debt payouts for a token
  • GETRetrieve metadata for a token
  • GETRetrieve equity payouts for a token
  • Store User Authentication
  • POSTRegister a new user
  • PATCHUpdate user information
  • Investor Mangement
  • GETRetrieve all investors
  • GETRetrieve investors for a specific token
  • IPFS
  • POSTUpload an asset to IPFS
  • PATCHUpdate token with IPFS data
  • Configs
  • GETRetrieve listing fee configuration for a token store
  • GETRetrieve contract addresses for token minting
  • GETRetrieve a list of supported countries
  • GETRetrieve all supported blockchain networks

Retrieve token sales by token ID

get

This endpoint provides information about all token sales associated with a specific token. It includes details such as sale dates, token count, and any related documents. This is crucial for understanding the sales history and availability of a particular token.

Authorizations
Path parameters
tokenIdstringRequired

Identifier of the token

Query parameters
pageintegerOptional

Page number for pagination

limitintegerOptional

Number of items per page

Responses
200
Token sales retrieved successfully
application/json
get
200

Token sales retrieved successfully

Retrieve a list of token sales

get

This endpoint provides a paginated list of token sales available on the platform. Users can filter sales by investment type, status, and sort order. This is essential for investors looking to explore and participate in ongoing or upcoming token sales.

Authorizations
Query parameters
pageintegerOptional

Page number for pagination

limitintegerOptional

Number of items per page

termstringOptional

Search term for asset title or description

investmentnumber · enumOptional

Investment type 0 - All // Default, can be omitted 1 - Equity 2 - Debt

Possible values:
statusnumber · enumOptional

Status of the token sale 0 - All // Default, can be omitted 1 - Active 2 - Upcoming 3 - Ended

Possible values:
sortstring · enumOptional

Sort order none - Default, can be omitted price|l-h - Sort by price low to high price|h-l - Sort by price high to low return|h-l - Sort by expected returns high to low

Possible values:
Responses
200
Token sales retrieved successfully
application/json
get
200

Token sales retrieved successfully

Retrieve details of a specific token sale

get

This endpoint fetches detailed information about a specific token sale identified by its ID. It includes comprehensive details such as the sale's name, description, token count, and associated documents. This is crucial for investors and administrators who need in-depth information about a particular token sale.

Authorizations
Path parameters
tokenSaleIdstringRequired

Token sale ID

Responses
200
Token sale retrieved successfully
application/json
Responseall of
get
200

Token sale retrieved successfully

Retrieve past debt payouts for a token

get

This endpoint provides a list of past debt payouts for a specific token. It includes details such as actual payout dates and amounts. This is useful for investors and administrators to review historical payout activities.

Authorizations
Path parameters
storeIdstringRequired

Identifier of the store

tokenIdstringRequired

Identifier of the token

Query parameters
pageintegerOptional

Page number for pagination

limitintegerOptional

Number of items per page

Responses
200
Payouts retrieved successfully
application/json
Responseall of
401
Unauthorized User
application/json
get

Retrieve metadata for a token

get

This endpoint fetches metadata related to a specific token, including total investors, total tokens, and payout capabilities. This information is crucial for understanding the token's performance and payout potential.

Authorizations
Path parameters
storeIdstringRequired

Identifier of the store

tokenIdstringRequired

Identifier of the token

Query parameters
payoutIdstringOptional

Identifier of the payout for debt payouts

Responses
200
Metadata retrieved successfully
application/json
Responseall of
401
Unauthorized User
application/json
get

Retrieve equity payouts for a token

get

This endpoint provides a list of equity payouts associated with a specific token. It includes payout details such as amount, status, and pagination options. This is useful for investors and administrators to track payout activities and distributions.

Authorizations
Path parameters
storeIdstringRequired

Identifier of the store

tokenIdstringRequired

Identifier of the token

Query parameters
pageintegerOptional

Page number for pagination

limitintegerOptional

Number of items per page

Responses
200
Payouts retrieved successfully
application/json
Responseall of
401
Unauthorized User
application/json
get

Retrieve all investors

get

This endpoint provides a list of all investors registered on the platform. It includes pagination options for browsing through the investor list. This is essential for administrators and analysts to understand the investor base and demographics.

Authorizations
Query parameters
pageintegerOptional

Page number for pagination

limitintegerOptional

Number of items per page

Responses
200
Investors retrieved successfully
application/json
Responseall of
401
Unauthorized User
application/json
get

Retrieve investors for a specific token

get

This endpoint returns a list of investors who have invested in a specific token. It includes details such as token count, wallet address, and pagination options. This is crucial for understanding the investor distribution and engagement for a particular token.

Authorizations
Path parameters
tokenIdstringRequired

Identifier of the token

Query parameters
pageintegerOptional

Page number for pagination

limitintegerOptional

Number of items per page

Responses
200
Investors retrieved successfully
application/json
Responseall of
400
Invalid tokenId
application/json
401
Unauthorized User
application/json
get

Retrieve listing fee configuration for a token store

get

This endpoint retrieves the fee configuration for listing assets in a specific token store. It provides details about the fees required for listing, including currency and chain information. This is essential for store administrators to understand the cost implications of listing assets.

Authorizations
Path parameters
storeIdstringRequired

Store identifier

Query parameters
toCurrencystringRequired

Currency code to convert to

chainIdstringRequired

Blockchain chain identifier

Responses
200
Fee configuration retrieved successfully
application/json
get
200

Fee configuration retrieved successfully

Retrieve contract addresses for token minting

get

This endpoint provides the necessary contract addresses required for minting a specific token. It includes addresses for token and sale contracts, which are crucial for the tokenization process. This information is vital for developers and administrators managing token minting operations.

Authorizations
Path parameters
tokenIdstringRequired

Token identifier

Responses
200
Contract addresses retrieved successfully
application/json
get
200

Contract addresses retrieved successfully

Retrieve a list of supported countries

get

This endpoint returns a list of countries supported by the platform. It includes details such as country name, capital, currency, and language. This information is useful for users and administrators to understand the geographical reach and support of the platform.

Authorizations
Responses
200
Countries retrieved successfully
application/json
Responseall of
401
Unauthorized User
application/json
get

Retrieve all supported blockchain networks

get

This endpoint provides a list of all blockchain networks supported by the platform. It includes details such as chain name, ID, RPC URL, and currency. This is essential for developers and users to understand the available blockchain options for tokenization.

Authorizations
Responses
200
Chains retrieved successfully
application/json
Responseall of
401
Unauthorized User
application/json
get

Purchase tokens from a token sale

post

This endpoint facilitates the purchase of tokens from a specific token sale. It requires details such as the token sale ID, user wallet address, and purchase amount. Upon successful processing, the tokens are allocated to the user's account. This is essential for investors looking to acquire tokens from active sales.

Authorizations
Body
tokenSaleIdstringRequired

Identifier of the token sale

userAddressstringRequired

Wallet address of the user

amountnumber · floatRequired

Amount of tokens to purchase

currencyContractstringRequired

Currency contract address

timezonestringRequired

Timezone of the user

Responses
201
Tokens purchased successfully
application/json
post
POST /api/v/1/token-sales/buy HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 98

{
  "tokenSaleId": "text",
  "userAddress": "text",
  "amount": 1,
  "currencyContract": "text",
  "timezone": "text"
}
201

Tokens purchased successfully

{
  "status": "SUCCESS",
  "response": {
    "result": {
      "transactionId": "text",
      "tokenSaleId": "text",
      "amount": 1,
      "userAddress": "text",
      "status": "text"
    }
  }
}
GET /api/v/1/tokens/{tokenId}/token-sales HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": "SUCCESS",
  "response": {
    "sales": [
      {
        "id": "text",
        "tokenId": "text",
        "tokenName": "text",
        "tokenSymbol": "text",
        "name": "text",
        "description": "text",
        "startDate": "2025-05-25T01:04:05.268Z",
        "endDate": "2025-05-25T01:04:05.268Z",
        "payoutStartDate": "2025-05-25T01:04:05.268Z",
        "tokenCountOnSale": 1,
        "images": [
          {
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text"
          }
        ],
        "documents": [
          {
            "id": "text",
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text",
            "title": "text",
            "description": "text",
            "order": 1
          }
        ],
        "softCap": 1,
        "timezone": "text",
        "expectedReturns": 1,
        "totalSoldTokens": 1,
        "percentageTokenSold": 1,
        "createdAt": "2025-05-25T01:04:05.268Z",
        "updatedAt": "2025-05-25T01:04:05.268Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 1,
      "totalPages": 1,
      "totalItems": 1
    }
  }
}
GET /api/v/1/token-sales HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": "SUCCESS",
  "response": {
    "sales": [
      {
        "id": "text",
        "tokenId": "text",
        "tokenName": "text",
        "tokenSymbol": "text",
        "name": "text",
        "description": "text",
        "startDate": "2025-05-25T01:04:05.268Z",
        "endDate": "2025-05-25T01:04:05.268Z",
        "payoutStartDate": "2025-05-25T01:04:05.268Z",
        "tokenCountOnSale": 1,
        "images": [
          {
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text"
          }
        ],
        "documents": [
          {
            "id": "text",
            "name": "text",
            "size": 1,
            "type": "text",
            "url": "text",
            "title": "text",
            "description": "text",
            "order": 1
          }
        ],
        "softCap": 1,
        "timezone": "text",
        "expectedReturns": 1,
        "totalSoldTokens": 1,
        "percentageTokenSold": 1,
        "createdAt": "2025-05-25T01:04:05.268Z",
        "updatedAt": "2025-05-25T01:04:05.268Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 1,
      "totalPages": 1,
      "totalItems": 1
    }
  }
}
GET /api/v/1/token-sales/{tokenSaleId} HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "sale": {
      "id": "text",
      "tokenId": "text",
      "tokenName": "text",
      "tokenSymbol": "text",
      "name": "text",
      "description": "text",
      "startDate": "2025-05-25T01:04:05.268Z",
      "endDate": "2025-05-25T01:04:05.268Z",
      "payoutStartDate": "2025-05-25T01:04:05.268Z",
      "tokenCountOnSale": 1,
      "images": [
        {
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text"
        }
      ],
      "documents": [
        {
          "id": "text",
          "name": "text",
          "size": 1,
          "type": "text",
          "url": "text",
          "title": "text",
          "description": "text",
          "order": 1
        }
      ],
      "softCap": 1,
      "timezone": "text",
      "expectedReturns": 1,
      "totalSoldTokens": 1,
      "percentageTokenSold": 1,
      "createdAt": "2025-05-25T01:04:05.268Z",
      "updatedAt": "2025-05-25T01:04:05.268Z"
    }
  }
}

Initiate a payout for an equity token

post

This endpoint initiates a payout process for an equity token. It requires details such as token ID, payout name, and user wallet address. Upon successful initiation, the payout is processed and distributed to eligible investors.

Authorizations
Path parameters
storeIdstringRequired

Identifier of the store

tokenIdstringRequired

Identifier of the token

Body
tokenIdstringOptional

Unique identifier of the token

namestringOptional

Name of the payout

amountPerTokennumberOptional

Amount per token of the payout

userWalletAddressstringOptional

Wallet address of the user

timezonestringOptional

Timezone of the payout

Responses
200
Payout created successfully
application/json
Responseall of
401
Unauthorized User
application/json
post
POST /api/v/1/payouts/{storeId}/token/{tokenId} HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 187

{
  "tokenId": "text",
  "name": "text",
  "documents": [
    {
      "name": "text",
      "size": 1,
      "type": "text",
      "title": "text",
      "url": "text",
      "order": 1
    }
  ],
  "amountPerToken": 1,
  "userWalletAddress": "text",
  "timezone": "text"
}
{
  "status": 0,
  "response": {
    "payout": {
      "id": "text",
      "name": "text",
      "interest": 1,
      "amountPerToken": 1,
      "initiatedTo": 1,
      "status": "text",
      "payoutDate": "text",
      "totalAmount": 1
    }
  }
}

Initiate a payout for a debt token

post

This endpoint initiates a payout process for a debt token. It requires details such as token ID, payout ID, and user wallet address. Upon successful initiation, the payout is processed and distributed to eligible investors.

Authorizations
Path parameters
storeIdstringRequired

Identifier of the store

tokenIdstringRequired

Identifier of the token

Body
tokenIdstringOptional

Unique identifier of the token

payoutIdstringOptional

Unique identifier of the payout

userWalletAddressstringOptional

Wallet address of the user

timezonestringOptional

Timezone of the payout

Responses
200
Payout created successfully
application/json
Responseall of
401
Unauthorized User
application/json
post
POST /api/v/1/payouts/{storeId}/token/{tokenId}/debt HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 81

{
  "tokenId": "text",
  "payoutId": "text",
  "userWalletAddress": "text",
  "timezone": "text"
}
{
  "status": 0,
  "response": {
    "payout": {
      "id": "text",
      "name": "text",
      "interest": 1,
      "principal": 1,
      "totalAmount": 1
    }
  }
}
GET /api/v/1/payouts/{storeId}/token/{tokenId}/debt/past HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "payouts": [
      {
        "id": "text",
        "payoutDate": "text",
        "name": "text",
        "amount": 1,
        "totalAmount": 1,
        "initiatedTo": "text",
        "amountPerToken": 1,
        "status": 0,
        "token": {
          "id": "text",
          "name": "text"
        },
        "asset": {
          "id": "text",
          "name": "text"
        },
        "principalPerToken": 1,
        "interestPerToken": 1,
        "currency": "text",
        "createdDate": "text",
        "updatedDate": "text",
        "actualPayoutDate": "text"
      }
    ]
  },
  "pagination": {
    "page": 1,
    "limit": 1,
    "totalPages": 1,
    "totalItems": 1
  }
}
GET /api/v/1/payouts/{storeId}/token/{tokenId}/metadata HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "token": {
      "totalInvestors": 1,
      "totalTokens": 1,
      "totalPrincipal": 1,
      "totalInterest": 1,
      "totalAmount": 1,
      "totalDelayedInterest": 1,
      "tokenId": "text",
      "tokenContractAddress": "text",
      "USDCContract": "text",
      "network": "text",
      "canPayout": true,
      "canPayoutMessage": "text"
    }
  }
}
GET /api/v/1/payouts/{storeId}/token/{tokenId} HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "payouts": [
      {
        "id": "text",
        "payoutDate": "text",
        "name": "text",
        "amount": 1,
        "totalAmount": 1,
        "initiatedTo": "text",
        "amountPerToken": 1,
        "status": 0,
        "token": {
          "id": "text",
          "name": "text"
        },
        "asset": {
          "id": "text",
          "name": "text"
        },
        "principalPerToken": 1,
        "interestPerToken": 1,
        "currency": "text",
        "createdDate": "text",
        "updatedDate": "text"
      }
    ]
  },
  "pagination": {
    "page": 1,
    "limit": 1,
    "totalPages": 1,
    "totalItems": 1
  }
}

Register a new user

post

This endpoint registers a new user on the platform. It requires user details such as email and name. Upon successful registration, the user is added to the system and can participate in platform activities.

Authorizations
Body
emailstringRequired

Email address of the user

namestringRequired

Name of the user

Responses
200
User registered successfully
application/json
Responseall of
400
Bad Request
application/json
401
Unauthorized
application/json
post
POST /api/v/1/auth HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 30

{
  "email": "text",
  "name": "text"
}
{
  "status": 0,
  "response": {
    "message": "User registered successfully",
    "user": {
      "id": "text",
      "email": "text",
      "name": "text",
      "image": "text"
    }
  }
}

Update user information

patch

This endpoint updates the information of an existing user. It allows changes to user attributes such as name. This is useful for users who need to update their personal information on the platform.

Authorizations
Body
namestringOptional

Name of the user

Responses
200
User updated successfully
application/json
Responseall of
400
Bad Request
application/json
401
Unauthorized
application/json
patch
PATCH /api/v/1/auth HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "name": "text"
}
{
  "status": 0,
  "response": {
    "message": "User updated successfully",
    "user": {
      "id": "text",
      "email": "text",
      "name": "text",
      "image": "text"
    }
  }
}
GET /api/v/1/investors HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "investorsList": [
      {
        "id": "text",
        "name": "text",
        "email": "text",
        "country": "text",
        "kyc": "not_initiated",
        "tokens": 1,
        "pendingTokens": 1
      }
    ]
  },
  "pagination": {
    "page": 1,
    "limit": 1,
    "totalPages": 1,
    "totalItems": 1
  }
}
GET /api/v/1/investors/token/{tokenId} HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": {
    "investors": [
      {
        "id": "text",
        "name": "text",
        "email": "text",
        "country": "text",
        "kyc": "not_initiated",
        "tokens": 1,
        "pendingTokens": 1,
        "tokenChain": "text",
        "tokenCount": 1,
        "tokenIcon": "text",
        "tokenId": "text",
        "tokenName": "text",
        "tokenSymbol": "text",
        "tokenPercentage": 1,
        "burnTokenCount": 1,
        "walletId": "text"
      }
    ]
  },
  "pagination": {
    "page": 1,
    "limit": 1,
    "totalPages": 1,
    "totalItems": 1
  }
}

Upload an asset to IPFS

post

This endpoint uploads an asset to the InterPlanetary File System (IPFS), a decentralized storage network. It requires asset data, token data, and token sales data. Upon successful upload, the asset is stored on IPFS, making it accessible in a decentralized manner.

Authorizations
Path parameters
assetIdstringRequired

Identifier of the asset

Body
Responses
200
Asset uploaded to IPFS successfully
application/json
Responseall of
401
Unauthorized User
application/json
post
POST /api/v/1/assets/upload-to-ipfs/{assetId} HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 1327

{
  "assetData": {
    "id": "text",
    "assetCategory": 1,
    "investmentType": 1,
    "title": "text",
    "description": "text",
    "shortDescription": "text",
    "coverImage": "text",
    "constructionYear": 1,
    "numberOfBedrooms": 1,
    "propertyType": 1,
    "assetType": "text",
    "images": [
      {
        "name": "text",
        "size": 1,
        "type": "text",
        "url": "text"
      }
    ],
    "documents": [
      {
        "id": "text",
        "name": "text",
        "size": 1,
        "type": "text",
        "url": "text",
        "title": "text",
        "description": "text",
        "order": 1
      }
    ],
    "valuation": [
      {
        "id": "text",
        "name": "text",
        "size": 1,
        "type": "text",
        "url": "text",
        "title": "text",
        "description": "text",
        "order": 1
      }
    ],
    "address": {
      "address_1": "text",
      "address_2": "text",
      "google_place": "text",
      "city": "text",
      "zip_code": "text",
      "country": "text",
      "coords": {
        "lat": 1,
        "lng": 1
      }
    },
    "aboutTheIssuer": "text",
    "moreInfo": [
      {
        "title": "text",
        "description": "text"
      }
    ],
    "termsAndConditions": "text",
    "faqs": [
      {
        "question": "text",
        "answer": "text"
      }
    ],
    "timezone": "text"
  },
  "tokenData": {
    "id": "text",
    "price": 1
  },
  "tokenSalesData": {
    "id": "text",
    "tokenId": "text",
    "name": "text",
    "description": "text",
    "startDate": "2025-05-25T01:04:05.268Z",
    "endDate": "2025-05-25T01:04:05.268Z",
    "payoutStartDate": "2025-05-25T01:04:05.268Z",
    "tokenCountOnSale": 1,
    "images": [
      {
        "name": "text",
        "size": 1,
        "type": "text",
        "url": "text"
      }
    ],
    "documents": [
      {
        "id": "text",
        "name": "text",
        "size": 1,
        "type": "text",
        "url": "text",
        "title": "text",
        "description": "text",
        "order": 1
      }
    ],
    "softCap": 1,
    "timezone": "text"
  }
}
{
  "status": 0,
  "response": {
    "assetId": "text",
    "tokens": [
      {
        "name": "text",
        "id": "text",
        "cid": "text",
        "tokenAddress": "text",
        "issuerAddress": "text",
        "chainId": 1,
        "network": {
          "id": "text",
          "name": "text",
          "chainId": "text",
          "rpcUrl": "https://example.com",
          "explorerUrl": "https://example.com",
          "currency": "text",
          "store_id": "text",
          "created_by": "text",
          "updated_by": "text"
        }
      }
    ]
  }
}

Update token with IPFS data

patch

This endpoint updates a token with data stored on IPFS. It requires the asset ID and token data, including CID (Content Identifier). This is useful for ensuring that token data is consistent and up-to-date with its IPFS representation.

Authorizations
Path parameters
assetIdstringRequired

Identifier of the asset

Body
Responses
200
Asset updated on IPFS successfully
application/json
Responseall of
401
Unauthorized User
application/json
patch
PATCH /api/v/1/assets/upload-to-ipfs/{assetId} HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 39

{
  "tokens": [
    {
      "id": "text",
      "cid": "text"
    }
  ]
}
{
  "status": 0,
  "response": {
    "assetId": "text",
    "updatedTokens": [
      "text"
    ]
  }
}
GET /api/v/1/config/store/{storeId}/fee HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": "SUCCESS",
  "response": {
    "config": {
      "listingFee": 1,
      "currency": "text",
      "tRexContractAddress": "text",
      "buybackFee": 1,
      "transactionFee": 1,
      "p2pFee": 1,
      "id": "text",
      "name": "text",
      "type": "text"
    }
  }
}
GET /api/v/1/config/contract-addresses/{tokenId} HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": "SUCCESS",
  "response": {
    "config": {
      "tokenContract": "text",
      "saleContract": "text"
    }
  }
}
GET /api/v/1/countries HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": [
    {
      "_id": "text",
      "name": "text",
      "capital": "text",
      "currency": {
        "code": "text",
        "name": "text",
        "symbol": "text",
        "_id": "text"
      },
      "language": {
        "name": "text",
        "code": "text",
        "_id": "text"
      },
      "flag": "text",
      "dial_code": "text",
      "iso2": "text",
      "iso3": "text",
      "code": "text",
      "status": 1
    }
  ]
}
GET /api/v/1/chains HTTP/1.1
Host: localhost:5004
x-api-key: YOUR_API_KEY
Accept: */*
{
  "status": 0,
  "response": [
    {
      "id": "text",
      "name": "text",
      "chainId": "text",
      "rpcUrl": "https://example.com",
      "explorerUrl": "https://example.com",
      "currency": "text",
      "store_id": "text",
      "created_by": "text",
      "updated_by": "text"
    }
  ]
}