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

# Post apireportsforecast accuracy



## OpenAPI

````yaml https://sahabah-prod.devops.arabiaweather.com/openapi.json post /api/reports/forecast-accuracy
openapi: 3.1.0
info:
  title: sahabah-api
  description: ''
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://sahabah-prod.devops.arabiaweather.com
    description: Production API server
  - url: https://sahabah-stg.devops.arabiaweather.com
    description: Staging API server
security: []
tags:
  - name: System
    description: System health and monitoring endpoints
  - name: Aviation
    description: Aviation data parsing endpoints
  - name: Weather
    description: Weather data and forecasting endpoints
  - name: Reports
    description: Forecast accuracy analysis and reporting endpoints
paths:
  /api/reports/forecast-accuracy:
    post:
      tags:
        - Reports
      operationId: forecast_accuracy
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForecastAccuracyRequest'
        required: true
      responses:
        '200':
          description: Forecast accuracy analysis results
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/SuccessResponse_HashMap_String_StationReport
        '400':
          description: Invalid Request
        '500':
          description: Internal Server Error
components:
  schemas:
    ForecastAccuracyRequest:
      type: object
      required:
        - stations
        - start_date
        - end_date
        - parameters
        - run_lag
      properties:
        end_date:
          type: string
          format: date-time
        include_archives:
          type: boolean
        include_observations:
          type: boolean
        overrides:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/OverrideHour'
          description: |-
            Optional overrides for specific hours. When provided, values
            here will replace the corresponding forecast parameters for
            matching hours in the archives before analysis.
        parameters:
          type: array
          items:
            type: string
        run_lag:
          type: integer
          format: int32
        start_date:
          type: string
          format: date-time
        stations:
          type: array
          items:
            type: string
        thresholds:
          type:
            - object
            - 'null'
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/SeverityRule'
          propertyNames:
            type: string
    SuccessResponse_HashMap_String_StationReport:
      type: object
      required:
        - data
        - timestamp
        - request_id
        - build
      properties:
        build:
          type: string
        data:
          type: object
          additionalProperties:
            type: object
            required:
              - metadata
              - hourly_analysis
              - daily_summary
              - confusion_matrices
            properties:
              archives:
                type:
                  - array
                  - 'null'
                items:
                  $ref: >-
                    #/components/schemas/ForecastArchiveResponse_ForecastArchiveParameters
              confusion_matrices:
                $ref: '#/components/schemas/ConfusionMatrices'
              daily_summary:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    $ref: '#/components/schemas/DailyContinuousSummary'
                  propertyNames:
                    type: string
                propertyNames:
                  type: string
              hourly_analysis:
                $ref: '#/components/schemas/BTreeMap'
              metadata:
                $ref: '#/components/schemas/StationMetadata'
              observations:
                type:
                  - array
                  - 'null'
                items:
                  $ref: '#/components/schemas/ChronosReport'
          propertyNames:
            type: string
        request_id:
          type: string
        timestamp:
          type: string
          format: date-time
    OverrideHour:
      allOf:
        - $ref: '#/components/schemas/ForecastArchiveParameters'
          description: |-
            Flattened forecast parameter values (e.g. "surface.temperature").
            Only provided fields are applied; others are left unchanged.
        - type: object
          required:
            - datetime
          properties:
            datetime:
              type: string
              format: date-time
              description: Hour timestamp in UTC to match archive `time`.
    SeverityRule:
      type: object
      required:
        - type
        - level
      properties:
        level:
          type: string
        type:
          type: string
      additionalProperties: {}
    ForecastArchiveResponse_ForecastArchiveParameters:
      allOf:
        - type: object
          properties:
            clouds.total_cover:
              type:
                - number
                - 'null'
              format: double
            surface.temperature:
              type:
                - number
                - 'null'
              format: double
            surface.visibility:
              type:
                - number
                - 'null'
              format: double
            surface.wind_direction:
              type:
                - number
                - 'null'
              format: double
            surface.wind_speed:
              type:
                - number
                - 'null'
              format: double
        - type: object
          required:
            - run
            - time
            - station
          properties:
            run:
              type: string
              format: date-time
            station:
              type: string
            time:
              type: string
              format: date-time
    ConfusionMatrices:
      type: object
      required:
        - thresholds
        - categorical
      properties:
        categorical:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/MatrixEntry'
          propertyNames:
            type: string
        thresholds:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/MatrixEntry'
          propertyNames:
            type: string
    DailyContinuousSummary:
      type: object
      required:
        - mae
        - sample_count
        - forecast_mean
        - forecast_min
        - forecast_max
        - observation_mean
        - observation_min
        - observation_max
        - error_min
        - error_max
      properties:
        error_max:
          type: number
          format: double
        error_min:
          type: number
          format: double
        forecast_max:
          type: number
          format: double
        forecast_mean:
          type: number
          format: double
        forecast_min:
          type: number
          format: double
        mae:
          type: number
          format: double
        observation_max:
          type: number
          format: double
        observation_mean:
          type: number
          format: double
        observation_min:
          type: number
          format: double
        sample_count:
          type: integer
          format: int32
          minimum: 0
    BTreeMap:
      type: object
      additionalProperties:
        type: object
        additionalProperties:
          type: object
          properties:
            error:
              type:
                - number
                - 'null'
              format: double
            forecast:
              type:
                - string
                - 'null'
            forecast_cardinal:
              type:
                - string
                - 'null'
            match:
              type:
                - boolean
                - 'null'
            observation:
              type:
                - string
                - 'null'
            observation_cardinal:
              type:
                - string
                - 'null'
        propertyNames:
          type: string
      propertyNames:
        type: string
    StationMetadata:
      type: object
      required:
        - station
        - period
        - parameters
        - total_records
      properties:
        parameters:
          type: array
          items:
            type: string
        period:
          $ref: '#/components/schemas/Period'
        station:
          type: string
        total_records:
          type: integer
          format: int32
          minimum: 0
    ChronosReport:
      type: object
      required:
        - location
        - station_id
        - validity
        - parsed
        - created_at
        - valid
        - data
        - type
        - issue_time
        - identifier
      properties:
        created_at:
          type: string
        data:
          type: string
        identifier:
          type: string
        issue_time:
          type: string
        location:
          type: array
          items:
            type: number
            format: double
        parsed:
          $ref: '#/components/schemas/Parsed'
        station_id:
          type: integer
          format: int32
          minimum: 0
        type:
          type: string
        valid:
          type: boolean
        validity:
          $ref: '#/components/schemas/Validity'
    ForecastArchiveParameters:
      type: object
      properties:
        clouds.total_cover:
          type:
            - number
            - 'null'
          format: double
        surface.temperature:
          type:
            - number
            - 'null'
          format: double
        surface.visibility:
          type:
            - number
            - 'null'
          format: double
        surface.wind_direction:
          type:
            - number
            - 'null'
          format: double
        surface.wind_speed:
          type:
            - number
            - 'null'
          format: double
    MatrixEntry:
      type: object
      required:
        - count
      properties:
        count:
          type: integer
          format: int32
          minimum: 0
        fcst:
          type:
            - string
            - 'null'
        obs:
          type:
            - string
            - 'null'
    Period:
      type: object
      required:
        - start
        - end
      properties:
        end:
          type: string
          format: date-time
        start:
          type: string
          format: date-time
    Parsed:
      type: object
      required:
        - surface
        - lightning
        - precipitation
        - clouds
        - sea_level
        - wmo
        - waves
      properties:
        clouds:
          $ref: '#/components/schemas/Clouds'
        lightning:
          $ref: '#/components/schemas/Lightning'
        precipitation:
          $ref: '#/components/schemas/Precipitation'
        sea_level:
          $ref: '#/components/schemas/SeaLevel'
        surface:
          $ref: '#/components/schemas/Surface'
        waves:
          $ref: '#/components/schemas/Waves'
        wmo:
          $ref: '#/components/schemas/Wmo'
    Validity:
      type: object
      required:
        - valid
        - message
      properties:
        message:
          type: string
        valid:
          type: boolean
    Clouds:
      type: object
      properties:
        total_cover:
          type:
            - integer
            - 'null'
          format: int32
          minimum: 0
    Lightning:
      type: object
      properties:
        amps:
          type:
            - number
            - 'null'
          format: double
        ground:
          type:
            - number
            - 'null'
          format: double
    Precipitation:
      type: object
      properties:
        amount:
          type:
            - number
            - 'null'
          format: double
        duration:
          type:
            - number
            - 'null'
          format: double
    SeaLevel:
      type: object
      properties:
        pressure:
          type:
            - integer
            - 'null'
          format: int32
          minimum: 0
    Surface:
      type: object
      properties:
        dew_point:
          type:
            - number
            - 'null'
          format: double
        gust:
          type:
            - number
            - 'null'
          format: double
        max_temperature:
          type:
            - number
            - 'null'
          format: double
        min_temperature:
          type:
            - number
            - 'null'
          format: double
        temperature:
          type:
            - number
            - 'null'
          format: double
        visibility:
          type:
            - integer
            - 'null'
          format: int32
          minimum: 0
        wind_direction:
          type:
            - integer
            - 'null'
          format: int32
          minimum: 0
        wind_speed:
          type:
            - number
            - 'null'
          format: double
    Waves:
      type: object
      properties:
        instrumental_height:
          type:
            - number
            - 'null'
          format: double
        instrumental_period:
          type:
            - number
            - 'null'
          format: double
        primary_swell_wave_direction:
          type:
            - number
            - 'null'
          format: double
        primary_swell_wave_height:
          type:
            - number
            - 'null'
          format: double
        primary_swell_wave_period:
          type:
            - number
            - 'null'
          format: double
        secondary_swell_wave_direction:
          type:
            - number
            - 'null'
          format: double
        secondary_swell_wave_height:
          type:
            - number
            - 'null'
          format: double
        secondary_swell_wave_period:
          type:
            - number
            - 'null'
          format: double
        wind_wave_height:
          type:
            - number
            - 'null'
          format: double
        wind_wave_period:
          type:
            - number
            - 'null'
          format: double
    Wmo:
      type: object
      properties:
        ch:
          type:
            - string
            - 'null'
        cl:
          type:
            - string
            - 'null'
        cm:
          type:
            - string
            - 'null'
        ix:
          type:
            - string
            - 'null'
        metar_status:
          type:
            - array
            - 'null'
          items:
            type: string
        w1:
          type:
            - string
            - 'null'
        w2:
          type:
            - string
            - 'null'
        wawa:
          type:
            - string
            - 'null'
        ww:
          type:
            - string
            - 'null'

````