{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/sentisense-ai/json-schema/sentisense-ai-get-api-v1-etfs-ticker-holdings-response-schema.json",
  "title": "GetApiV1EtfsTickerHoldingsResponse",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_ae-authored/sentisense-ai-openapi-generated.yml#/components/schemas/GetApiV1EtfsTickerHoldingsResponse",
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Fund ticker"
    },
    "issuer": {
      "type": "string",
      "description": "Fund issuer"
    },
    "issuerEndpoint": {
      "type": "string",
      "description": "Data source attribution, always SentiSense"
    },
    "asOfDate": {
      "type": "string",
      "description": "Composition snapshot date from the issuer (ISO date YYYY-MM-DD )"
    },
    "fetchedAt": {
      "type": "string",
      "description": "When SentiSense refreshed the composition (epoch seconds)"
    },
    "nextRefreshDue": {
      "type": "string",
      "description": "When the composition is scheduled to be refreshed next (ISO date YYYY-MM-DD )"
    },
    "totalHoldings": {
      "type": "integer",
      "description": "Number of holdings in the visible composition"
    },
    "holdings": {
      "type": "array",
      "description": "Per-holding rows"
    },
    "partial": {
      "type": "boolean",
      "description": "true when the composition is a top‑N view rather than the full fund"
    },
    "totalKnownHoldings": {
      "type": "integer",
      "description": "Issuer's reported total holdings when partial=true"
    }
  }
}