Caiyun Weather API

Caiyun Weather API v2.6 — hyperlocal weather, minute-level precipitation, hourly/daily forecasts, air quality, life indices, severe-weather alerts, and a precipitation map raster. Single base URL with token in path and lng,lat in path, returning a unified JSON envelope with status, location, timezone, and a result block that contains realtime/minutely/hourly/daily/ alert sub-objects depending on the endpoint or granu parameter.

OpenAPI Specification

colorfulclouds-caiyun-weather-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Caiyun Weather API
  version: '2.6'
  description: >-
    Caiyun Weather API v2.6 from ColorfulClouds Tech (彩云科技). Hyperlocal weather,
    minute-level precipitation nowcasting, hourly forecast up to 360 hours, daily
    forecast up to 15 days, real-time air quality with CHN + USA AQI standards,
    severe-weather alerts, life indices, and a precipitation map raster. All
    operations share a single base URL pattern with the API token embedded in
    the path and lng,lat as a path tuple.
  contact:
    name: ColorfulClouds Tech (彩云科技)
    url: https://docs.caiyunapp.com/weather-api/
    email: [email protected]
  license:
    name: Commercial — Caiyun Weather API Terms
    url: https://platform.caiyunapp.com/
  x-generated-from: documentation+sdk
  x-source-urls:
    - https://docs.caiyunapp.com/weather-api/
    - https://github.com/caiyunapp/mcp-caiyun-weather
    - https://github.com/caiyunapp/caiyun-weather-api-python-sdk
  x-last-validated: '2026-05-30'
servers:
  - url: https://api.caiyunapp.com/v2.6
    description: Caiyun Weather API v2.6 production endpoint
tags:
  - name: Realtime
    description: Real-time weather conditions at the requested location.
  - name: Forecast
    description: Minute-level, hourly, and daily forecast endpoints.
  - name: Weather
    description: Combined weather envelope returning realtime, minutely, hourly, daily, and alerts in one call.
  - name: Air Quality
    description: Real-time pollutant readings and AQI values under CHN and USA standards.
  - name: Alerts
    description: Severe-weather alerts published by the China Meteorological Administration.
  - name: Precipitation Map
    description: Radar + nowcast precipitation map raster for live overlays.
paths:
  /{token}/{lnglat}/realtime:
    parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/LngLat'
    get:
      operationId: getRealtimeWeather
      summary: Caiyun Weather Get Realtime Weather
      description: >-
        Returns the current weather conditions at the requested location —
        temperature, humidity, wind, cloud cover, sky condition (skycon),
        visibility, downward shortwave radiation, pressure, apparent
        temperature, precipitation, air quality, and life indices.
      tags: [Realtime]
      parameters:
        - $ref: '#/components/parameters/Lang'
        - $ref: '#/components/parameters/Unit'
      responses:
        '200':
          description: Realtime weather payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RealtimeResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /{token}/{lnglat}/minutely:
    parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/LngLat'
    get:
      operationId: getMinutelyPrecipitation
      summary: Caiyun Weather Get Minutely Precipitation Forecast
      description: >-
        Returns 120-minute minute-level precipitation nowcast (mm/hr) and per-minute
        probability series for the requested location, plus a natural-language
        summary of the precipitation pattern.
      tags: [Forecast]
      parameters:
        - $ref: '#/components/parameters/Lang'
        - $ref: '#/components/parameters/Unit'
      responses:
        '200':
          description: Minutely precipitation payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MinutelyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /{token}/{lnglat}/hourly:
    parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/LngLat'
    get:
      operationId: getHourlyForecast
      summary: Caiyun Weather Get Hourly Weather Forecast
      description: >-
        Returns hourly forecast series for up to 360 hours covering temperature,
        apparent temperature, humidity, cloud cover, sky condition, precipitation
        (value + probability), pressure, visibility, downward shortwave radiation,
        wind, and air quality (AQI + PM2.5). When the begin parameter is supplied
        the series is anchored at that Unix epoch second instead of "now".
      tags: [Forecast]
      parameters:
        - $ref: '#/components/parameters/Lang'
        - $ref: '#/components/parameters/Unit'
        - $ref: '#/components/parameters/HourlySteps'
        - $ref: '#/components/parameters/Begin'
      responses:
        '200':
          description: Hourly forecast payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HourlyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /{token}/{lnglat}/daily:
    parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/LngLat'
    get:
      operationId: getDailyForecast
      summary: Caiyun Weather Get Daily Weather Forecast
      description: >-
        Returns daily forecast series for up to 15 days covering astronomical
        sunrise/sunset, precipitation, temperature, humidity, cloud cover,
        pressure, visibility, downward shortwave radiation, wind, sky condition,
        air quality, and life indices. Includes daytime (08h-20h) and
        nighttime (20h-32h) splits for skycon, precipitation, temperature, and
        wind. Free tier returns 3 days; paid tiers extend to 15.
      tags: [Forecast]
      parameters:
        - $ref: '#/components/parameters/Lang'
        - $ref: '#/components/parameters/Unit'
        - $ref: '#/components/parameters/DailySteps'
        - $ref: '#/components/parameters/Begin'
      responses:
        '200':
          description: Daily forecast payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DailyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /{token}/{lnglat}/weather:
    parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/LngLat'
    get:
      operationId: getWeatherCombined
      summary: Caiyun Weather Get Combined Weather Envelope
      description: >-
        Returns a combined response containing realtime, minutely, hourly,
        and daily forecast blocks in a single call, optionally with severe-
        weather alerts. The granu parameter narrows the response to a single
        granularity (realtime, minutely, hourly, daily) when only part of the
        envelope is needed.
      tags: [Weather]
      parameters:
        - $ref: '#/components/parameters/Lang'
        - $ref: '#/components/parameters/Unit'
        - $ref: '#/components/parameters/DailySteps'
        - $ref: '#/components/parameters/HourlySteps'
        - $ref: '#/components/parameters/Alert'
        - $ref: '#/components/parameters/Begin'
        - $ref: '#/components/parameters/Granu'
      responses:
        '200':
          description: Combined weather payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WeatherResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /{token}/{lnglat}/air-quality:
    parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/LngLat'
    get:
      operationId: getRealtimeAirQuality
      summary: Caiyun Weather Get Realtime Air Quality
      description: >-
        Returns real-time air quality readings — PM2.5, PM10, O3, SO2, NO2, CO
        concentrations plus AQI values and category descriptions under both
        Chinese (HJ 633-2012) and US EPA standards.
      tags: [Air Quality]
      parameters:
        - $ref: '#/components/parameters/Lang'
      responses:
        '200':
          description: Realtime air quality payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirQualityRealtimeResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /{token}/{lnglat}/alert:
    parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/LngLat'
    get:
      operationId: getWeatherAlerts
      summary: Caiyun Weather Get Severe Weather Alerts
      description: >-
        Returns the active severe-weather alerts published by the China
        Meteorological Administration for the requested location, including
        title, code, status, description, region (province/city/county),
        adcode, publication timestamp, and originating source.
      tags: [Alerts]
      parameters:
        - $ref: '#/components/parameters/Lang'
      responses:
        '200':
          description: Severe-weather alert payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /precipitation/{z}/{x}/{y}.png:
    parameters:
      - name: z
        in: path
        required: true
        description: Web Mercator zoom level (0-9 typical).
        schema:
          type: integer
          minimum: 0
          maximum: 18
      - name: x
        in: path
        required: true
        description: Web Mercator tile column.
        schema:
          type: integer
          minimum: 0
      - name: y
        in: path
        required: true
        description: Web Mercator tile row.
        schema:
          type: integer
          minimum: 0
    get:
      operationId: getPrecipitationMapTile
      summary: Caiyun Weather Get Precipitation Map Tile
      description: >-
        Returns a 256x256 PNG raster tile representing radar + nowcast
        precipitation intensity colored by the standard dBZ palette. Suitable
        for overlaying on Web Mercator base maps (Mapbox, MapLibre, OpenLayers,
        Leaflet) to render live precipitation animations.
      tags: [Precipitation Map]
      parameters:
        - name: timestamp
          in: query
          description: >-
            Optional Unix epoch second for the nowcast frame. Omit to receive
            the most recent observation; provide a future timestamp within the
            nowcast horizon to render a forecast frame.
          required: false
          schema:
            type: integer
      responses:
        '200':
          description: PNG raster tile
          content:
            image/png:
              schema:
                type: string
                format: binary
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Tile not available for the requested coordinates or timestamp
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  parameters:
    Token:
      name: token
      in: path
      required: true
      description: >-
        Caiyun Weather API token issued by the Open Platform
        (platform.caiyunapp.com). Embedded in the path rather than a header.
      schema:
        type: string
      example: TAkhjf8d1nlSlspN
    LngLat:
      name: lnglat
      in: path
      required: true
      description: >-
        Longitude,latitude tuple as `lng,lat` (note the order — longitude first).
        Use WGS84 decimal degrees.
      schema:
        type: string
        pattern: '^-?\d+(\.\d+)?,-?\d+(\.\d+)?$'
      example: '116.4074,39.9042'
    Lang:
      name: lang
      in: query
      required: false
      description: Response language for description fields.
      schema:
        type: string
        enum: [zh_CN, zh_TW, ja, en_GB, en_US]
        default: en_US
      example: en_US
    Unit:
      name: unit
      in: query
      required: false
      description: Unit system for numeric values (temperature, wind, precipitation, pressure).
      schema:
        type: string
        enum: [metric, 'metric:v1', 'metric:v2', imperial, SI]
        default: metric
      example: 'metric:v2'
    DailySteps:
      name: dailysteps
      in: query
      required: false
      description: Number of daily forecast days to return. Free tier caps at 3.
      schema:
        type: integer
        minimum: 1
        maximum: 15
        default: 5
      example: 7
    HourlySteps:
      name: hourlysteps
      in: query
      required: false
      description: Number of hourly forecast steps to return.
      schema:
        type: integer
        minimum: 1
        maximum: 360
        default: 48
      example: 72
    Alert:
      name: alert
      in: query
      required: false
      description: Include severe-weather alerts in the combined weather response.
      schema:
        type: boolean
        default: false
      example: true
    Begin:
      name: begin
      in: query
      required: false
      description: >-
        Anchor the forecast or historical series at a specific Unix epoch
        second instead of "now". Used to fetch past 24h (historical) or shift
        the start of the forecast window.
      schema:
        type: integer
      example: 1748563200
    Granu:
      name: granu
      in: query
      required: false
      description: >-
        Restrict the combined /weather response to a single granularity
        instead of returning the full envelope.
      schema:
        type: string
        enum: [realtime, minutely, hourly, daily, weather]
      example: hourly
  responses:
    BadRequest:
      description: Malformed request (invalid coordinates, parameter out of range)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Invalid or missing API token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RateLimited:
      description: Per-token quota exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    pathToken:
      type: apiKey
      in: query
      name: token
      description: >-
        Caiyun Weather API token. Note that the token is conventionally embedded
        in the path between the API version and the lng,lat segment rather than
        sent as a header or query parameter. This security scheme is recorded
        for tooling completeness; clients should construct the URL with the
        token in the path as documented.
  schemas:
    Wind:
      title: Wind
      type: object
      description: Wind speed and direction.
      properties:
        speed:
          type: number
          format: float
          description: Wind speed in the active unit system (km/h for metric:v2).
          example: 12.4
        direction:
          type: number
          format: float
          description: Wind direction in degrees from north, clockwise.
          example: 215.0
    PrecipitationLocal:
      title: PrecipitationLocal
      type: object
      description: Realtime local precipitation reading at the requested point.
      properties:
        status:
          type: string
          description: Local precipitation reading status (ok / error).
          example: ok
        datasource:
          type: string
          description: Origin of the precipitation reading (radar, satellite, observation).
          example: radar
        intensity:
          type: number
          format: float
          description: Precipitation intensity in mm/hr at the point.
          example: 0.0
      required: [status, datasource, intensity]
    PrecipitationNearest:
      title: PrecipitationNearest
      type: object
      description: Nearest precipitation echo to the requested point.
      properties:
        status:
          type: string
          example: ok
        distance:
          type: number
          format: float
          description: Distance to the nearest precipitation echo in km.
          example: 8.7
        intensity:
          type: number
          format: float
          example: 0.4
    Precipitation:
      title: Precipitation
      type: object
      properties:
        local:
          $ref: '#/components/schemas/PrecipitationLocal'
        nearest:
          $ref: '#/components/schemas/PrecipitationNearest'
      required: [local]
    AQIValueDual:
      title: AQIValueDual
      type: object
      description: AQI numeric value under both Chinese and US standards.
      properties:
        chn:
          type: number
          format: float
          example: 78.0
        usa:
          type: number
          format: float
          example: 95.0
      required: [chn, usa]
    AQIDescDual:
      title: AQIDescDual
      type: object
      description: AQI category description under both standards.
      properties:
        chn:
          type: string
          example: Good
        usa:
          type: string
          example: Moderate
      required: [chn, usa]
    AirQualityRealtime:
      title: AirQualityRealtime
      type: object
      description: Realtime pollutant concentrations and AQI.
      properties:
        aqi:
          $ref: '#/components/schemas/AQIValueDual'
        description:
          $ref: '#/components/schemas/AQIDescDual'
        pm25:
          type: number
          format: float
          description: PM2.5 concentration in µg/m³.
          example: 32.0
        pm10:
          type: number
          format: float
          example: 48.0
        o3:
          type: number
          format: float
          example: 96.0
        so2:
          type: number
          format: float
          example: 4.0
        no2:
          type: number
          format: float
          example: 21.0
        co:
          type: number
          format: float
          description: CO concentration in mg/m³.
          example: 0.6
      required: [aqi, description]
    LifeIndexItem:
      title: LifeIndexItem
      type: object
      properties:
        index:
          oneOf:
            - type: number
            - type: string
          description: Index numeric value (0-5) or string code.
          example: 3
        desc:
          type: string
          description: Localized description of the index level.
          example: Moderate
      required: [index, desc]
    RealtimeLifeIndex:
      title: RealtimeLifeIndex
      type: object
      properties:
        ultraviolet:
          $ref: '#/components/schemas/LifeIndexItem'
        comfort:
          $ref: '#/components/schemas/LifeIndexItem'
      required: [ultraviolet, comfort]
    SkyCon:
      title: SkyCon
      type: string
      description: Normalized weather phenomenon (sky condition) enum.
      enum:
        - CLEAR_DAY
        - CLEAR_NIGHT
        - PARTLY_CLOUDY_DAY
        - PARTLY_CLOUDY_NIGHT
        - CLOUDY
        - LIGHT_HAZE
        - MODERATE_HAZE
        - HEAVY_HAZE
        - LIGHT_RAIN
        - MODERATE_RAIN
        - HEAVY_RAIN
        - STORM_RAIN
        - FOG
        - LIGHT_SNOW
        - MODERATE_SNOW
        - HEAVY_SNOW
        - STORM_SNOW
        - DUST
        - SAND
        - WIND
      example: PARTLY_CLOUDY_DAY
    Realtime:
      title: Realtime
      type: object
      description: Realtime weather block.
      properties:
        status:
          type: string
          example: ok
        temperature:
          type: number
          format: float
          example: 22.4
        humidity:
          type: number
          format: float
          description: Relative humidity, 0-1 ratio.
          example: 0.58
        cloudrate:
          type: number
          format: float
          description: Cloud cover ratio, 0-1.
          example: 0.32
        skycon:
          $ref: '#/components/schemas/SkyCon'
        visibility:
          type: number
          format: float
          description: Visibility in km.
          example: 14.2
        dswrf:
          type: number
          format: float
          description: Downward shortwave radiation flux in W/m².
          example: 412.0
        wind:
          $ref: '#/components/schemas/Wind'
        pressure:
          type: number
          format: float
          description: Surface pressure in Pa.
          example: 100240.0
        apparent_temperature:
          type: number
          format: float
          example: 21.8
        precipitation:
          $ref: '#/components/schemas/Precipitation'
        air_quality:
          $ref: '#/components/schemas/AirQualityRealtime'
        life_index:
          $ref: '#/components/schemas/RealtimeLifeIndex'
      required: [status, temperature, humidity, cloudrate, skycon, wind]
    Minutely:
      title: Minutely
      type: object
      description: Minute-level precipitation nowcast block (next 120 minutes).
      properties:
        status:
          type: string
          example: ok
        datasource:
          type: string
          example: radar
        precipitation_2h:
          type: array
          items:
            type: number
            format: float
          minItems: 120
          maxItems: 120
          description: 120 minutes of precipitation intensity in mm/hr.
        precipitation:
          type: array
          items:
            type: number
            format: float
          minItems: 60
          maxItems: 60
          description: 60 minutes of precipitation intensity in mm/hr.
        probability:
          type: array
          items:
            type: number
            format: float
          description: Per-segment precipitation probability (0-1).
        description:
          type: string
          description: Natural-language summary of the precipitation pattern.
          example: clear weather over the next 2 hours
      required: [status, description]
    DateTimeValuePair:
      title: DateTimeValuePair
      type: object
      properties:
        datetime:
          type: string
          format: date-time
          example: '2026-05-30T15:00:00+08:00'
        value:
          type: number
          format: float
          example: 23.1
      required: [datetime, value]
    HourlyPrecipitationItem:
      title: HourlyPrecipitationItem
      type: object
      properties:
        datetime:
          type: string
          format: date-time
        value:
          type: number
          format: float
          description: Precipitation intensity in mm/hr.
        probability:
          type: number
          format: float
          description: Per-hour precipitation probability (0-100).
      required: [datetime, value, probability]
    HourlyWindItem:
      title: HourlyWindItem
      type: object
      properties:
        datetime:
          type: string
          format: date-time
        speed:
          type: number
          format: float
        direction:
          type: number
          format: float
      required: [datetime, speed, direction]
    HourlySkyconItem:
      title: HourlySkyconItem
      type: object
      properties:
        datetime:
          type: string
          format: date-time
        value:
          $ref: '#/components/schemas/SkyCon'
      required: [datetime, value]
    HourlyAQIItem:
      title: HourlyAQIItem
      type: object
      properties:
        datetime:
          type: string
          format: date-time
        value:
          $ref: '#/components/schemas/AQIValueDual'
      required: [datetime, value]
    HourlyPM25Item:
      title: HourlyPM25Item
      type: object
      properties:
        datetime:
          type: string
          format: date-time
        value:
          type: number
          format: float
      required: [datetime, value]
    HourlyAirQuality:
      title: HourlyAirQuality
      type: object
      properties:
        aqi:
          type: array
          items:
            $ref: '#/components/schemas/HourlyAQIItem'
        pm25:
          type: array
          items:
            $ref: '#/components/schemas/HourlyPM25Item'
    Hourly:
      title: Hourly
      type: object
      description: Hourly forecast series block.
      properties:
        status:
          type: string
          example: ok
        description:
          type: string
          example: clear weather over the next 24 hours
        precipitation:
          type: array
          items:
            $ref: '#/components/schemas/HourlyPrecipitationItem'
        temperature:
          type: array
          items:
            $ref: '#/components/schemas/DateTimeValuePair'
        apparent_temperature:
          type: array
          items:
            $ref: '#/components/schemas/DateTimeValuePair'
        humidity:
          type: array
          items:
            $ref: '#/components/schemas/DateTimeValuePair'
        cloudrate:
          type: array
          items:
            $ref: '#/components/schemas/DateTimeValuePair'
        skycon:
          type: array
          items:
            $ref: '#/components/schemas/HourlySkyconItem'
        pressure:
          type: array
          items:
            $ref: '#/components/schemas/DateTimeValuePair'
        visibility:
          type: array
          items:
            $ref: '#/components/schemas/DateTimeValuePair'
        dswrf:
          type: array
          items:
            $ref: '#/components/schemas/DateTimeValuePair'
        wind:
          type: array
          items:
            $ref: '#/components/schemas/HourlyWindItem'
        air_quality:
          $ref: '#/components/schemas/HourlyAirQuality'
      required: [status, description]
    DailyAstroTime:
      title: DailyAstroTime
      type: object
      properties:
        time:
          type: string
          example: '05:48'
      required: [time]
    DailyAstroItem:
      title: DailyAstroItem
      type: object
      properties:
        date:
          type: string
          format: date
        sunrise:
          $ref: '#/components/schemas/DailyAstroTime'
        sunset:
          $ref: '#/components/schemas/DailyAstroTime'
      required: [date, sunrise, sunset]
    DailyMinMaxAvgItem:
      title: DailyMinMaxAvgItem
      type: object
      properties:
        date:
          type: string
          format: date
        max:
          type: number
          format: float
        min:
          type: number
          format: float
        avg:
          type: number
          format: float
      required: [date, max, min, avg]
    DailyPrecipitationItem:
      title: DailyPrecipitationItem
      type: object
      properties:
        date:
          type: string
          format: date
        max:
          type: number
          format: float
        min:
          type: number
          format: float
        avg:
          type: number
          format: float
        probability:
          type: number
          format: float
      required: [date, max, min, avg, probability]
    DailyWindProperty:
      title: DailyWindProperty
      type: object
      properties:
        speed:
          type: number
          format: float
        direction:
          type: number
          format: float
      required: [speed, direction]
    DailyWindItem:
      title: DailyWindItem
      type: object
      properties:
        date:
          type: string
          format: date
        max:
          $ref: '#/components/schemas/DailyWindProperty'
        min:
          $ref: '#/components/schemas/DailyWindProperty'
        avg:
          $ref: '#/components/schemas/DailyWindProperty'
      required: [date, max, min, avg]
    DailySkyconItem:
      title: DailySkyconItem
      type: object
      properties:
        date:
          type: string
          format: date
        value:
          $ref: '#/components/schemas/SkyCon'
      required: [date, value]
    DailyAQIItem:
      title: DailyAQIItem
      type: object
      properties:
        date:
          type: string
          format: date
        max:
          $ref: '#/components/schemas/AQIValueDual'
        min:
          $ref: '#/components/schemas/AQIValueDual'
        avg:
          $ref: '#/components/schemas/AQIValueDual'
      required: [date, max, min, avg]
    DailyAirQuality:
      title: DailyAirQuality
      type: object
      properties:
        aqi:
          type: array
          items:
            $ref: '#/components/schemas/DailyAQIItem'
        pm25:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
    DailyLifeIndexEntry:
      title: DailyLifeIndexEntry
      type: object
      properties:
        date:
          type: string
          format: date
        index:
          oneOf:
            - type: number
            - type: string
        desc:
          type: string
      required: [date, index, desc]
    DailyLifeIndex:
      title: DailyLifeIndex
      type: object
      properties:
        ultraviolet:
          type: array
          items:
            $ref: '#/components/schemas/DailyLifeIndexEntry'
        carWashing:
          type: array
          items:
            $ref: '#/components/schemas/DailyLifeIndexEntry'
        dressing:
          type: array
          items:
            $ref: '#/components/schemas/DailyLifeIndexEntry'
        comfort:
          type: array
          items:
            $ref: '#/components/schemas/DailyLifeIndexEntry'
        coldRisk:
          type: array
          items:
            $ref: '#/components/schemas/DailyLifeIndexEntry'
    Daily:
      title: Daily
      type: object
      description: Daily forecast series block.
      properties:
        status:
          type: string
          example: ok
        astro:
          type: array
          items:
            $ref: '#/components/schemas/DailyAstroItem'
        precipitation:
          type: array
          items:
            $ref: '#/components/schemas/DailyPrecipitationItem'
        precipitation_08h_20h:
          type: array
          items:
            $ref: '#/components/schemas/DailyPrecipitationItem'
        precipitation_20h_32h:
          type: array
          items:
            $ref: '#/components/schemas/DailyPrecipitationItem'
        temperature:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
        temperature_08h_20h:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
        temperature_20h_32h:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
        humidity:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
        cloudrate:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
        pressure:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
        visibility:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
        dswrf:
          type: array
          items:
            $ref: '#/components/schemas/DailyMinMaxAvgItem'
        wind:
          type: array
          items:


# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/colorfulclouds/refs/heads/main/openapi/colorfulclouds-caiyun-weather-openapi.yml