Agromonitoring

The Agromonitoring Agro API provides satellite imagery, vegetation index time series (NDVI, EVI, DSWI, LSWI), weather data, soil conditions, and UV index for registered agricultural field polygons. Enables precision agriculture workflows including crop health monitoring, irrigation decision support, and yield optimization.

Documentation

Specifications

Examples

📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-polygon-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-geojson-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-satelliteimage-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-ndvirecord-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-vegetationstats-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-weatherdata-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-temperaturerange-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-soildata-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-uvindexdata-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-polygoncreaterequest-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/examples/agromonitoring-errorresponse-example.json

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-polygon-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-geojson-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-satelliteimage-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-ndvirecord-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-vegetationstats-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-weatherdata-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-temperaturerange-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-soildata-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-uvindexdata-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-polygoncreaterequest-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-schema/agromonitoring-errorresponse-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-polygon-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-geojson-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-satelliteimage-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-ndvirecord-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-vegetationstats-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-weatherdata-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-temperaturerange-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-soildata-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-uvindexdata-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-polygoncreaterequest-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/agromonitoring/refs/heads/main/json-structure/agromonitoring-errorresponse-structure.json

Other Resources

OpenAPI Specification

agromonitoring-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Agromonitoring Agro API
  description: >-
    Agromonitoring provides satellite imagery, vegetation indices (NDVI, EVI, EVI2,
    DSWI, NDWI, NRI), weather data, soil analysis, and crop monitoring APIs for
    precision agriculture. Based on processing satellite data from Landsat 8 and
    Sentinel-2, the Agro API enables developers to build agricultural monitoring
    applications with real-time and historical crop, weather, and soil data.
    Authentication is via API key appended to all requests.
  version: '1.0'
  contact:
    url: https://agromonitoring.com
  x-generated-from: documentation
servers:
  - url: https://api.agromonitoring.com/agro/1.0
    description: Agromonitoring Agro API v1.0
tags:
  - name: Polygons
    description: Create and manage field polygon definitions
  - name: Satellite Imagery
    description: Access satellite imagery and vegetation index data
  - name: NDVI History
    description: Historical NDVI vegetation index data
  - name: Weather
    description: Current, forecast, and historical weather data
  - name: Soil
    description: Soil temperature and moisture data
  - name: UV Index
    description: UV radiation index data
paths:
  /polygons:
    get:
      operationId: listPolygons
      summary: Agromonitoring List Polygons
      description: Returns a list of all registered polygon field boundaries for the account.
      tags:
        - Polygons
      parameters:
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
      responses:
        '200':
          description: List of registered field polygons.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Polygon'
              examples:
                ListPolygons200Example:
                  summary: Default listPolygons 200 response
                  x-microcks-default: true
                  value:
                    - id: poly-500123
                      name: North Field
                      area: 45.2
                      created_at: '2025-03-15T14:30:00Z'
                      geo_json:
                        type: Polygon
                        coordinates:
                          - - - -94.5
                              - 38.5
                            - - -94.4
                              - 38.5
                            - - -94.4
                              - 38.4
                            - - -94.5
                              - 38.4
                            - - -94.5
                              - 38.5
        '401':
          description: Unauthorized. Invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createPolygon
      summary: Agromonitoring Create Polygon
      description: Creates a new field polygon boundary for crop monitoring.
      tags:
        - Polygons
      parameters:
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolygonCreateRequest'
            examples:
              CreatePolygonRequestExample:
                summary: Default createPolygon request
                x-microcks-default: true
                value:
                  name: North Field
                  geo_json:
                    type: Polygon
                    coordinates:
                      - - - -94.5
                          - 38.5
                        - - -94.4
                          - 38.5
                        - - -94.4
                          - 38.4
                        - - -94.5
                          - 38.4
                        - - -94.5
                          - 38.5
      responses:
        '201':
          description: Polygon created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Polygon'
              examples:
                CreatePolygon201Example:
                  summary: Default createPolygon 201 response
                  x-microcks-default: true
                  value:
                    id: poly-500124
                    name: North Field
                    area: 45.2
                    created_at: '2026-04-19T10:00:00Z'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /polygons/{polyid}:
    get:
      operationId: getPolygon
      summary: Agromonitoring Get Polygon
      description: Returns details of a specific field polygon.
      tags:
        - Polygons
      parameters:
        - name: polyid
          in: path
          description: Unique identifier for the polygon.
          required: true
          schema:
            type: string
            example: poly-500123
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
      responses:
        '200':
          description: Polygon details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Polygon'
              examples:
                GetPolygon200Example:
                  summary: Default getPolygon 200 response
                  x-microcks-default: true
                  value:
                    id: poly-500123
                    name: North Field
                    area: 45.2
                    created_at: '2025-03-15T14:30:00Z'
        '404':
          description: Polygon not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deletePolygon
      summary: Agromonitoring Delete Polygon
      description: Deletes a field polygon from the account.
      tags:
        - Polygons
      parameters:
        - name: polyid
          in: path
          description: Unique identifier for the polygon.
          required: true
          schema:
            type: string
            example: poly-500123
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
      responses:
        '204':
          description: Polygon deleted successfully.
        '404':
          description: Polygon not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /image/search:
    get:
      operationId: searchSatelliteImages
      summary: Agromonitoring Search Satellite Images
      description: >-
        Searches for available satellite imagery for a polygon within a date range.
        Returns image metadata including cloud coverage and vegetation indices
        from Landsat 8 and Sentinel-2 satellites.
      tags:
        - Satellite Imagery
      parameters:
        - name: polyid
          in: query
          description: Polygon identifier to search imagery for.
          required: true
          schema:
            type: string
            example: poly-500123
        - name: start
          in: query
          description: Start date for imagery search (Unix timestamp).
          required: true
          schema:
            type: integer
            example: 1700000000
        - name: end
          in: query
          description: End date for imagery search (Unix timestamp).
          required: true
          schema:
            type: integer
            example: 1712000000
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
      responses:
        '200':
          description: List of available satellite images for the polygon and date range.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SatelliteImage'
              examples:
                SearchSatelliteImages200Example:
                  summary: Default searchSatelliteImages 200 response
                  x-microcks-default: true
                  value:
                    - dt: 1709000000
                      source: Sentinel-2
                      cl: 5.2
                      stats:
                        ndvi:
                          min: 0.1
                          max: 0.85
                          mean: 0.62
                          median: 0.65
                          std: 0.12
                      image:
                        truecolor: https://api.agromonitoring.com/agro/1.0/image/1/truecolor
                        falsecolor: https://api.agromonitoring.com/agro/1.0/image/1/falsecolor
                        ndvi: https://api.agromonitoring.com/agro/1.0/image/1/ndvi
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ndvi/history:
    get:
      operationId: getNdviHistory
      summary: Agromonitoring Get NDVI History
      description: >-
        Returns historical NDVI (Normalized Difference Vegetation Index) data for a
        polygon over a specified date range. NDVI values range from -1 to 1, where
        values near 1 indicate dense green vegetation. Data is derived from Landsat 8
        and Sentinel-2 satellite imagery.
      tags:
        - NDVI History
      parameters:
        - name: polyid
          in: query
          description: Polygon identifier.
          required: true
          schema:
            type: string
            example: poly-500123
        - name: start
          in: query
          description: Start date for NDVI history (Unix timestamp).
          required: true
          schema:
            type: integer
            example: 1700000000
        - name: end
          in: query
          description: End date for NDVI history (Unix timestamp).
          required: true
          schema:
            type: integer
            example: 1712000000
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
      responses:
        '200':
          description: Historical NDVI data for the polygon.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NdviRecord'
              examples:
                GetNdviHistory200Example:
                  summary: Default getNdviHistory 200 response
                  x-microcks-default: true
                  value:
                    - dt: 1709000000
                      source: Sentinel-2
                      cl: 5.2
                      stats:
                        min: 0.1
                        max: 0.85
                        mean: 0.62
                        median: 0.65
                        std: 0.12
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /weather:
    get:
      operationId: getCurrentWeather
      summary: Agromonitoring Get Current Weather
      description: >-
        Returns current weather conditions for a specific geographic location or
        polygon, including temperature, humidity, wind speed, cloudiness, and
        precipitation data.
      tags:
        - Weather
      parameters:
        - name: polyid
          in: query
          description: Polygon identifier (use instead of lat/lon for field-specific weather).
          required: false
          schema:
            type: string
            example: poly-500123
        - name: lat
          in: query
          description: Latitude coordinate.
          required: false
          schema:
            type: number
            format: double
            example: 38.5
        - name: lon
          in: query
          description: Longitude coordinate.
          required: false
          schema:
            type: number
            format: double
            example: -94.5
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
        - name: units
          in: query
          description: Units system (metric, imperial, standard).
          required: false
          schema:
            type: string
            enum:
              - metric
              - imperial
              - standard
            example: metric
      responses:
        '200':
          description: Current weather conditions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WeatherData'
              examples:
                GetCurrentWeather200Example:
                  summary: Default getCurrentWeather 200 response
                  x-microcks-default: true
                  value:
                    dt: 1712000000
                    temp:
                      day: 22.5
                      min: 15.3
                      max: 27.8
                    humidity: 65
                    wind_speed: 4.2
                    wind_deg: 180
                    clouds: 30
                    rain: 0.0
                    uvi: 5.2
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /weather/forecast:
    get:
      operationId: getWeatherForecast
      summary: Agromonitoring Get Weather Forecast
      description: Returns a 5-day weather forecast for a location or polygon.
      tags:
        - Weather
      parameters:
        - name: polyid
          in: query
          description: Polygon identifier.
          required: false
          schema:
            type: string
            example: poly-500123
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
        - name: units
          in: query
          description: Units system (metric, imperial, standard).
          required: false
          schema:
            type: string
            enum:
              - metric
              - imperial
              - standard
            example: metric
      responses:
        '200':
          description: 5-day weather forecast data.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WeatherData'
              examples:
                GetWeatherForecast200Example:
                  summary: Default getWeatherForecast 200 response
                  x-microcks-default: true
                  value:
                    - dt: 1712086400
                      temp:
                        day: 24.0
                        min: 16.0
                        max: 29.0
                      humidity: 60
                      wind_speed: 3.5
                      clouds: 20
                      rain: 0.0
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /soil:
    get:
      operationId: getSoilData
      summary: Agromonitoring Get Soil Data
      description: >-
        Returns current soil temperature and moisture readings for a polygon.
        Provides soil conditions at multiple depths for precision agriculture
        irrigation and fertility management.
      tags:
        - Soil
      parameters:
        - name: polyid
          in: query
          description: Polygon identifier.
          required: true
          schema:
            type: string
            example: poly-500123
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
      responses:
        '200':
          description: Soil temperature and moisture data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoilData'
              examples:
                GetSoilData200Example:
                  summary: Default getSoilData 200 response
                  x-microcks-default: true
                  value:
                    dt: 1712000000
                    t0: 18.5
                    t10: 15.2
                    moisture: 0.42
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /uvi:
    get:
      operationId: getUvIndex
      summary: Agromonitoring Get UV Index
      description: Returns the current UV (ultraviolet radiation) index for a location or polygon.
      tags:
        - UV Index
      parameters:
        - name: polyid
          in: query
          description: Polygon identifier.
          required: false
          schema:
            type: string
            example: poly-500123
        - name: lat
          in: query
          description: Latitude coordinate.
          required: false
          schema:
            type: number
            format: double
            example: 38.5
        - name: lon
          in: query
          description: Longitude coordinate.
          required: false
          schema:
            type: number
            format: double
            example: -94.5
        - name: appid
          in: query
          description: API key for authentication.
          required: true
          schema:
            type: string
            example: YOUR_API_KEY
      responses:
        '200':
          description: UV index data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UvIndexData'
              examples:
                GetUvIndex200Example:
                  summary: Default getUvIndex 200 response
                  x-microcks-default: true
                  value:
                    lat: 38.5
                    lon: -94.5
                    date_iso: '2026-04-19T12:00:00Z'
                    date: 1712000000
                    value: 5.2
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: appid
      description: >-
        API key obtained by registering at agromonitoring.com. Append
        appid=YOUR_API_KEY to all API requests.
  schemas:
    GeoJson:
      type: object
      title: GeoJson
      description: GeoJSON polygon geometry defining a field boundary.
      properties:
        type:
          type: string
          description: GeoJSON geometry type.
          example: Polygon
        coordinates:
          type: array
          description: Array of coordinate rings defining the polygon.
          items:
            type: array
            items:
              type: array
              items:
                type: number
    Polygon:
      type: object
      title: Polygon
      description: A registered field polygon for crop monitoring.
      properties:
        id:
          type: string
          description: Unique identifier for the polygon.
          example: poly-500123
        name:
          type: string
          description: Display name for the polygon/field.
          example: North Field
        area:
          type: number
          format: double
          description: Field area in hectares.
          example: 45.2
        created_at:
          type: string
          format: date-time
          description: Timestamp when the polygon was created.
          example: '2025-03-15T14:30:00Z'
        geo_json:
          $ref: '#/components/schemas/GeoJson'
    PolygonCreateRequest:
      type: object
      title: Polygon Create Request
      description: Request body for creating a new field polygon.
      required:
        - name
        - geo_json
      properties:
        name:
          type: string
          description: Display name for the field.
          example: North Field
        geo_json:
          $ref: '#/components/schemas/GeoJson'
    VegetationStats:
      type: object
      title: Vegetation Stats
      description: Zonal statistics for a vegetation index over a polygon.
      properties:
        min:
          type: number
          format: double
          description: Minimum index value in the polygon.
          example: 0.1
        max:
          type: number
          format: double
          description: Maximum index value in the polygon.
          example: 0.85
        mean:
          type: number
          format: double
          description: Mean index value.
          example: 0.62
        median:
          type: number
          format: double
          description: Median index value.
          example: 0.65
        std:
          type: number
          format: double
          description: Standard deviation of index values.
          example: 0.12
    SatelliteImage:
      type: object
      title: Satellite Image
      description: Satellite imagery metadata with vegetation index statistics.
      properties:
        dt:
          type: integer
          description: Acquisition date as Unix timestamp.
          example: 1709000000
        source:
          type: string
          description: Satellite source (Sentinel-2 or Landsat-8).
          enum:
            - Sentinel-2
            - Landsat-8
          example: Sentinel-2
        cl:
          type: number
          format: double
          description: Cloud coverage percentage for this image.
          example: 5.2
        stats:
          type: object
          description: Vegetation index statistics for the polygon.
          properties:
            ndvi:
              $ref: '#/components/schemas/VegetationStats'
        image:
          type: object
          description: URLs to image tiles (truecolor, falsecolor, ndvi).
          properties:
            truecolor:
              type: string
              description: URL to the true color image tile.
              example: https://api.agromonitoring.com/agro/1.0/image/1/truecolor
            falsecolor:
              type: string
              description: URL to the false color image tile.
              example: https://api.agromonitoring.com/agro/1.0/image/1/falsecolor
            ndvi:
              type: string
              description: URL to the NDVI image tile.
              example: https://api.agromonitoring.com/agro/1.0/image/1/ndvi
    NdviRecord:
      type: object
      title: NDVI Record
      description: Historical NDVI data record for a specific acquisition date.
      properties:
        dt:
          type: integer
          description: Acquisition date as Unix timestamp.
          example: 1709000000
        source:
          type: string
          description: Satellite source.
          example: Sentinel-2
        cl:
          type: number
          format: double
          description: Cloud coverage percentage.
          example: 5.2
        stats:
          $ref: '#/components/schemas/VegetationStats'
    TemperatureRange:
      type: object
      title: Temperature Range
      description: Daily temperature range data.
      properties:
        day:
          type: number
          format: double
          description: Daytime temperature.
          example: 22.5
        min:
          type: number
          format: double
          description: Minimum temperature of the day.
          example: 15.3
        max:
          type: number
          format: double
          description: Maximum temperature of the day.
          example: 27.8
    WeatherData:
      type: object
      title: Weather Data
      description: Weather conditions for a specific date and location.
      properties:
        dt:
          type: integer
          description: Date as Unix timestamp.
          example: 1712000000
        temp:
          $ref: '#/components/schemas/TemperatureRange'
        humidity:
          type: integer
          description: Relative humidity percentage.
          example: 65
        wind_speed:
          type: number
          format: double
          description: Wind speed in m/s (or mph for imperial).
          example: 4.2
        wind_deg:
          type: integer
          description: Wind direction in degrees.
          example: 180
        clouds:
          type: integer
          description: Cloud coverage percentage.
          example: 30
        rain:
          type: number
          format: double
          description: Precipitation amount in mm.
          example: 0.0
        uvi:
          type: number
          format: double
          description: UV index value.
          example: 5.2
    SoilData:
      type: object
      title: Soil Data
      description: Soil temperature and moisture data for a polygon.
      properties:
        dt:
          type: integer
          description: Measurement date as Unix timestamp.
          example: 1712000000
        t0:
          type: number
          format: double
          description: Soil surface temperature in Celsius.
          example: 18.5
        t10:
          type: number
          format: double
          description: Soil temperature at 10cm depth in Celsius.
          example: 15.2
        moisture:
          type: number
          format: double
          description: Volumetric soil moisture (0 to 1 scale).
          example: 0.42
    UvIndexData:
      type: object
      title: UV Index Data
      description: UV radiation index for a location.
      properties:
        lat:
          type: number
          format: double
          description: Latitude of the location.
          example: 38.5
        lon:
          type: number
          format: double
          description: Longitude of the location.
          example: -94.5
        date_iso:
          type: string
          format: date-time
          description: Measurement date in ISO 8601 format.
          example: '2026-04-19T12:00:00Z'
        date:
          type: integer
          description: Measurement date as Unix timestamp.
          example: 1712000000
        value:
          type: number
          format: double
          description: UV index value (scale 0-11+).
          example: 5.2
    ErrorResponse:
      type: object
      title: Error Response
      description: Standard error response.
      properties:
        cod:
          type: integer
          description: Error code.
          example: 401
        message:
          type: string
          description: Error message.
          example: Invalid API key.
security:
  - ApiKeyQuery: []