{"openapi":"3.0.3","info":{"title":"Grizzly Bulls Economic Data API","version":"1.0.0","description":"Read-only access to redistribution-approved U.S. economic time series, including GDP from the Bureau of Economic Analysis and CPI and labor-market observations from the Bureau of Labor Statistics. Values are latest-known, not historical release vintages. Public mode is keyless, including when the separate developer pilot is enabled. The developer pilot uses distinct endpoints with charts:read keys and Charts entitlements; paid access is not launched."},"servers":[{"url":"https://grizzlybulls.com"}],"x-charts-protected-mode":{"default":"public","requiredApiKeyScope":"charts:read","accountEntitlement":"chartsApi","commercialProductRegistered":false,"description":"Historical CHARTS54 access metadata. Canonical public endpoints always require no API key or entitlement; protected access is isolated to separately gated developer URLs."},"paths":{"/api/v1/charts/series":{"get":{"operationId":"listChartSeries","x-protected-mode-required-api-key-scope":"charts:read","security":[],"summary":"List available data series","description":"Only explicitly approved series are listed. Public display does not grant API access.","responses":{"200":{"description":"Available series metadata","content":{"application/json":{"schema":{"type":"object","required":["series"],"properties":{"series":{"type":"array","items":{"$ref":"#/components/schemas/Series"}}}}}}},"401":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/charts/series/{slug}/observations":{"get":{"operationId":"listChartObservations","x-protected-mode-required-api-key-scope":"charts:read","security":[],"summary":"Get paginated observations from an approved series","description":"Dates identify source observation periods. No interpolation, forward-filling or as-of-vintage reconstruction. Pagination is offset-based and not a snapshot across source revisions.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","schema":{"type":"string","format":"date"},"description":"Inclusive UTC observation date"},{"name":"to","in":"query","schema":{"type":"string","format":"date"},"description":"Inclusive UTC observation date"},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}}],"responses":{"200":{"description":"Canonical source observations with bounded pagination","content":{"application/json":{"schema":{"type":"object","required":["series","observations","pagination"],"properties":{"series":{"$ref":"#/components/schemas/Series"},"observations":{"type":"array","items":{"$ref":"#/components/schemas/Observation"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"Series":{"type":"object","required":["slug","title","description","category","unit","unitLabel","frequency","dateGranularity","history","latestObservation","source","freshness","revisions","derivation"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"unit":{"type":"string"},"unitLabel":{"type":"string"},"frequency":{"type":"string"},"dateGranularity":{"type":"string","enum":["day","month","quarter"]},"history":{"type":"object","required":["firstObservationDate","lastObservationDate","observationCount"],"properties":{"firstObservationDate":{"type":"string","format":"date"},"lastObservationDate":{"type":"string","format":"date"},"observationCount":{"type":"integer"}}},"latestObservation":{"type":"object","required":["date","value"],"properties":{"date":{"type":"string","format":"date"},"value":{"type":"number"}}},"source":{"type":"object","required":["name","dataset","url","methodologyUrl","accessDate"],"properties":{"name":{"type":"string"},"dataset":{"type":"string"},"url":{"type":"string","format":"uri"},"methodologyUrl":{"type":"string","format":"uri"},"accessDate":{"type":"string","format":"date","nullable":true},"disclaimer":{"type":"string","description":"Any source-required attribution or downstream-use disclaimer."}}},"freshness":{"type":"object","required":["state","asOfDate"],"properties":{"state":{"type":"string","enum":["fresh","stale","retired"]},"asOfDate":{"type":"string","format":"date"}}},"revisions":{"type":"object","description":"Source-vintage and revision semantics","additionalProperties":true},"derivation":{"type":"object","nullable":true,"description":"Formula and inputs for derived series","additionalProperties":true}}},"Observation":{"type":"object","required":["date","value","gapBefore"],"properties":{"date":{"type":"string","format":"date"},"value":{"type":"number"},"gapBefore":{"type":"boolean","description":"True if a canonical source period is missing before this observation, regardless of pagination."}}},"Pagination":{"type":"object","required":["total","limit","offset","nextOffset","order","from","to"],"properties":{"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"nextOffset":{"type":"integer","nullable":true},"order":{"type":"string","enum":["asc","desc"]},"from":{"type":"string","format":"date","nullable":true},"to":{"type":"string","format":"date","nullable":true}}}}}}