Spiko Portfolios API

The Portfolios API from Spiko — 1 operation(s) for portfolios.

OpenAPI Specification

spiko-portfolios-api-openapi.yml Raw ↑
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.