List Customer Portfolios
curl --request GET \
--url https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id} \
--header 'X-Auth-Token: <x-auth-token>' \
--header 'platform: <platform>' \
--header 'uuid: <uuid>' \
--header 'x-idempotency-key: <x-idempotency-key>'import requests
url = "https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}"
headers = {
"platform": "<platform>",
"uuid": "<uuid>",
"X-Auth-Token": "<x-auth-token>",
"x-idempotency-key": "<x-idempotency-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
platform: '<platform>',
uuid: '<uuid>',
'X-Auth-Token': '<x-auth-token>',
'x-idempotency-key': '<x-idempotency-key>'
}
};
fetch('https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Auth-Token: <x-auth-token>",
"platform: <platform>",
"uuid: <uuid>",
"x-idempotency-key: <x-idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("platform", "<platform>")
req.Header.Add("uuid", "<uuid>")
req.Header.Add("X-Auth-Token", "<x-auth-token>")
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}")
.header("platform", "<platform>")
.header("uuid", "<uuid>")
.header("X-Auth-Token", "<x-auth-token>")
.header("x-idempotency-key", "<x-idempotency-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["platform"] = '<platform>'
request["uuid"] = '<uuid>'
request["X-Auth-Token"] = '<x-auth-token>'
request["x-idempotency-key"] = '<x-idempotency-key>'
response = http.request(request)
puts response.read_bodyAPI Endpoints
List Customer Portfolios
Retrieves a paginated list of all investment portfolios for a customer.
GET
/
portfolios
/
{customer-id}
List Customer Portfolios
curl --request GET \
--url https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id} \
--header 'X-Auth-Token: <x-auth-token>' \
--header 'platform: <platform>' \
--header 'uuid: <uuid>' \
--header 'x-idempotency-key: <x-idempotency-key>'import requests
url = "https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}"
headers = {
"platform": "<platform>",
"uuid": "<uuid>",
"X-Auth-Token": "<x-auth-token>",
"x-idempotency-key": "<x-idempotency-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
platform: '<platform>',
uuid: '<uuid>',
'X-Auth-Token': '<x-auth-token>',
'x-idempotency-key': '<x-idempotency-key>'
}
};
fetch('https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Auth-Token: <x-auth-token>",
"platform: <platform>",
"uuid: <uuid>",
"x-idempotency-key: <x-idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("platform", "<platform>")
req.Header.Add("uuid", "<uuid>")
req.Header.Add("X-Auth-Token", "<x-auth-token>")
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}")
.header("platform", "<platform>")
.header("uuid", "<uuid>")
.header("X-Auth-Token", "<x-auth-token>")
.header("x-idempotency-key", "<x-idempotency-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://test-investment-products-service.fincode.software/api/v1/user/portfolios/{customer-id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["platform"] = '<platform>'
request["uuid"] = '<uuid>'
request["X-Auth-Token"] = '<x-auth-token>'
request["x-idempotency-key"] = '<x-idempotency-key>'
response = http.request(request)
puts response.read_bodyFetches all investment portfolios associated with a customer, including details about each investment such as amount invested, total payable, and product information.
Request Headers
string
required
The JWT Access Token obtained from the
/login or /refresh-token endpoint.string
required
Unique idempotency key for the request to prevent duplicate processing.
string
required
The date and time at which the request was initiated (ISO 8601 format).
string
required
The IP address of the customer making the request.
string
required
Unique identifier for the interaction/session.
Path Parameters
string
required
The unique identifier (UUID) of the customer whose portfolios to retrieve.
Query Parameters
number
default:"1"
Page number for pagination (starts from 1).
number
default:"10"
Number of items per page (maximum recommended: 50).
Code Examples
curl --location 'https://test-investment-products-service.fincode.software/api/v1/user/portfolios/123e4567-e89b-12d3-a456-426614174000?page=1&size=10' \
--header 'X-Auth-Token: YOUR_JWT_ACCESS_TOKEN' \
--header 'x-idempotency-key: unique-key-12345' \
--header 'x-fapi-auth-date: 2024-01-15T10:30:00Z' \
--header 'x-fapi-customer-ip-address: 192.168.1.1' \
--header 'x-fapi-interaction-id: interaction-12345'
const axios = require('axios');
const BASE_URL = 'https://test-investment-products-service.fincode.software/api/v1/user';
async function listPortfolios(accessToken, customerId, page = 1, size = 10) {
try {
const response = await axios.get(
`${BASE_URL}/portfolios/${customerId}`,
{
params: {
page,
size,
},
headers: {
'X-Auth-Token': accessToken,
'x-idempotency-key': `key-${Date.now()}`,
'x-fapi-auth-date': new Date().toISOString(),
'x-fapi-customer-ip-address': '192.168.1.1',
'x-fapi-interaction-id': `interaction-${Date.now()}`,
},
}
);
const portfolios = response.data.data;
console.log(`Found ${portfolios.length} portfolios`);
portfolios.forEach((portfolio) => {
console.log(
`- ${portfolio.productName}: ${portfolio.amountInvested} ` +
`(APY: ${portfolio.annualPercentageYield}%)`
);
});
return portfolios;
} catch (error) {
console.error(
'Failed to fetch portfolios:',
error.response?.data || error.message
);
throw error;
}
}
⌘I
