NASA Open API
1 APOD (Astronomy Picture of the Day)
get-apod
apod
2 SSD/  CNEOS Fireball
get-fireballs
fireball
3 NEO (Near Earth Objects)
get-neos
get-neo
neo
detailed-neo
orbit
approach
4 DONKI CME (Coronal Mass Ejections)
get-cmes
cme
cme-instrument
cme  Analysis
enlil
impact
5 DONKI Notification System
get-notifications
notification
6 DONKI Solar Flares
get-solar-flare
flr
flr-instrument
7.8

NASA Open API

Michiah Hugi <mhugijr@outlook.com>

 (require nasa-open-api) package: nasa-open-api

This module provides an interface to a handufl of NASA’s Open APIs.

Note: It is recommended that you sign up for a NASA API Key. By default, "DEMO_KEY" is used and is limited in requests.

     More information can be found at api.nasa.gov

1 APOD (Astronomy Picture of the Day)

procedure

(get-apod date [#:api_key api_key])  (listof apod?)

  date : string?
  api_key : string? = "DEMO_KEY"
Returns data for APOD of specified date      (Date must be in format YYYY-MM-DD).

struct

(struct apod (title
    date
    explanation
    copyright
    service-version
    media-type
    url
    hdurl)
    #:extra-constructor-name make-apod)
  title : string?
  date : string?
  explanation : string?
  copyright : (or/c string? null?)
  service-version : string?
  media-type : string?
  url : string?
  hdurl : string?
APOD data. Returned by get-apod.

2 SSD/CNEOS Fireball

procedure

(get-fireballs dates)  (listof fireball)

  dates : pair?
Returns a list of fireball within specified date range.

     Dates must be in the form of YYYY-MM-DD, YYYY-MM-DDThh:mm:ss, YYYY-MM-DD_hh:mm:ss or YYYY-MM-DD hh:mm:ss. If the date range is left blank, all events will be returned

Examples:
(get-fireballs)
(get-fireballs (list "2020-01-01" "2020-02-02"))

struct

(struct fireball (date
    lat
    lon
    lat-dir
    lon-dir
    alt
    vel
    energy
    impact-e)
    #:extra-constructor-name make-fireball)
  date : (or/c string? null)
  lat : (or/c string? null)
  lon : (or/c string? null)
  lat-dir : (or/c string? null)
  lon-dir : (or/c string? null)
  alt : (or/c number? null)
  vel : (or/c number? null)
  energy : (or/c number? null)
  impact-e : (or/c number? null)
Fireball event data returned from get-fireballs.

3 NEO (Near Earth Objects)

procedure

(get-neos dates    
  [#:api_key api_key    
  #:diameter_unit diameter_unit    
  #:distance_unit distance_unit    
  #:velocity_unit velocity_unit])  (listof neo?)
  dates : pair?
  api_key : string? = "DEMO_KEY"
  diameter_unit : (one-of/c 'kilometers 'meters 'miles 'feet)
   = 'kilometers
  distance_unit : (one-of/c 'astronomical 'lunar 'kilometers 'miles)
   = 'kilometers
  velocity_unit : (one-of/c 'kilometers_per_second 'kilometers_per_hour 'miles_per_hour)
   = 'kilometers_per_hour
Returns list of neo within specified date range.

     Dates must be in the form of YYYY-MM-DD. (endDate is default 7 days after startDate)

Examples:
(get-neos)
(get-neos (list "2020-01-01" ""))
(get-neos (list "2020-01-01" "2020-05-05") #:api_key "DEMO_KEY"
                                           #:diameter_unit 'feet
                                           #:distance_unit 'miles
                                           #:velocity_unit 'miles_per_hour)

procedure

(get-neo asteroid_id    
  [#:api_key api_key    
  #:diameter_unit diameter_unit    
  #:distance_unit distance_unit    
  #:velocity_unit velocity_unit])  (detiled-neo?)
  asteroid_id : string?
  api_key : string? = "DEMO_KEY"
  diameter_unit : (one-of/c 'kilometers 'meters 'miles 'feet)
   = 'kilometers
  distance_unit : (one-of/c 'astronomical 'lunar 'kilometers 'miles)
   = 'kilometers
  velocity_unit : (one-of/c 'kilometers_per_second 'kilometers_per_hour 'miles_per_hour)
   = 'kilometers_per_hour
Returns detailed-neo for a specific asteroid ID.

Examples:
(get-neo "3542519")
(get-neo "3542519" #:api_key "DEMO_KEY"
                   #:diameter_unit 'feet
                   #:distance_unit 'miles
                   #:velocity_unit 'miles_per_hour)

struct

(struct neo (id
    name
    absolute-magnitude-h
    estimated-diameter-min
    estimated-diameter-max
    potentially-hazardous
    closest-approach)
    #:extra-constructor-name make-neo)
  id : string?
  name : string?
  absolute-magnitude-h : number?
  estimated-diameter-min : number?
  estimated-diameter-max : number?
  potentially-hazardous : bool?
  closest-approach : approach?
Simplified NEO data returned from get-neos.

struct

(struct detailed-neo (id
    name
    absolute-magnitude-h
    estimated-diameter-min
    estimated-diameter-max
    potentially-hazardous
    orbital-information
    approaches)
    #:extra-constructor-name make-detailed-neo)
  id : string?
  name : string?
  absolute-magnitude-h : number?
  estimated-diameter-min : number?
  estimated-diameter-max : number??
  potentially-hazardous : bool?
  orbital-information : orbit?
  approaches : (listof approach?)
A more detailed form of neo returned by get-neo.

Contains a list of approach and an orbital information struct orbit.

struct

(struct orbit (orbit-id
    orbit-determination-date
    first-observation-date
    last-observation-date
    data-arc-in-days
    observations-used
    orbit-uncertainty
    minimum-orbit-intersection
    jupiter-tisserand-invariant
    epoch-osculation
    eccentricity
    semi-major-axis
    inclination
    ascending-node-longitude
    orbital-period
    perihelion-distance
    perihelion-argument
    aphelion-distance
    perihelion-time
    mean-anomaly
    mean-motion
    equinox
    orbit-class-type
    orbit-class-description
    orbit-class-range)
    #:extra-constructor-name make-orbit)
  orbit-id : string?
  orbit-determination-date : string?
  first-observation-date : string?
  last-observation-date : string?
  data-arc-in-days : number?
  observations-used : number?
  orbit-uncertainty : number?
  minimum-orbit-intersection : number?
  jupiter-tisserand-invariant : number?
  epoch-osculation : number?
  eccentricity : number?
  semi-major-axis : number?
  inclination : number?
  ascending-node-longitude : number?
  orbital-period : number?
  perihelion-distance : number?
  perihelion-argument : number?
  aphelion-distance : number?
  perihelion-time : number?
  mean-anomaly : number?
  mean-motion : number?
  equinox : string?
  orbit-class-type : string?
  orbit-class-description : string?
  orbit-class-range : string?
Contains extensive orbital information data. Only occurs in detailed-neo.

struct

(struct approach (close-approach-date
    relative-velocity
    miss-distance
    orbiting-body)
    #:extra-constructor-name make-approach)
  close-approach-date : string?
  relative-velocity : number?
  miss-distance : number?
  orbiting-body : string?
Contains close approach data. Occurs in detailed-neo and neo.

4 DONKI CME (Coronal Mass Ejections)

procedure

(get-cmes dates [#:api_key api_key])  (listof cme?)

  dates : pair?
  api_key : string? = "DEMO_KEY"
Returns list of cmeAnalysis within specified date range.

     Dates must be in the form of YYYY-MM-DD. (By default, startDate is 30 days ago and endDate is the current date)

Examples:
(get-cmes)
(get-cmes (list "2020-01-01" ""))
(get-cmes #:api_key "DEMO_KEY")

struct

(struct cme (activityID
    catalog
    startTime
    sourceLocation
    activeRegionNum
    link
    note
    instruments
    cmeAnalyse)
    #:extra-constructor-name make-cme)
  activityID : string?
  catalog : string?
  startTime : string?
  sourceLocation : string?
  activeRegionNum : (or/c number? null?)
  link : string?
  note : string?
  instruments : (listof cme-instrument?)
  cmeAnalyse : (or/c (listof cmeAnalysis?) null?)
CME event data returned from get-cmes. Contains lists of cme-instrument and cmeAnalysis.

struct

(struct cme-instrument (id displayName)
    #:extra-constructor-name make-cme-instrument)
  id : number?
  displayName : string?
Instrument used to record CME data. Found in cme.

struct

(struct cmeAnalysis (time21-5
    latitude
    longitude
    halfAngle
    speed
    type
    isMostAccurate
    note
    levelofData
    link
    enlilList)
    #:extra-constructor-name make-cmeAnalysis)
  time21-5 : string?
  latitude : number?
  longitude : number?
  halfAngle : number?
  speed : number?
  type : string?
  isMostAccurate : boolean?
  note : string?
  levelofData : number?
  link : string?
  enlilList : (or/c (listof enlil?) null?)
CME Analysis data. Found in cme.

struct

(struct enlil (modelCompletionTime
    au
    estimatedShockArrivalTime
    estimatedDuration
    rmin-re
    kp-18
    kp-90
    kp-135
    kp-180
    isEarthGB
    link
    cmeIDs
    impactList)
    #:extra-constructor-name make-enlil)
  modelCompletionTime : string?
  au : number?
  estimatedShockArrivalTime : (or/c string? null?)
  estimatedDuration : (or/c number? null?)
  rmin-re : (or/c number? null?)
  kp-18 : (or/c number? null?)
  kp-90 : (or/c number? null?)
  kp-135 : (or/c number? null?)
  kp-180 : (or/c number? null?)
  isEarthGB : boolean?
  link : string?
  cmeIDs : (listof string?)
  impactList : (or/c (listof impact?) null?)
Enlil data. Found in cmeAnalysis.

struct

(struct impact (isGlancingBlow location arrivalTime)
    #:extra-constructor-name make-impact)
  isGlancingBlow : boolean?
  location : string?
  arrivalTime : string?
Instrument used to record impact data. Found in enlil.

5 DONKI Notification System

procedure

(get-notifications dates [#:api_key api_key])

  (listof notification?)
  dates : pair?
  api_key : string? = "DEMO_KEY"
Returns list of notification within specified date range

     Dates must be in the form of YYYY-MM-DD. (By default, startDate is 7 days ago and endDate is the current date)

struct

(struct notification (messageType
    messageID
    messageURL
    messageIssueTime
    messageBody)
    #:extra-constructor-name make-notification)
  messageType : string?
  messageID : string?
  messageURL : string?
  messageIssueTime : string?
  messageBody : string?
DONKI Notification contents. Returned from get-notifications

6 DONKI Solar Flares

procedure

(get-solar-flare dates [#:api_key api_key])  (listof flr?)

  dates : pair?
  api_key : string? = "DEMO_KEY"
Returns list of flr within specified date range.

     Dates must be in the form of YYYY-MM-DD. (By default, startDate is 30 days ago and endDate is the current date)

struct

(struct flr (flrID
    instruments
    beginTime
    peakTime
    endTime
    classType
    sourceLocation
    activeRegionNum
    linkedEvents
    link)
    #:extra-constructor-name make-flr)
  flrID : string?
  instruments : (listof flr-instrument?)
  beginTime : string?
  peakTime : string?
  endTime : string?
  classType : string?
  sourceLocation : string?
  activeRegionNum : (or/c number? null?)
  linkedEvents : (listof string?)
  link : string?
Solar Flare data returned from get-solar-flare.

struct

(struct flr-instrument (id displayName)
    #:extra-constructor-name make-flr-instrument)
  id : number?
  displayName : string?
Instrument used to record Solar Flare data. Found in flr.