Skip to content

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 report array.
  • The exact fields returned in each report row depend on the selected reportType and the configured report definition.
  • For the generated contract and schemas, see API Reference.