Spiko Portfolios API
The Portfolios API from Spiko — 1 operation(s) for portfolios.
The Portfolios API from Spiko — 1 operation(s) for portfolios.
openapi: 3.1.0
info:
title: Spiko Distributor Account transactions Portfolios API
version: v0
description: The Distributor API allows third parties like SaaS providers, fintechs or Web3 companies to distribute the Spiko Funds to their customers. With this API, you can programmatically manage investors, send subscription and redemption orders, and access real-time portfolio information.
servers:
- url: https://distributor-api.spiko.io
description: Production Server
- url: https://distributor-api.preprod.spiko.io
description: Pre-production Server
security: []
tags:
- name: Portfolios
paths:
/v0/portfolios/:
get:
tags:
- Portfolios
operationId: portfolios.getPortfolio
parameters:
- name: investorId
in: query
schema:
type: string
description: a Universally Unique Identifier
format: uuid
required: true
description: a Universally Unique Identifier
security:
- basicAuth: []
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- items
- totalGainSinceStart
properties:
items:
type: array
items:
type: object
required:
- investorId
- accountId
- shareClassId
- network
- walletAddress
- totalNumberOfShares
- currentValue
- isCustodialWallet
- pending
- projectedBalance
- projectedBalanceInShares
- withdrawableBalance
- withdrawableBalanceInShares
properties:
investorId:
type: string
description: a Universally Unique Identifier
format: uuid
accountId:
type: string
description: a Universally Unique Identifier
format: uuid
shareClassId:
type: string
description: a Universally Unique Identifier
format: uuid
network:
$ref: '#/components/schemas/Network'
walletAddress:
anyOf:
- type: string
title: Ethereum address
description: a valid Ethereum address, starting with 0x and followed by 40 hexadecimal characters e.g. "0xb794f5ea0ba39494ce839613fffba74279579268"
- title: StarknetAddress
type: string
description: a valid Starknet address, starting with 0x and followed by 64 hexadecimal characters e.g. "0x0000000000000000000000000000000000000000000000000000000000000000"
- anyOf:
- title: StellarAccountAddress
type: string
description: a valid Stellar account address, starting with G and followed by 55 hexadecimal characters e.g. "GBYIQXBKEB655EB3WTRITS6RR5GXEP6SQRBLPREZHNFYKT7WBMTMPR3H"
- title: StellarContractAddress
type: string
description: a valid Stellar contract address, starting with C and followed by 55 hexadecimal characters e.g. "CCAANR7HZNOXYZD7SXS2WQLV5BAOXSRZ7V4O43IANSB355QN2RNG7WVC"
- type: string
title: Solana address
description: a valid Solana address, consisting of 32 to 44 base58 characters
totalNumberOfShares:
$ref: '#/components/schemas/BigDecimal'
currentValue:
$ref: '#/components/schemas/NonNegativeAmount'
isCustodialWallet:
type: boolean
pending:
type: object
required:
- credit
- debit
properties:
credit:
type: object
required:
- numberOfSubscriptions
- amount
- approximated
properties:
numberOfSubscriptions:
$ref: '#/components/schemas/NonNegativeInt'
amount:
$ref: '#/components/schemas/NonNegativeAmount'
approximated:
type: boolean
additionalProperties: false
debit:
type: object
required:
- numberOfRedemptions
- approximated
- amount
properties:
numberOfRedemptions:
$ref: '#/components/schemas/NonNegativeInt'
approximated:
type: boolean
amount:
$ref: '#/components/schemas/NonNegativeAmount'
additionalProperties: false
additionalProperties: false
projectedBalance:
$ref: '#/components/schemas/NonNegativeAmount'
projectedBalanceInShares:
type: string
title: non-negative decimal number as a string
description: a string representation of a non-negative decimal number e.g. "10000", "0.00" or "3420.92"
withdrawableBalance:
$ref: '#/components/schemas/NonNegativeAmount'
withdrawableBalanceInShares:
type: string
title: non-negative decimal number as a string
description: a string representation of a non-negative decimal number e.g. "10000", "0.00" or "3420.92"
virtualIban:
title: IBAN
type: string
description: a valid IBAN (International Bank Account Number)
bic:
type: string
depositIbanLines:
type: array
items:
type: object
required:
- label
- value
properties:
label:
type: string
value:
type: string
tooltip:
type: string
additionalProperties: false
cashCollectionBankAccountBeneficiaryName:
$ref: '#/components/schemas/NonEmptyString'
additionalProperties: false
totalGainSinceStart:
type: array
items:
type: object
required:
- investorId
- accountId
- shareClassId
- totalGainAmount
properties:
investorId:
type: string
description: a Universally Unique Identifier
format: uuid
accountId:
type: string
description: a Universally Unique Identifier
format: uuid
shareClassId:
type: string
description: a Universally Unique Identifier
format: uuid
totalGainAmount:
$ref: '#/components/schemas/Amount'
additionalProperties: false
additionalProperties: false
'400':
description: The request did not match the expected schema
content:
application/json:
schema:
$ref: '#/components/schemas/HttpApiDecodeError'
'401':
description: Unauthorized
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/Unauthorized'
- $ref: '#/components/schemas/DistributorAuthenticationError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: NotFound
description: Retrieve a view of an investor's investment portfolio, including current asset values, asset allocation, and performance metrics.
summary: Get portfolio
components:
schemas:
Amount:
type: object
required:
- value
- currency
properties:
value:
type: string
title: decimal number as a string
description: a string representation of a decimal number e.g. "10000", "0.00" or "-7432092.04"
currency:
type: string
enum:
- EUR
- USD
- GBP
- CHF
- JPY
- SGD
title: Currency code
identifier: CurrencyCode
description: a currency code among "EUR", "USD", "GBP", "CHF", "JPY", "SGD"
additionalProperties: false
ForbiddenError:
type: object
required:
- reason
- _tag
properties:
reason:
type: string
customErrorCode:
type: string
enum:
- AccountDoesNotBelongToInvestor
- SessionIsNot2FA
- InvestorDocumentLinkedToActiveBankAccount
- AtLeastTwoAdminUsersRequired
- InvestorNotPendingOnboarding
- ShareClassNotAvailableForDistributor
_tag:
type: string
enum:
- ForbiddenError
additionalProperties: false
description: Forbidden
NonNegativeInt:
type: integer
description: an integer
title: int
minimum: 0
HttpApiDecodeError:
type: object
required:
- issues
- message
- _tag
properties:
issues:
type: array
items:
$ref: '#/components/schemas/Issue'
message:
type: string
_tag:
type: string
enum:
- HttpApiDecodeError
additionalProperties: false
description: The request did not match the expected schema
Issue:
type: object
required:
- _tag
- path
- message
properties:
_tag:
type: string
enum:
- Pointer
- Unexpected
- Missing
- Composite
- Refinement
- Transformation
- Type
- Forbidden
description: The tag identifying the type of parse issue
path:
type: array
items:
$ref: '#/components/schemas/PropertyKey'
description: The path to the property where the issue occurred
message:
type: string
description: A descriptive message explaining the issue
additionalProperties: false
description: Represents an error encountered while parsing a value to match the schema
NonEmptyString:
type: string
description: a non empty string
title: nonEmptyString
minLength: 1
PropertyKey:
anyOf:
- type: string
- type: number
- type: object
required:
- _tag
- key
properties:
_tag:
type: string
enum:
- symbol
key:
type: string
additionalProperties: false
description: an object to be decoded into a globally shared symbol
DistributorAuthenticationError:
type: object
required:
- reason
- _tag
properties:
reason:
type: string
_tag:
type: string
enum:
- DistributorAuthenticationError
additionalProperties: false
description: Authentication Error
NonNegativeAmount:
type: object
required:
- value
- currency
properties:
value:
type: string
title: non-negative decimal number as a string
description: a string representation of a non-negative decimal number e.g. "10000", "0.00" or "3420.92"
currency:
type: string
enum:
- EUR
- USD
- GBP
- CHF
- JPY
- SGD
title: Currency code
identifier: CurrencyCode
description: a currency code among "EUR", "USD", "GBP", "CHF", "JPY", "SGD"
additionalProperties: false
title: Non-Negative Amount
BigDecimal:
type: string
description: a string to be decoded into a BigDecimal
Unauthorized:
$id: /schemas/void
title: Unauthorized
Network:
type: string
enum:
- Sepolia
- PolygonAmoy
- BaseSepolia
- ArbitrumSepolia
- EtherlinkTestnet
- Ethereum
- Polygon
- Base
- Arbitrum
- Etherlink
- Starknet
- StarknetSepolia
- Stellar
- StellarTestnet
- Solana
- SolanaDevnet
description: a blockchain network e.g. "Ethereum", "Polygon", "Arbitrum", "Starknet"
title: Network
securitySchemes:
basicAuth:
type: http
scheme: basic
description: Use your API client_id as username and client_secret as password.