> ## Documentation Index
> Fetch the complete documentation index at: https://docs.causeloop.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Dashboard Forecast

> Portfolio-wide risk forecast: observed + projected buckets, aggregated
across the workspace's fitted-hazard patterns.

fix(WP-A): the old implementation was a pure formula
(`45.0 + i*0.8 + hash-jitter`) with no real data behind it. This now
reuses the same real machinery as GET /v1/predictions/forecast
(app/engine/hazard/{fit,service}.py): observed[] = real event-arrival
counts from member issues' `occurred_at`; projected[] = real Λ(t)
buckets summed across the scope's stored `hazard_fits`. An unfitted/
empty scope returns an honest empty `points` list plus a `reason` —
never a fabricated curve.



## OpenAPI

````yaml /openapi.json get /v1/dashboard/forecast
openapi: 3.1.0
info:
  description: Causeloop Platform Backend
  title: Causeloop API
  version: 1.0.0
servers: []
security: []
paths:
  /v1/dashboard/forecast:
    get:
      tags:
        - dashboard
      summary: Get Dashboard Forecast
      description: |-
        Portfolio-wide risk forecast: observed + projected buckets, aggregated
        across the workspace's fitted-hazard patterns.

        fix(WP-A): the old implementation was a pure formula
        (`45.0 + i*0.8 + hash-jitter`) with no real data behind it. This now
        reuses the same real machinery as GET /v1/predictions/forecast
        (app/engine/hazard/{fit,service}.py): observed[] = real event-arrival
        counts from member issues' `occurred_at`; projected[] = real Λ(t)
        buckets summed across the scope's stored `hazard_fits`. An unfitted/
        empty scope returns an honest empty `points` list plus a `reason` —
        never a fabricated curve.
      operationId: get_dashboard_forecast_v1_dashboard_forecast_get
      parameters:
        - in: query
          name: window
          required: false
          schema:
            default: 14d
            title: Window
            type: string
        - in: query
          name: pattern_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Pattern Id
        - in: query
          name: include_triggers
          required: false
          schema:
            default: true
            title: Include Triggers
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                title: Response Get Dashboard Forecast V1 Dashboard Forecast Get
                type: object
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
        - HTTPBearer: []
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    ValidationError:
      properties:
        ctx:
          title: Context
          type: object
        input:
          title: Input
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
  securitySchemes:
    HTTPBearer:
      scheme: bearer
      type: http

````