modules/data/datasources/noaa.js

/**
 * NOAA API for data retrieval, different application types.
 * Note: Different data sources may have different limitations
 * -> E.g., they may limit the # of queries per unit time
 * NOAA requires registration to get TOKEN and must be included in parameters.
 * https://www.ncdc.noaa.gov/cdo-web/webservices/v2#data
 * Must requests must be less than 1 year.
 * Dates in format YYYY-MM-DDThh:mm:ss
 * IMPORTANT: for retrieving more than 25 lines of data, include limit = required number.
 * @type {Object}
 * @name NOAA
 * @memberof datasources
 */

export default {
  // These are only written to aid users to know
  // what parameters are available

  datasets: {
    endpoint: "https://www.ncdc.noaa.gov/cdo-web/api/v2/datasets",
    params: {
      //No parameters required for calling the endpoint.
    },
    methods: {
      type: "json",
      method: "GET",
    },
  },

  availablestations: {
    endpoint: "https://www.ncdc.noaa.gov/cdo-web/api/v2/stations",
    params: {
      locationid: null,
      extent: null,
      limit: null,
    },
    methods: {
      type: "json",
      method: "GET",
    },
  },
  "prec-15min": {
    endpoint:
      "https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=PRECIP_15",
    params: {
      locationid: null,
      stationid: null,
      startdate: null,
      enddate: null,
      units: null,
      limit: null,
      offset: null,
      includemetadata: false,
    },
    methods: {
      type: "json",
      method: "GET",
    },
  },

  "prec-hourly": {
    endpoint:
      "https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=PRECIP_HLY",
    params: {
      locationid: null,
      stationid: null,
      startdate: null,
      enddate: null,
      units: null,
      limit: null,
      offset: null,
      includemetadata: false,
      // and more...
    },
    methods: {
      type: "json",
      method: "GET",
    },
  },

  "daily-summaries": {
    endpoint: "https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=GHCND",
    params: {
      locationid: null,
      stationid: null,
      startdate: null,
      enddate: null,
      units: null,
      limit: null,
      offset: null,
      datatypeid: null,
      includemetadata: false,
    },
    methods: {
      type: "json",
      method: "GET",
    },
  },

  "global-summary": {
    endpoint: "https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=GSOM",
    params: {
      locationid: null,
      stationid: null,
      startdate: null,
      enddate: null,
      units: null,
      limit: null,
      offset: null,
      datatypeid: null,
      includemetadata: false,
    },
    methods: {
      type: "json",
      method: "GET",
    },
  },

  "weather-radar-imagery": {
    endpoint: "https://www.ncdc.noaa.gov/nexradinv/",
    params: {
      id: null,
      datetime: null,
      product: null,
      year: null,
      month: null,
      day: null
    },
    methods: {
      type: "json",
      method: "GET",
    },
  },

  requirements: {
    needProxy: false,
    requireskey: true,
    keyname: "token",
  },
  info: {
    returnFormats: "json",
    MoreInfo: "https://www.ncdc.noaa.gov/cdo-web/webservices/v2#data",
    About: "NOAA API for data retrieval, different application types. Requires registration to get TOKEN and must be included in parameters. Must requests must be less than 1 year."
  },
  "endpoint-info": {
    datasets: {
      paramFormat: {},
      infoSource: "https://www.ncdc.noaa.gov/cdo-web/webservices/v2#datasets",
      example: {
        token: "YOUR_TOKEN",
        exampleRequest: "https://www.ncdc.noaa.gov/cdo-web/api/v2/datasets?token=YOUR_TOKEN"
      }
    },
    availablestations: {
      paramFormat: {
        locationid: "String - Location identifier (e.g., 'FIPS:37')",
        extent: "String - Bounding box (e.g., '-90,30,-80,40')",
        limit: "Number - Limit of results returned (default 25, max 1000)"
      },
      infoSource: "https://www.ncdc.noaa.gov/cdo-web/webservices/v2#stations",
      example: {
        locationid: "FIPS:37",
        limit: 100,
        token: "YOUR_TOKEN",
        exampleRequest: "https://www.ncdc.noaa.gov/cdo-web/api/v2/stations?locationid=FIPS:37&limit=100&token=YOUR_TOKEN"
      }
    },
    "prec-15min": {
      paramFormat: {
        locationid: "String - Location identifier",
        stationid: "String - Station identifier (e.g., 'GHCND:USW00014895')",
        startdate: "String - Start date (YYYY-MM-DD format)",
        enddate: "String - End date (YYYY-MM-DD format)",
        units: "String - 'standard' or 'metric'",
        limit: "Number - Limit of results returned (default 25, max 1000)",
        offset: "Number - Offset for pagination",
        includemetadata: "Boolean - Include metadata in response"
      },
      infoSource: "https://www.ncdc.noaa.gov/cdo-web/webservices/v2#data",
      example: {
        datasetid: "PRECIP_15",
        stationid: "GHCND:USW00014895",
        startdate: "2020-01-01",
        enddate: "2020-01-07",
        limit: 100,
        token: "YOUR_TOKEN",
        exampleRequest: "https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=PRECIP_15&stationid=GHCND:USW00014895&startdate=2020-01-01&enddate=2020-01-07&limit=100&token=YOUR_TOKEN"
      }
    },
    "prec-hourly": {
      paramFormat: {
        locationid: "String - Location identifier",
        stationid: "String - Station identifier (e.g., 'GHCND:USW00014895')",
        startdate: "String - Start date (YYYY-MM-DD format)",
        enddate: "String - End date (YYYY-MM-DD format)",
        units: "String - 'standard' or 'metric'",
        limit: "Number - Limit of results returned (default 25, max 1000)",
        offset: "Number - Offset for pagination",
        includemetadata: "Boolean - Include metadata in response"
      },
      infoSource: "https://www.ncdc.noaa.gov/cdo-web/webservices/v2#data",
      example: {
        datasetid: "PRECIP_HLY",
        stationid: "GHCND:USW00014895",
        startdate: "2020-01-01",
        enddate: "2020-01-07",
        limit: 100,
        token: "YOUR_TOKEN",
        exampleRequest: "https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=PRECIP_HLY&stationid=GHCND:USW00014895&startdate=2020-01-01&enddate=2020-01-07&limit=100&token=YOUR_TOKEN"
      }
    },
    "daily-summaries": {
      paramFormat: {
        locationid: "String - Location identifier",
        stationid: "String - Station identifier (e.g., 'GHCND:USW00014895')",
        startdate: "String - Start date (YYYY-MM-DD format)",
        enddate: "String - End date (YYYY-MM-DD format)",
        units: "String - 'standard' or 'metric'",
        limit: "Number - Limit of results returned (default 25, max 1000)",
        offset: "Number - Offset for pagination",
        datatypeid: "String - Data type identifier (e.g., 'TMAX' for max temperature)",
        includemetadata: "Boolean - Include metadata in response"
      },
      infoSource: "https://www.ncdc.noaa.gov/cdo-web/webservices/v2#data",
      example: {
        datasetid: "GHCND",
        stationid: "GHCND:USW00014895",
        startdate: "2020-01-01",
        enddate: "2020-01-31",
        datatypeid: "TMAX,TMIN,PRCP",
        limit: 1000,
        token: "YOUR_TOKEN",
        exampleRequest: "https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=GHCND&stationid=GHCND:USW00014895&startdate=2020-01-01&enddate=2020-01-31&datatypeid=TMAX,TMIN,PRCP&limit=1000&token=YOUR_TOKEN"
      }
    },
    "global-summary": {
      paramFormat: {
        locationid: "String - Location identifier",
        stationid: "String - Station identifier",
        startdate: "String - Start date (YYYY-MM-DD format)",
        enddate: "String - End date (YYYY-MM-DD format)",
        units: "String - 'standard' or 'metric'",
        limit: "Number - Limit of results returned (default 25, max 1000)",
        offset: "Number - Offset for pagination",
        datatypeid: "String - Data type identifier (e.g., 'TAVG' for average temperature)",
        includemetadata: "Boolean - Include metadata in response"
      },
      infoSource: "https://www.ncdc.noaa.gov/cdo-web/webservices/v2#datasets",
      example: {
        datasetid: "GSOM",
        stationid: "GHCND:USW00014895",
        startdate: "2020-01-01",
        enddate: "2020-12-31",
        datatypeid: "TAVG,TMAX,TMIN",
        limit: 1000,
        token: "YOUR_TOKEN",
        exampleRequest: "https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=GSOM&stationid=GHCND:USW00014895&startdate=2020-01-01&enddate=2020-12-31&datatypeid=TAVG,TMAX,TMIN&limit=1000&token=YOUR_TOKEN"
      }
    },
    "weather-radar-imagery": {
      paramFormat: {
        id: "String - NEXRAD station ID (e.g., 'KDMX' for Des Moines, IA)",
        datetime: "String - Date and time in ISO format",
        product: "String - Product type (e.g., 'N0R' for base reflectivity)",
        year: "String - Year for data retrieval",
        month: "String - Month for data retrieval",
        day: "String - Day for data retrieval"
      },
      infoSource: "https://www.ncdc.noaa.gov/nexradinv/",
      example: {
        id: "KDMX",
        datetime: "2020-01-01T12:00:00Z",
        product: "N0R",
        exampleRequest: "https://www.ncdc.noaa.gov/nexradinv/rest-api.jsp?id=KDMX&datetime=2020-01-01T12:00:00Z&product=N0R"
      }
    }
  }
};