SAP CAP plugin for Cardano blockchain OData V4 integration
npm install @odatano/corebash
npm install @odatano/core @cap-js/sqlite
`
Configure in your package.json:
`json
{
"cds": {
"requires": {
"db": { "kind": "sqlite" },
"odatano-core": {
"network": "preview",
"backends": ["blockfrost"],
"blockfrostApiKey": "preview_YOUR_KEY"
}
}
}
}
`
`bash
cds watch
→ CardanoODataService + CardanoTransactionService auto-registered
→ /odata/v4/cardano-odata/ and /odata/v4/cardano-transaction/ ready
`
$3
`bash
git clone https://github.com/ODATANO/ODATANO && cd ODATANO
cp .env.example .env # Add your BLOCKFROST_KEY
docker-compose up -d
`
Service runs at http://localhost:4004
$3
`bash
git clone https://github.com/ODATANO/ODATANO && cd ODATANO
npm ci
cp .env.example .env # Add your BLOCKFROST_KEY
cds deploy --to sqlite
npm run cds:watch
`
See Quick Start Guide for detailed setup instructions.
Usage Examples
Read Operations (M1):
`bash
Query transaction
curl "http://localhost:4004/odata/v4/cardano-odata/Transactions('tx_hash')"
Address with OData expand for assets
curl "http://localhost:4004/odata/v4/cardano-odata/Addresses('addr_test1...')?\$expand=assets"
`
Transaction Operations (M2):
`bash
Build ADA transfer (returns buildId and unsigned CBOR)
curl -X POST http://localhost:4004/odata/v4/cardano-transaction/BuildSimpleAdaTransaction \
-H "Content-Type: application/json" \
-d '{"senderAddress":"addr_test1...","recipientAddress":"addr_test1...","lovelaceAmount":10000000}'
Submit signed transaction (using buildId from build response)
curl -X POST http://localhost:4004/odata/v4/cardano-transaction/SubmitTransaction \
-H "Content-Type: application/json" \
-d '{"buildId":"uuid-from-build-response","signedTxCbor":"84a400..."}'
`
External Signing Operations (M3):
`bash
Build transaction with external signing (returns buildId and unsigned CBOR)
curl -X POST http://localhost:4004/odata/v4/cardano-transaction/CreateSigningRequest \
-H "Content-Type: application/json" \
-d '{"buildId":"uuid-from-build-response"}'
Submit externally signed transaction
curl -X POST http://localhost:4004/odata/v4/cardano-transaction/SubmitVerifiedTransaction \
-H "Content-Type: application/json" \
-d '{"buildId":"uuid-from-build-response","signedTxCbor":"84a400..."}'
`
See User Guide for complete API reference.
Testing
`bash
npm test # Run all 978 tests
npm run test:coverage # With coverage report
npm run test:integration # Integration tests only
npm run test:unit # Unit tests only
`
See Test Documentation for details.
Documentation
| Guide | Description |
|-------|-------------|
| Quick Start | Get running in 5 minutes |
| User Guide | API usage, entities, and examples |
| Developer Guide | Architecture and development |
| Transaction Workflow | Build → Sign → Submit flow (M2) |
| Docker Deployment | Container deployment |
| Data Model | Entity relationships |
| Error Handling | Error codes and handling |
| Test Documentation | Test suite overview (978 tests) |
Postman Collections:
- M1 - Read Operations
- M2 - Transaction Operations
API Overview
$3
18 Entities: NetworkInformation, Blocks, Epochs, Transactions, TransactionInputs, TransactionOutputs, TransactionInputAssets, TransactionOutputAssets, TransactionMetadata, Addresses, AddressAssets, AddressUTxOs, AddressTransactions, UTxOAssets, Pools, Accounts, Dreps, LedgerProtocolParameters
15 Actions: GetNetworkInformation, GetBlockByHash, GetEpochByNumber, GetTransactionByHash, GetMetadataByTxHash, GetAddressByBech32, GetUTxOsByAddress, GetAssetsByAddress, GetPoolById, GetAccountByStakeAddress, GetDrepById, GetLatestTransactionsByAddress, GetLatestBlock, GetLatestEpoch, GetLedgerProtocolParameters
$3
7 Entities: TransactionBuilds, TransactionBuildInputs, TransactionBuildOutputs, TransactionBuildInputAssets, TransactionBuildOutputAssets, TransactionSubmissions, TransactionSubmissionErrors
8 Actions: BuildSimpleAdaTransaction, BuildTransactionWithMetadata, BuildMultiAssetTransaction, BuildMintTransaction, SubmitTransaction, SubmitSignedTransaction, GetBuildDetails, CheckSubmissionStatus
$3
4 Entities: SigningRequests, SignatureVerifications, AddressTransactionBuilds, AddressSigningRequests
8 Actions: CreateSigningRequest, GetSigningRequest, VerifySignature, SubmitVerifiedTransaction, GetSigningRequestsByAddress, GetTransactionBuildsByAddress, BuildPlutusSpendTransaction, SetCollateral
See User Guide for complete API reference with parameters.
npm Package
Published as @odatano/core` on npm. See the Developer Guide for detailed plugin architecture documentation.