{"openapi":"3.1.0","info":{"title":"LedgiFi Fondos API","version":"1.0.0","description":"Chilean mutual and investment fund data, without investment advice. Daily dates use YYYY-MM-DD; portfolios use YYYY-MM. API key with fondos:read permission, enabled by email; quotas are shared across the customer keys. base=native|CLP|USD|UF selects the return and risk base without changing NAV or net assets. Returns measure changes in NAV, as percentages and without reinvesting distributions. For bulk history or the entire market, use GET /downloads (CSV.gz per publication with native, CLP, USD and UF NAV).","contact":{"email":"help@ledgifi.com"}},"servers":[{"url":"https://ledgifi.com/api/fondos/v1"}],"paths":{"/downloads":{"get":{"summary":"Available files","description":"Lists NAV snapshots and full history as CSV.gz for active FFMM/FI publications, with native, CLP, USD and UF NAV, plus portfolio with every position from the monthly FFMM portfolio source. Portfolio has its own version tied to its source file; a new NAV cutoff does not change that version. columns is the header of each file. Files are prepared during ingestion or publication, never during the request. data.pending identifies files that are not yet available. Retain id, publicationId, asOf, bytes and SHA256 for each file: portfolio uses YYYY-MM and each row retains its month; NAV uses YYYY-MM-DD.","operationId":"listDownloads","security":[{"apiKey":[]}],"parameters":[],"responses":{"200":{"description":"Published data in data and provenance/cutoff metadata in meta. null means absence, not zero. Details and units depend on the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Downloads"},"example":{"data":{"files":[{"schemaVersion":2,"id":"FFMM.ffmm-example-2026-03-31.snapshot","vehicle":"FFMM","publicationId":"ffmm-example-2026-03-31","asOf":"2026-03-31","dataset":"snapshot","format":"csv.gz","filename":"ffmm-example-snapshot.csv.gz","bytes":500,"rows":2,"sha256":"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","columns":["run","serie","vehicle","fundName","agf","category","clase","source","status","date","nav","currency","navClp","navUsd","navUf","netAssets","netAssetsCurrency","shareholders"]},{"schemaVersion":2,"id":"FFMM.ffmm-example-2026-03-31.history","vehicle":"FFMM","publicationId":"ffmm-example-2026-03-31","asOf":"2026-03-31","dataset":"history","format":"csv.gz","filename":"ffmm-example-history.csv.gz","bytes":10000,"rows":732,"sha256":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd","columns":["run","serie","vehicle","fundName","agf","category","clase","source","status","date","nav","currency","navClp","navUsd","navUf","netAssets","netAssetsCurrency","shareholders"]},{"schemaVersion":2,"id":"FFMM.carteras-v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.portfolio","vehicle":"FFMM","publicationId":"carteras-v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","asOf":"2026-03","dataset":"portfolio","format":"csv.gz","filename":"carteras-v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-portfolio.csv.gz","bytes":500000,"rows":20000,"sha256":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","columns":["run","asOf","source","name","ticker","issuerRun","country","instrumentType","share"]}],"pending":[]},"meta":{"asOf":null,"publicationId":"ffmm-example-2026-03-31:carteras-v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","publications":[{"vehicle":"FFMM","asOf":"2026-03-31","publicationId":"ffmm-example-2026-03-31"}],"source":[{"source":"cmf","attribution":"Source: Comisión para el Mercado Financiero (CMF). Data processed by LedgiFi.","url":"https://www.cmfchile.cl/","status":"active"}]}}}}},"400":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Invalid parameters","status":400,"detail":"Unknown query parameter: unexpected.","code":"INVALID_PARAMETERS"}}}},"401":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","headers":{"WWW-Authenticate":{"description":"Bearer scheme required to authenticate the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"Send Authorization: Bearer <api_key>.","code":"UNAUTHORIZED"}}}},"403":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Permission required","status":403,"detail":"The API key does not have fondos:read permission.","code":"ACCESS_DENIED"}}}},"404":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Not found","status":404,"detail":"No published resource matches this identifier.","code":"NOT_FOUND"}}}},"429":{"description":"Customer quota exceeded. Wait for the Retry-After duration in seconds before retrying. For bulk history or the entire market, use GET /downloads (CSV.gz per publication with native, CLP, USD and UF NAV).","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Rate limit exceeded","status":429,"detail":"The customer request quota has been exceeded.","code":"QUOTA_EXCEEDED"}}}},"503":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Service unavailable","status":503,"detail":"The data service is temporarily unavailable.","code":"SERVICE_UNAVAILABLE"}}}}}}},"/downloads/{id}":{"get":{"summary":"Download link","description":"Copy id from data.files[] in GET /downloads. Returns a read-only downloadUrl for that exact file, valid until expiresAt (up to 15 minutes), and metadata to verify it. Download that URL without sending Authorization or your API key. The link cannot write or access other files; it remains valid until expiration even if the key is revoked. 404: refresh the listing if the publication changed. This response uses Cache-Control: private, no-store.","operationId":"getDownloadLink","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^(FFMM|FI)\\.[a-zA-Z0-9_-]{1,150}\\.(snapshot|history|portfolio)$"}}],"responses":{"200":{"description":"Published data in data and provenance/cutoff metadata in meta. null means absence, not zero. Details and units depend on the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Download"},"example":{"data":{"schemaVersion":2,"id":"FFMM.carteras-v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.portfolio","vehicle":"FFMM","publicationId":"carteras-v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","asOf":"2026-03","dataset":"portfolio","format":"csv.gz","filename":"carteras-v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-portfolio.csv.gz","bytes":500000,"rows":20000,"sha256":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","downloadUrl":"https://downloads.example.invalid/portfolio.csv.gz?signature=EXAMPLE","expiresAt":"2026-04-01T12:15:00Z"},"meta":{"asOf":null,"publicationId":"carteras-v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","publications":[],"source":[{"source":"cmf","attribution":"Source: Comisión para el Mercado Financiero (CMF). Data processed by LedgiFi.","url":"https://www.cmfchile.cl/","status":"active"}]}}}}},"400":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Invalid parameters","status":400,"detail":"Unknown query parameter: unexpected.","code":"INVALID_PARAMETERS"}}}},"401":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","headers":{"WWW-Authenticate":{"description":"Bearer scheme required to authenticate the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"Send Authorization: Bearer <api_key>.","code":"UNAUTHORIZED"}}}},"403":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Permission required","status":403,"detail":"The API key does not have fondos:read permission.","code":"ACCESS_DENIED"}}}},"404":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Not found","status":404,"detail":"No published resource matches this identifier.","code":"NOT_FOUND"}}}},"429":{"description":"Customer quota exceeded. Wait for the Retry-After duration in seconds before retrying. For bulk history or the entire market, use GET /downloads (CSV.gz per publication with native, CLP, USD and UF NAV).","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Rate limit exceeded","status":429,"detail":"The customer request quota has been exceeded.","code":"QUOTA_EXCEEDED"}}}},"503":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Service unavailable","status":503,"detail":"The data service is temporarily unavailable.","code":"SERVICE_UNAVAILABLE"}}}}}}},"/meta":{"get":{"summary":"Full funds catalog","description":"Full catalog in data.catalog, grouped by fund: run, name, agf, vehicle, source and series. Each series includes serie, ticker, currency, clase, from and asOf. from is the first historical observation recorded by the publication and asOf is the latest NAV observation; neither guarantees continuity. ticker is a registered trading symbol, without a guarantee of an active exchange listing; null when unavailable. Includes categories and fund managers in data, and publication cutoffs in meta.","operationId":"getDatasetInfo","security":[{"apiKey":[]}],"parameters":[],"responses":{"200":{"description":"Published data in data and provenance/cutoff metadata in meta. null means absence, not zero. Details and units depend on the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Meta"},"example":{"data":{"version":"v1","catalog":[{"run":"12345","name":"Example USD Fund","agf":"Example Fund Manager","vehicle":"FFMM","source":"cmf","series":[{"serie":"A","currency":"USD","clase":"Retail","ticker":null,"from":"2021-09-01","asOf":"2026-03-31"},{"serie":"APV","currency":"USD","clase":"APV","ticker":null,"from":"2021-09-01","asOf":"2026-03-31"}]}],"categories":["USD debt under 90 days"],"agfs":["Example Fund Manager"]},"meta":{"asOf":"2026-03-31","publicationId":"ffmm-example-2026-03-31","publications":[{"vehicle":"FFMM","asOf":"2026-03-31","publicationId":"ffmm-example-2026-03-31"}],"source":[{"source":"cmf","attribution":"Source: Comisión para el Mercado Financiero (CMF). Data processed by LedgiFi.","url":"https://www.cmfchile.cl/","status":"active"}]}}}}},"400":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Invalid parameters","status":400,"detail":"Unknown query parameter: unexpected.","code":"INVALID_PARAMETERS"}}}},"401":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","headers":{"WWW-Authenticate":{"description":"Bearer scheme required to authenticate the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"Send Authorization: Bearer <api_key>.","code":"UNAUTHORIZED"}}}},"403":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Permission required","status":403,"detail":"The API key does not have fondos:read permission.","code":"ACCESS_DENIED"}}}},"404":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Not found","status":404,"detail":"No published resource matches this identifier.","code":"NOT_FOUND"}}}},"429":{"description":"Customer quota exceeded. Wait for the Retry-After duration in seconds before retrying. For bulk history or the entire market, use GET /downloads (CSV.gz per publication with native, CLP, USD and UF NAV).","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Rate limit exceeded","status":429,"detail":"The customer request quota has been exceeded.","code":"QUOTA_EXCEEDED"}}}},"503":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Service unavailable","status":503,"detail":"The data service is temporarily unavailable.","code":"SERVICE_UNAVAILABLE"}}}}}}},"/funds/{run}":{"get":{"summary":"Fund and series details","description":"Fund identity, compact list of published series (serie, ticker, currency, clase, from and asOf) with the same structure as /meta data.catalog[].series, and monthly portfolio in data.portfolio. The portfolio retains its month and every consolidated position when complete=true; null for FI or when no portfolio is published, which does not mean an empty portfolio. positionCount counts source rows before consolidation. For all portfolios, use /downloads dataset=portfolio. Query financial details by series.","operationId":"getFund","security":[{"apiKey":[]}],"parameters":[{"name":"run","in":"path","required":true,"schema":{"type":"string"},"description":"CMF RUN without the check digit, from data.catalog[].run in GET /meta."}],"responses":{"200":{"description":"Published data in data and provenance/cutoff metadata in meta. null means absence, not zero. Details and units depend on the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fund"},"example":{"data":{"run":"12345","name":"Example USD Fund","agf":"Example Fund Manager","vehicle":"FFMM","source":"cmf","series":[{"serie":"A","currency":"USD","clase":"Retail","ticker":null,"from":"2021-09-01","asOf":"2026-03-31"},{"serie":"APV","currency":"USD","clase":"APV","ticker":null,"from":"2021-09-01","asOf":"2026-03-31"}],"portfolio":{"run":"12345","asOf":"2026-03","source":"cmf","positionCount":3,"complete":true,"assetClasses":[{"name":"Deuda","share":1}],"origins":[{"name":"Chile","share":1}],"countries":[{"name":"CHILE","share":1}],"topIssuers":[{"name":"Example Issuer","share":1}],"topHoldings":[{"name":"Example Issuer","share":0.6,"ticker":"EXAMPLE-BOND-A","issuerRun":"12345678","country":"CHILE","instrumentType":"BONO"},{"name":"Example Issuer","share":0.4,"ticker":"EXAMPLE-BOND-B","issuerRun":"12345678","country":"CHILE","instrumentType":"BONO"}]}},"meta":{"asOf":"2026-03-31","publicationId":"ffmm-example-2026-03-31","publications":[{"vehicle":"FFMM","asOf":"2026-03-31","publicationId":"ffmm-example-2026-03-31"}],"source":[{"source":"cmf","attribution":"Source: Comisión para el Mercado Financiero (CMF). Data processed by LedgiFi.","url":"https://www.cmfchile.cl/","status":"active"}]}}}}},"400":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Invalid parameters","status":400,"detail":"Unknown query parameter: unexpected.","code":"INVALID_PARAMETERS"}}}},"401":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","headers":{"WWW-Authenticate":{"description":"Bearer scheme required to authenticate the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"Send Authorization: Bearer <api_key>.","code":"UNAUTHORIZED"}}}},"403":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Permission required","status":403,"detail":"The API key does not have fondos:read permission.","code":"ACCESS_DENIED"}}}},"404":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Not found","status":404,"detail":"No published resource matches this identifier.","code":"NOT_FOUND"}}}},"429":{"description":"Customer quota exceeded. Wait for the Retry-After duration in seconds before retrying. For bulk history or the entire market, use GET /downloads (CSV.gz per publication with native, CLP, USD and UF NAV).","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Rate limit exceeded","status":429,"detail":"The customer request quota has been exceeded.","code":"QUOTA_EXCEEDED"}}}},"503":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Service unavailable","status":503,"detail":"The data service is temporarily unavailable.","code":"SERVICE_UNAVAILABLE"}}}}}}},"/funds/{run}/series/{serie}":{"get":{"summary":"Series details with data","description":"Series details with NAV, net assets, costs and metrics published by period in data.periods: return, annualized volatility, Sharpe and maximum drawdown for each window. base selects the metrics unit without changing NAV or net assets. data.history contains the complete published native NAV history in one response, without interpolation, date filters or pagination. history.from and history.to are the first and last returned observation dates, or null when there are no observations. FI retains irregular dates and null risk metrics. history.points=[] means no observations; null with HISTORY_NOT_PUBLISHED means verifiable published history is unavailable. For bulk history or the entire market, use GET /downloads (CSV.gz per publication with native, CLP, USD and UF NAV).","operationId":"getSeries","security":[{"apiKey":[]}],"parameters":[{"name":"run","in":"path","required":true,"schema":{"type":"string"},"description":"CMF RUN without the check digit, from data.catalog[].run in GET /meta."},{"name":"serie","in":"path","required":true,"schema":{"type":"string"},"description":"Exact code from data.series[].serie in GET /funds/{run}, URL encoded."},{"name":"base","in":"query","required":false,"schema":{"default":"native","description":"Return and risk base: native uses each series currency; CLP, USD or UF use the rebased series. Does not change NAV or net assets.","type":"string","enum":["native","CLP","USD","UF"]}}],"responses":{"200":{"description":"Published data in data and provenance/cutoff metadata in meta. null means absence, not zero. Details and units depend on the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Serie"},"example":{"data":{"run":"12345","name":"Example USD Fund","agf":"Example Fund Manager","vehicle":"FFMM","source":"cmf","serie":"A","currency":"USD","base":"CLP","category":"USD debt under 90 days","clase":"Retail","tac":1.2,"tacAsOf":"2026-03-31","netAssets":2000000000,"netAssetsCurrency":"CLP","shareholders":100,"nav":1050,"navDate":"2026-03-31","periods":{"1m":{"status":"available","cumulative":2,"annualized":null,"days":31,"effectiveFrom":"2026-02-28","effectiveTo":"2026-03-31","unavailableReason":null,"volatility":3.4,"sharpe":0.6,"maxDrawdown":1.2},"3m":{"status":"available","cumulative":2.439,"annualized":null,"days":90,"effectiveFrom":"2025-12-31","effectiveTo":"2026-03-31","unavailableReason":null,"volatility":3.4,"sharpe":0.6,"maxDrawdown":1.2},"6m":{"status":"available","cumulative":2.9412,"annualized":null,"days":182,"effectiveFrom":"2025-09-30","effectiveTo":"2026-03-31","unavailableReason":null,"volatility":3.4,"sharpe":0.6,"maxDrawdown":1.2},"ytd":{"status":"available","cumulative":1.9417,"annualized":null,"days":89,"effectiveFrom":"2026-01-01","effectiveTo":"2026-03-31","unavailableReason":null,"volatility":3.4,"sharpe":0.6,"maxDrawdown":1.2},"1y":{"status":"available","cumulative":5,"annualized":5.0035,"days":365,"effectiveFrom":"2025-03-31","effectiveTo":"2026-03-31","unavailableReason":null,"volatility":3.4,"sharpe":0.6,"maxDrawdown":1.2},"2y":{"status":"unavailable","cumulative":null,"annualized":null,"days":null,"effectiveFrom":null,"effectiveTo":null,"unavailableReason":"INSUFFICIENT_HISTORY","volatility":null,"sharpe":null,"maxDrawdown":null},"3y":{"status":"unavailable","cumulative":null,"annualized":null,"days":null,"effectiveFrom":null,"effectiveTo":null,"unavailableReason":"INSUFFICIENT_HISTORY","volatility":null,"sharpe":null,"maxDrawdown":null},"5y":{"status":"unavailable","cumulative":null,"annualized":null,"days":null,"effectiveFrom":null,"effectiveTo":null,"unavailableReason":"INSUFFICIENT_HISTORY","volatility":null,"sharpe":null,"maxDrawdown":null},"10y":{"status":"unavailable","cumulative":null,"annualized":null,"days":null,"effectiveFrom":null,"effectiveTo":null,"unavailableReason":"INSUFFICIENT_HISTORY","volatility":null,"sharpe":null,"maxDrawdown":null}},"history":{"from":"2021-09-01","to":"2026-03-31","points":[{"date":"2021-09-01","nav":1000,"currency":"USD","netAssets":null,"netAssetsCurrency":null,"shareholders":null},{"date":"2026-03-30","nav":1049.5,"currency":"USD","netAssets":null,"netAssetsCurrency":null,"shareholders":null},{"date":"2026-03-31","nav":1050,"currency":"USD","netAssets":2000000,"netAssetsCurrency":"USD","shareholders":100}],"unavailableReason":null}},"meta":{"asOf":"2026-03-31","publicationId":"ffmm-example-2026-03-31","publications":[{"vehicle":"FFMM","asOf":"2026-03-31","publicationId":"ffmm-example-2026-03-31"}],"source":[{"source":"cmf","attribution":"Source: Comisión para el Mercado Financiero (CMF). Data processed by LedgiFi.","url":"https://www.cmfchile.cl/","status":"active"}]}}}}},"400":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Invalid parameters","status":400,"detail":"Unknown query parameter: unexpected.","code":"INVALID_PARAMETERS"}}}},"401":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","headers":{"WWW-Authenticate":{"description":"Bearer scheme required to authenticate the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"Send Authorization: Bearer <api_key>.","code":"UNAUTHORIZED"}}}},"403":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Permission required","status":403,"detail":"The API key does not have fondos:read permission.","code":"ACCESS_DENIED"}}}},"404":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Not found","status":404,"detail":"No published resource matches this identifier.","code":"NOT_FOUND"}}}},"429":{"description":"Customer quota exceeded. Wait for the Retry-After duration in seconds before retrying. For bulk history or the entire market, use GET /downloads (CSV.gz per publication with native, CLP, USD and UF NAV).","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Rate limit exceeded","status":429,"detail":"The customer request quota has been exceeded.","code":"QUOTA_EXCEEDED"}}}},"503":{"description":"Error with a stable code in application/problem+json. ACCESS_DENIED: check access and read permission; HISTORY_NOT_PUBLISHED: history is unpublished; SERVICE_UNAVAILABLE: retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"about:blank","title":"Service unavailable","status":503,"detail":"The data service is temporarily unavailable.","code":"SERVICE_UNAVAILABLE"}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"Unkey API key"}},"schemas":{"Meta":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"string","const":"v1"},"catalog":{"type":"array","items":{"type":"object","properties":{"run":{"type":"string","pattern":"^[0-9]{1,10}$","description":"CMF RUN without the check digit."},"name":{"type":"string"},"agf":{"type":"string"},"vehicle":{"type":"string","enum":["FFMM","FIRES","FINRE"],"description":"Vehicle: mutual fund (FFMM), redeemable investment fund (FIRES), or non-redeemable investment fund (FINRE)."},"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"series":{"type":"array","items":{"type":"object","properties":{"serie":{"type":"string","minLength":1,"maxLength":100,"description":"Exact series code from /funds/{run} data.series[].serie."},"currency":{"description":"NAV currency.","type":["string","null"]},"clase":{"type":["string","null"]},"ticker":{"description":"Registered series ticker; null when unavailable.","type":["string","null"]},"from":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"First historical observation recorded by the publication; null if the publication does not record that endpoint."},"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Date of the latest series NAV observation, independent of the publication cutoff."}},"required":["serie","currency","clase","ticker","from","asOf"],"additionalProperties":false}}},"required":["run","name","agf","vehicle","source","series"],"additionalProperties":false}},"categories":{"type":"array","items":{"type":"string"}},"agfs":{"type":"array","items":{"type":"string"},"description":"Fund managers in the active catalog."}},"required":["version","catalog","categories","agfs"],"additionalProperties":false},"meta":{"type":"object","properties":{"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Common cutoff across publications; null when vehicle cutoffs differ."},"publicationId":{"type":["string","null"]},"publications":{"type":"array","items":{"type":"object","properties":{"vehicle":{"type":"string","enum":["FFMM","FI"]},"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"publicationId":{"type":"string"}},"required":["vehicle","asOf","publicationId"],"additionalProperties":false}},"source":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"attribution":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","const":"active"}},"required":["source","attribution","url","status"],"additionalProperties":false}}},"required":["asOf","publicationId","publications","source"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"Fund":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"run":{"type":"string","pattern":"^[0-9]{1,10}$","description":"CMF RUN without the check digit."},"name":{"type":"string"},"agf":{"type":"string"},"vehicle":{"type":"string","enum":["FFMM","FIRES","FINRE"],"description":"Vehicle: mutual fund (FFMM), redeemable investment fund (FIRES), or non-redeemable investment fund (FINRE)."},"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"series":{"type":"array","items":{"type":"object","properties":{"serie":{"type":"string","minLength":1,"maxLength":100,"description":"Exact series code from /funds/{run} data.series[].serie."},"currency":{"description":"NAV currency.","type":["string","null"]},"clase":{"type":["string","null"]},"ticker":{"description":"Registered series ticker; null when unavailable.","type":["string","null"]},"from":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"First historical observation recorded by the publication; null if the publication does not record that endpoint."},"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Date of the latest series NAV observation, independent of the publication cutoff."}},"required":["serie","currency","clase","ticker","from","asOf"],"additionalProperties":false}},"portfolio":{"anyOf":[{"type":"object","properties":{"run":{"type":"string","pattern":"^[0-9]{1,10}$","description":"CMF RUN without the check digit."},"asOf":{"type":"string","pattern":"^\\d{4}-\\d{2}$","description":"Portfolio month (YYYY-MM), independent of the NAV cutoff."},"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"positionCount":{"type":"number","description":"Source position rows before consolidating instruments."},"complete":{"type":"boolean","description":"true when the response contains all consolidated positions; false when full coverage cannot be established."},"assetClasses":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"share":{"type":"number","description":"Portfolio share (0.6 = 60%)."}},"required":["name","share"],"additionalProperties":false}},"origins":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"share":{"type":"number","description":"Portfolio share (0.6 = 60%)."}},"required":["name","share"],"additionalProperties":false}},"countries":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"share":{"type":"number","description":"Portfolio share (0.6 = 60%)."}},"required":["name","share"],"additionalProperties":false}},"topIssuers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"share":{"type":"number","description":"Portfolio share (0.6 = 60%)."}},"required":["name","share"],"additionalProperties":false}},"topHoldings":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"share":{"type":"number","description":"Portfolio share (0.6 = 60%)."},"ticker":{"type":["string","null"]},"issuerRun":{"type":["string","null"]},"country":{"type":["string","null"]},"instrumentType":{"type":"string"}},"required":["name","share","ticker","issuerRun","country","instrumentType"],"additionalProperties":false},"description":"Consolidated positions ordered by weight; no truncation when complete=true. share is a proportion."}},"required":["run","asOf","source","positionCount","complete","assetClasses","origins","countries","topIssuers","topHoldings"],"additionalProperties":false},{"type":"null"}],"description":"Complete monthly portfolio when published; null for FI or when no portfolio is published. Does not imply an empty portfolio."}},"required":["run","name","agf","vehicle","source","series","portfolio"],"additionalProperties":false},"meta":{"type":"object","properties":{"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Common cutoff across publications; null when vehicle cutoffs differ."},"publicationId":{"type":["string","null"]},"publications":{"type":"array","items":{"type":"object","properties":{"vehicle":{"type":"string","enum":["FFMM","FI"]},"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"publicationId":{"type":"string"}},"required":["vehicle","asOf","publicationId"],"additionalProperties":false}},"source":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"attribution":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","const":"active"}},"required":["source","attribution","url","status"],"additionalProperties":false}}},"required":["asOf","publicationId","publications","source"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"Serie":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"run":{"type":"string","pattern":"^[0-9]{1,10}$","description":"CMF RUN without the check digit."},"name":{"type":"string"},"agf":{"type":"string"},"vehicle":{"type":"string","enum":["FFMM","FIRES","FINRE"],"description":"Vehicle: mutual fund (FFMM), redeemable investment fund (FIRES), or non-redeemable investment fund (FINRE)."},"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"serie":{"type":"string","minLength":1,"maxLength":100,"description":"Exact series code from /funds/{run} data.series[].serie."},"currency":{"description":"NAV currency.","type":["string","null"]},"base":{"anyOf":[{"type":"string","enum":["CLP","USD","UF"]},{"type":"null"}],"description":"Selected return and risk base; null when native cannot be resolved to CLP, USD or UF."},"category":{"type":["string","null"]},"clase":{"type":["string","null"]},"tac":{"description":"Annual CMF synthetic TAC, as a percentage (1.2 = 1.2%); FFMM only.","type":["number","null"]},"tacAsOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Date of the TAC observation."},"netAssets":{"type":["number","null"]},"netAssetsCurrency":{"description":"Currency of netAssets.","type":["string","null"]},"shareholders":{"type":["number","null"]},"nav":{"type":["number","null"]},"navDate":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"periods":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"status":{"type":"string","enum":["available","partial","unavailable"],"description":"partial: the series does not cover the full period."},"cumulative":{"description":"Cumulative return for the period.","type":["number","null"]},"annualized":{"description":"Annualized return; requires at least 365 days.","type":["number","null"]},"days":{"description":"Observed calendar days.","type":["number","null"]},"effectiveFrom":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Date of the initial NAV used; null if not published."},"effectiveTo":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Date of the final NAV used; null if not published."},"unavailableReason":{"anyOf":[{"type":"string","enum":["INSUFFICIENT_HISTORY","INSUFFICIENT_COVERAGE","STALE_NAV","MISSING_FX_RATE","PARTIAL_PERIOD","NOT_PUBLISHED"]},{"type":"null"}],"description":"Reason for absence: insufficient history, insufficient coverage, stale NAV, missing FX rate, partial period, or unpublished metric/diagnostic. null when the return is available."},"volatility":{"description":"Annualized volatility of daily returns over the period, as a percentage; FFMM only.","type":["number","null"]},"sharpe":{"description":"Estimated annualized Sharpe ratio over the period, unitless; FFMM only.","type":["number","null"]},"maxDrawdown":{"description":"Maximum drawdown within the period, as a positive percentage; FFMM only.","type":["number","null"]}},"required":["status","cumulative","annualized","days","effectiveFrom","effectiveTo","unavailableReason","volatility","sharpe","maxDrawdown"],"additionalProperties":false}},"history":{"type":"object","properties":{"from":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"First returned NAV date; null when there are no observations."},"to":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Last returned NAV date; null when there are no observations."},"points":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"nav":{"type":"number"},"currency":{"type":["string","null"]},"netAssets":{"type":["number","null"]},"netAssetsCurrency":{"description":"Currency of netAssets.","type":["string","null"]},"shareholders":{"type":["number","null"]}},"required":["date","nav","currency","netAssets","netAssetsCurrency","shareholders"],"additionalProperties":false}},{"type":"null"}],"description":"Complete published native NAV history, without interpolation, date filters or pagination. [] when there are no observations; null when verifiable published history is unavailable."},"unavailableReason":{"anyOf":[{"type":"string","const":"HISTORY_NOT_PUBLISHED"},{"type":"null"}]}},"required":["from","to","points","unavailableReason"],"additionalProperties":false}},"required":["run","name","agf","vehicle","source","serie","currency","base","category","clase","tac","tacAsOf","netAssets","netAssetsCurrency","shareholders","nav","navDate","periods","history"],"additionalProperties":false},"meta":{"type":"object","properties":{"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Common cutoff across publications; null when vehicle cutoffs differ."},"publicationId":{"type":["string","null"]},"publications":{"type":"array","items":{"type":"object","properties":{"vehicle":{"type":"string","enum":["FFMM","FI"]},"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"publicationId":{"type":"string"}},"required":["vehicle","asOf","publicationId"],"additionalProperties":false}},"source":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"attribution":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","const":"active"}},"required":["source","attribution","url","status"],"additionalProperties":false}}},"required":["asOf","publicationId","publications","source"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"Downloads":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"schemaVersion":{"type":"number","const":2},"id":{"type":"string","pattern":"^(FFMM|FI)\\.[a-zA-Z0-9_-]{1,150}\\.(snapshot|history|portfolio)$"},"vehicle":{"type":"string","enum":["FFMM","FI"]},"publicationId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,150}$"},"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"}],"description":"NAV cutoff YYYY-MM-DD; for portfolio, latest portfolio month YYYY-MM. Each row retains its month."},"dataset":{"type":"string","enum":["snapshot","history","portfolio"]},"format":{"type":"string","const":"csv.gz"},"filename":{"type":"string","pattern":"^[a-zA-Z0-9_.-]{1,220}\\.csv\\.gz$"},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":268435456},"rows":{"type":"integer","minimum":0,"maximum":9007199254740991},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"columns":{"type":"array","items":{"type":"string"},"description":"CSV header of the file, in order."}},"required":["schemaVersion","id","vehicle","publicationId","asOf","dataset","format","filename","bytes","rows","sha256","columns"],"additionalProperties":false}},"pending":{"type":"array","items":{"type":"object","properties":{"vehicle":{"type":"string","enum":["FFMM","FI"]},"publicationId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,150}$"},"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"}]}},"required":["vehicle","publicationId","asOf"],"additionalProperties":false}}},"required":["files","pending"],"additionalProperties":false},"meta":{"type":"object","properties":{"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Common cutoff across publications; null when vehicle cutoffs differ."},"publicationId":{"type":["string","null"]},"publications":{"type":"array","items":{"type":"object","properties":{"vehicle":{"type":"string","enum":["FFMM","FI"]},"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"publicationId":{"type":"string"}},"required":["vehicle","asOf","publicationId"],"additionalProperties":false}},"source":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"attribution":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","const":"active"}},"required":["source","attribution","url","status"],"additionalProperties":false}}},"required":["asOf","publicationId","publications","source"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"Download":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"schemaVersion":{"type":"number","const":2},"id":{"type":"string","pattern":"^(FFMM|FI)\\.[a-zA-Z0-9_-]{1,150}\\.(snapshot|history|portfolio)$"},"vehicle":{"type":"string","enum":["FFMM","FI"]},"publicationId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,150}$"},"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"}],"description":"NAV cutoff YYYY-MM-DD; for portfolio, latest portfolio month YYYY-MM. Each row retains its month."},"dataset":{"type":"string","enum":["snapshot","history","portfolio"]},"format":{"type":"string","const":"csv.gz"},"filename":{"type":"string","pattern":"^[a-zA-Z0-9_.-]{1,220}\\.csv\\.gz$"},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":268435456},"rows":{"type":"integer","minimum":0,"maximum":9007199254740991},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"downloadUrl":{"type":"string","format":"uri","description":"Temporary read-only link. Download without sending Authorization or the API key to this URL."},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"Link expiration. Request another link if the publication remains active."}},"required":["schemaVersion","id","vehicle","publicationId","asOf","dataset","format","filename","bytes","rows","sha256","downloadUrl","expiresAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"asOf":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"Common cutoff across publications; null when vehicle cutoffs differ."},"publicationId":{"type":["string","null"]},"publications":{"type":"array","items":{"type":"object","properties":{"vehicle":{"type":"string","enum":["FFMM","FI"]},"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"publicationId":{"type":"string"}},"required":["vehicle","asOf","publicationId"],"additionalProperties":false}},"source":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"attribution":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","const":"active"}},"required":["source","attribution","url","status"],"additionalProperties":false}}},"required":["asOf","publicationId","publications","source"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"Source":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","enum":["cmf","cmf-fi-registry"],"description":"Data source for NAV and the catalog."},"Problem":{"type":"object","required":["type","title","status","detail","code"],"properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string","enum":["INVALID_PARAMETERS","HISTORY_NOT_PUBLISHED","UNAUTHORIZED","ACCESS_DENIED","NOT_FOUND","QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","API_ERROR"]}}}}}}