Generate Report
This endpoint generates a report for a portfolio and returns the result in JSON format.
For file downloads, see Export Report.
Endpoint
JSON response
GET https://cloud-gateway.dmo.app.pantaindex.com/api/v1/report-service/report/generate/portfolio/{portfolioId}
Authentication
This endpoint requires authentication. See Authentication for details on how to obtain an access token.
Required headers
| Header | Required | Description |
|---|---|---|
Authorization |
Yes | Bearer access token |
X-CLIENT-ID |
Yes | Your tenant/client ID |
Path parameter
| Name | Type | Required | Description |
|---|---|---|---|
portfolioId |
Integer | Yes | Portfolio identifier |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
reportType |
String | Yes | Type of report to generate. Supported values: index, constituent.close, constituent.open, constituent.proforma |
date |
Date (YYYY-MM-DD) |
Yes | Report date |
Example request
curl --request GET \
--url "https://cloud-gateway.dmo.app.pantaindex.com/api/v1/report-service/report/generate/portfolio/1?reportType=index&date=2023-06-26" \
--header "X-CLIENT-ID: YOUR_TENANT_ID" \
--header "Authorization: Bearer YOUR_ACCESS_TOKEN"
Example response
reportType=index
{
"report": [
{
"effectiveDate": "2023-06-29",
"indexId": "9c0c3626-a798-4374-b955-a3835e6ddcc4",
"indexName": "Example 600 OG EUR",
"indexValue": 1302.917413,
"currency": "EUR",
"closeMarketValue": 13029174,
"openMarketValue": 13029174,
...
},
...
]
}
reportType=constituent.close
{
"report": [
{
"effectiveDate": "2023-06-29",
"isin": "EU0009654569",
"securityName": "STOXX Example 600 OIL & GAS NET EUR",
"securityTicker": "SXER Index",
"closingPrice": 996.57944,
"currency": "EUR",
"closingFx": 1,
"indexShares": 6549.996509,
"indexWeighting": 0.500998,
...
},
...
]
}
constituent.open, constituent.proforma, and constituent.close use the same general response structure, but the returned fields may differ depending on the report configuration.
Full workflow (cURL)
TOKEN=$(curl -s -X POST \
"https://login.dmo.app.pantaindex.com/realms/panta-technology/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "grant_type=password" \
-d "username=YOUR_USERNAME" \
-d "password=YOUR_PASSWORD" \
| jq -r .access_token)
curl --request GET \
--url "https://cloud-gateway.dmo.app.pantaindex.com/api/v1/report-service/report/generate/portfolio/1?reportType=index&date=2023-06-26" \
--header "X-CLIENT-ID: YOUR_TENANT_ID" \
--header "Authorization: Bearer $TOKEN"
JavaScript / TypeScript example
async function callPantaApi(clientId, portfolioId) {
const authResponse = await fetch(
"https://login.dmo.app.pantaindex.com/realms/panta-technology/protocol/openid-connect/token",
{
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
client_id: "YOUR_CLIENT_ID",
client_secret: "YOUR_CLIENT_SECRET",
grant_type: "password",
username: "YOUR_USERNAME",
password: "YOUR_PASSWORD",
}),
}
);
if (!authResponse.ok) {
throw new Error(`Authentication failed: ${authResponse.status}`);
}
const { access_token: token } = await authResponse.json();
const apiResponse = await fetch(
`https://cloud-gateway.dmo.app.pantaindex.com/api/v1/report-service/report/generate/portfolio/${portfolioId}?reportType=index&date=2023-06-26`,
{
method: "GET",
headers: {
"X-CLIENT-ID": clientId,
"Authorization": `Bearer ${token}`,
},
}
);
if (!apiResponse.ok) {
throw new Error(`API request failed: ${apiResponse.status}`);
}
return apiResponse.json();
}
callPantaApi("YOUR_TENANT_ID", 1).then(console.log).catch(console.error);
Rate limits
This endpoint is limited to 4 requests per 60 seconds.
If you receive 429 Too Many Requests, wait briefly and retry.
Error handling
| Status Code | Meaning | Action |
|---|---|---|
200 OK |
Success | Parse the JSON response body |
400 Bad Request |
Malformed request | Check request parameters and request format |
401 Unauthorized |
Invalid or expired token | Re-authenticate to obtain a new token |
403 Forbidden |
Insufficient permissions | Verify your tenant ID and account permissions |
404 Not Found |
Resource not found | Check the portfolio ID or endpoint path |
429 Too Many Requests |
Rate limit exceeded | Wait briefly and retry the request |
500 Internal Server Error |
Server-side issue | Retry after a short delay; contact support if persistent |
Support
If you have any questions about your integration or encounter issues not covered in this guide, please reach out to your Panta account manager or contact:
support@pantaindex.com
Notes
- The response body for the JSON endpoint contains a top-level
reportarray. - The exact fields returned in each report row depend on the selected
reportTypeand the configured report definition. - For the generated contract and schemas, see API Reference.