nea-rs 0.5.0

A type-safe, sans-IO Rust client for Singapore NEA real-time weather and environmental APIs.
Documentation
// @generated by satay. Do not edit by hand.
#![allow(
    clippy::doc_markdown,
    clippy::missing_errors_doc,
    clippy::must_use_candidate,
    clippy::needless_pass_by_value,
    clippy::return_self_not_must_use,
    clippy::single_match_else
)]

/// Default Upstream URL
pub const SERVER_URL: &str = "https://api-open.data.gov.sg/v2/real-time/api";
/// Where all types, structs and enums are
pub mod types;
pub use types::*;
#[cfg(feature = "json")]
mod api;
#[cfg(feature = "json")]
pub use api::*;
/// PSI and PM2.5 readings by region. Updated every 15 minutes.
#[cfg(feature = "json")]
pub mod air_quality;
/// UV index, lightning, and heat stress (WBGT) data.
#[cfg(feature = "json")]
pub mod environment;
mod psi;
/// Area and regional weather forecasts from NEA MSS.
#[cfg(feature = "json")]
pub mod weather_forecast;
/// Station-level weather observations (up to 1-minute intervals).
#[cfg(feature = "json")]
pub mod weather_readings;
pub use psi::{PsiInput, PsiOperationResponse};
mod pm25;
pub use pm25::{Pm25Input, Pm25OperationResponse};
mod air_temperature;
pub use air_temperature::{AirTemperatureInput, AirTemperatureOperationResponse};
mod relative_humidity;
pub use relative_humidity::{RelativeHumidityInput, RelativeHumidityOperationResponse};
mod wind_speed;
pub use wind_speed::{WindSpeedInput, WindSpeedOperationResponse};
mod wind_direction;
pub use wind_direction::{WindDirectionInput, WindDirectionOperationResponse};
mod rainfall;
pub use rainfall::{RainfallInput, RainfallOperationResponse};
mod two_hr_forecast;
pub use two_hr_forecast::{TwoHrForecastInput, TwoHrForecastOperationResponse};
mod twenty_four_hr_forecast;
pub use twenty_four_hr_forecast::{
    TwentyFourHrForecastInput, TwentyFourHrForecastOperationResponse,
};
mod four_day_outlook;
pub use four_day_outlook::{FourDayOutlookInput, FourDayOutlookOperationResponse};
mod uv;
pub use uv::{UvInput, UvOperationResponse};
mod weather_sub_api;
pub use weather_sub_api::{WeatherSubApiInput, WeatherSubApiOperationResponse};
/// Low-level request parts and response codecs, organized by operation.
pub mod operations {
    /// <https://api-open.data.gov.sg/v2/real-time/api/psi>
    ///
    /// - Readings are provided for each major region in Singapore
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2024-07-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    ///
    /// - The `region_metadata` field in the response provides longitude/latitude information for the regions. You can use that to place the readings on a map.
    ///
    /// - Unit of measure for readings is `PSI Value`
    pub mod psi {
        #[cfg(feature = "json")]
        pub use super::super::PsiAction;
        pub use super::super::psi::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/pm25>
    ///
    /// - Readings are provided for each major region in Singapore
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2024-07-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    ///
    /// - The `region_metadata` field in the response provides longitude/latitude information for the regions. You can use that to place the readings on a map.
    ///
    /// - Unit of measure for readings is `µg/m3`.
    pub mod pm25 {
        #[cfg(feature = "json")]
        pub use super::super::Pm25Action;
        pub use super::super::pm25::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/air-temperature>
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2024-07-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    ///
    /// - Unit of measure for readings is `°C`
    pub mod air_temperature {
        #[cfg(feature = "json")]
        pub use super::super::AirTemperatureAction;
        pub use super::super::air_temperature::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/relative-humidity>
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2024-07-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    ///
    /// - Unit of measure for readings is `%`
    pub mod relative_humidity {
        #[cfg(feature = "json")]
        pub use super::super::RelativeHumidityAction;
        pub use super::super::relative_humidity::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/wind-speed>
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2024-07-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    ///
    /// - Unit of measure for readings is `Knots`
    pub mod wind_speed {
        #[cfg(feature = "json")]
        pub use super::super::WindSpeedAction;
        pub use super::super::wind_speed::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/wind-direction>
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2024-07-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    ///
    /// - Unit of measure for readings is `°`
    pub mod wind_direction {
        #[cfg(feature = "json")]
        pub use super::super::WindDirectionAction;
        pub use super::super::wind_direction::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/rainfall>
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2024-07-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    ///
    /// - Unit of measure for readings is `mm`
    pub mod rainfall {
        #[cfg(feature = "json")]
        pub use super::super::RainfallAction;
        pub use super::super::rainfall::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/two-hr-forecast>
    ///
    /// - Forecasts are given for multiple areas in Singapore
    ///
    /// - Filter for specific date or date-time by providing `date` in query parameter (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
    ///
    /// - example: `?date=2024-07-16` or `?date=2024-07-16T23:59:00`
    ///
    /// - Forecasts are valid for two hours, for example, the validity period of the forecast at 1pm is 1pm to 3pm
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    pub mod two_hr_forecast {
        #[cfg(feature = "json")]
        pub use super::super::TwoHrForecastAction;
        pub use super::super::two_hr_forecast::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/twenty-four-hr-forecast>
    ///
    /// - Updated multiple times throughout the day
    ///
    /// - Filter for specific date or date-time by providing `date` in query parameter (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
    ///
    /// - example: `?date=2024-07-16` or `?date=2024-07-16T23:59:00`
    ///
    /// - Forecasts are valid for twenty four hours, for example, the validity period of the forecast at 1st Jan 1pm is from 1st Jan 1pm to 2nd Jan 1pm
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    pub mod twenty_four_hr_forecast {
        #[cfg(feature = "json")]
        pub use super::super::TwentyFourHrForecastAction;
        pub use super::super::twenty_four_hr_forecast::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/four-day-outlook>
    ///
    /// - The forecast is for the next 4 days.
    ///
    /// - Filter for specific date or date-time by providing `date` in query parameter (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
    ///
    /// - example: `?date=2024-07-16` or `?date=2024-07-16T23:59:00`
    ///
    /// - Forecasts are valid for four days, for example, the validity period of the forecast at 1st Jan 1pm is from 1st Jan 1pm to 5th Jan 1pm
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    pub mod four_day_outlook {
        #[cfg(feature = "json")]
        pub use super::super::FourDayOutlookAction;
        pub use super::super::four_day_outlook::*;
    }
    /// <https://api-open.data.gov.sg/v2/real-time/api/uv>
    ///
    /// - Updated between 7 AM and 7 PM everyday
    ///
    /// - The UV index value is averaged over the preceding hour
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2024-07-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest reading
    ///
    /// - Unit of measure for readings is `Ultraviolet Index`
    pub mod uv {
        #[cfg(feature = "json")]
        pub use super::super::UvAction;
        pub use super::super::uv::*;
    }
    /// Unified weather sub-API endpoint.
    ///
    /// - `?api=lightning` — Cloud-to-ground and cloud-to-cloud lightning strikes. Updated every ~2–3 minutes.
    ///
    /// - `?api=wbgt` — Wet Bulb Globe Temperature heat stress readings. Updated every 15 minutes.
    ///
    /// <https://api-open.data.gov.sg/v2/real-time/api/weather?api=lightning>
    ///
    /// - Updated multiple times throughout the day
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2025-01-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest lightning observation
    pub mod weather_sub_api {
        #[cfg(feature = "json")]
        pub use super::super::WeatherSubApiAction;
        pub use super::super::weather_sub_api::*;
    }
}