Skip to content

NASA Free API Plugin - #88

Open
BusinessPlatformAutomation wants to merge 2 commits into
mainfrom
feature/nasa-plugin
Open

NASA Free API Plugin#88
BusinessPlatformAutomation wants to merge 2 commits into
mainfrom
feature/nasa-plugin

Conversation

@BusinessPlatformAutomation

@BusinessPlatformAutomation BusinessPlatformAutomation commented Jul 10, 2026

Copy link
Copy Markdown

Adds a new SquaredUp plugin for NASA's open data APIs, covering near-Earth asteroid close approaches (NeoWs), space weather alerts (DONKI), tracked satellites (Satellite Situation Center), and the Astronomy Picture of the Day (APOD).

  • Near-Earth Object: asteroids with a close approach in the current 7-day window, with summary and close-approach-history data streams
  • Space Weather Notification: DONKI's unified alert feed (solar flares, CMEs, geomagnetic storms, etc.) from the last 30 days
  • Satellite: ~84 actively tracked spacecraft from NASA's Satellite Situation Center, with a position-over-time data stream (GSE X/Y/Z) built against SSC's unusual Java-serialized JSON format
  • APOD: today's astronomy picture plus a date-range gallery stream, kept as dashboard-only content (no natural entity to index/drill into)

EONET (natural events) was scoped in but dropped: NASA's EONET service mislabels JSON responses with an XML content-type on ~90%+ of requests, which crashes this plugin's response parser with no available workaround. Documented as a known limitation.

Switch to the Preview tab above and select the appropriate PR template to use for this change:

Summary by CodeRabbit

  • New Features
    • Added NASA data integration for near-Earth objects, space weather notifications, satellites, and Astronomy Picture of the Day.
    • Added dashboards for overview metrics, asteroid details, close approaches, and space weather notifications.
    • Added APOD gallery views with selectable date ranges.
    • Added custom object types for near-Earth objects, space weather notifications, and satellites.
    • Added API key setup with connection validation and NASA rate-limit guidance.
  • Documentation
    • Added setup instructions, supported data sources, and known limitations.

Adds a new SquaredUp plugin for NASA's open data APIs, covering near-Earth
asteroid close approaches (NeoWs), space weather alerts (DONKI), tracked
satellites (Satellite Situation Center), and the Astronomy Picture of the
Day (APOD).

- Near-Earth Object: asteroids with a close approach in the current 7-day
  window, with summary and close-approach-history data streams
- Space Weather Notification: DONKI's unified alert feed (solar flares,
  CMEs, geomagnetic storms, etc.) from the last 30 days
- Satellite: ~84 actively tracked spacecraft from NASA's Satellite
  Situation Center, with a position-over-time data stream (GSE X/Y/Z)
  built against SSC's unusual Java-serialized JSON format
- APOD: today's astronomy picture plus a date-range gallery stream, kept
  as dashboard-only content (no natural entity to index/drill into)

EONET (natural events) was scoped in but dropped: NASA's EONET service
mislabels JSON responses with an XML content-type on ~90%+ of requests,
which crashes this plugin's response parser with no available workaround.
Documented as a known limitation.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@BusinessPlatformAutomation
BusinessPlatformAutomation requested a review from a team July 10, 2026 11:29
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 871027c1-dddd-4bed-ad8e-24e1fdbc8771

📥 Commits

Reviewing files that changed from the base of the PR and between a79cffe and b139b55.

📒 Files selected for processing (4)
  • plugins/NASA/v1/dataStreams/neoFeed.json
  • plugins/NASA/v1/dataStreams/scripts/neoFeed.js
  • plugins/NASA/v1/docs/README.md
  • plugins/NASA/v1/metadata.json

📝 Walkthrough

Walkthrough

Changes

The NASA v1 plugin adds API configuration, custom object types, indexed NEO, space-weather, and satellite data, APOD streams, satellite response processing, documentation, and three default dashboards with scoped views.

NASA Plugin

Layer / File(s) Summary
Plugin contracts and indexing
plugins/NASA/v1/metadata.json, plugins/NASA/v1/ui.json, plugins/NASA/v1/custom_types.json, plugins/NASA/v1/configValidation.json, plugins/NASA/v1/indexDefinitions/default.json, plugins/NASA/v1/docs/README.md
Defines NASA plugin metadata, API key input and validation, custom object types, indexed data mappings, and documented configuration and limitations.
NASA data streams and transformations
plugins/NASA/v1/dataStreams/apodToday.json, plugins/NASA/v1/dataStreams/apodGallery.json, plugins/NASA/v1/dataStreams/donkiNotifications.json, plugins/NASA/v1/dataStreams/neoFeed.json, plugins/NASA/v1/dataStreams/neoSummary.json, plugins/NASA/v1/dataStreams/neoCloseApproaches.json, plugins/NASA/v1/dataStreams/scripts/*
Adds APOD, DONKI, and NEO HTTP streams with metadata schemas and scripts for NEO deduplication, normalization, and summary generation.
Satellite streams and SSC response processing
plugins/NASA/v1/dataStreams/satellites.json, plugins/NASA/v1/dataStreams/satelliteLocation.json, plugins/NASA/v1/dataStreams/scripts/satellites.js, plugins/NASA/v1/dataStreams/scripts/satelliteLocation.js
Adds satellite catalog and location requests, unwraps SSC response payloads, filters active observatories, and emits satellite coordinate rows.
Scopes and default dashboards
plugins/NASA/v1/defaultContent/manifest.json, plugins/NASA/v1/defaultContent/scopes.json, plugins/NASA/v1/defaultContent/overview.dash.json, plugins/NASA/v1/defaultContent/nearEarthObject.dash.json, plugins/NASA/v1/defaultContent/spaceWeatherNotification.dash.json
Registers three dashboards and configures overview, NEO, and space-weather tiles with data-stream bindings, scopes, sorting, columns, and hidden fields.

Sequence Diagram(s)

sequenceDiagram
  participant Dashboard
  participant NASADataStream
  participant NASAAPI
  participant TransformScript
  Dashboard->>NASADataStream: request configured NASA data
  NASADataStream->>NASAAPI: send API request with api_key
  NASAAPI-->>NASADataStream: return NASA response
  NASADataStream->>TransformScript: normalize configured responses
  TransformScript-->>Dashboard: return dashboard-ready rows
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: a new NASA plugin for free NASA APIs.
Description check ✅ Passed The description clearly summarizes the new NASA plugin, its supported APIs, scope, and the documented EONET limitation.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@clarkd clarkd added the new-plugin Used to PR newly added plugins label Jul 10, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugins/NASA/v1/dataStreams/neoFeed.json`:
- Around line 11-15: Update the end_date expression in the NeoWs feed parameters
to add 6 days instead of 7, while preserving the existing ISO date formatting
and start_date behavior.

In `@plugins/NASA/v1/dataStreams/satelliteLocation.json`:
- Line 6: Add "objectLimit": 1 to the satellite location stream configuration
associated with baseDataSourceName "httpRequestScopedSingle", ensuring the
stream enforces a single returned object despite the NASA UI only defining
apiKey.

In `@plugins/NASA/v1/dataStreams/scripts/neoFeed.js`:
- Line 1: Update the `byDate` initialization in `neoFeed.js` to guard against
null or undefined `data`, using the same null-safe pattern as `neoSummary.js` or
optional chaining before accessing `near_earth_objects`.

In `@plugins/NASA/v1/dataStreams/scripts/satelliteLocation.js`:
- Around line 41-49: Guard the coordinate-row construction loop by verifying
that xs[i], ys[i], and zs[i] are all defined before pushing a row; skip
iterations with incomplete coordinate data while retaining the existing
coordinateSystem assignment.

In `@plugins/NASA/v1/metadata.json`:
- Around line 5-7: Replace the email value in the metadata.json author.name
field with the contributor’s corresponding GitHub username or organisation,
keeping the author.type value unchanged.

In `@plugins/NASA/v1/ui.json`:
- Around line 2-9: Update the apiKey field in the UI configuration to use
displayName instead of label, and add the required placeholder and title
properties following the ui.json conventions. Because DEMO_KEY is a valid
default, remove validation.required or set it to false.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: 04707802-cb3b-446e-8d4e-26bf4089b1d7

📥 Commits

Reviewing files that changed from the base of the PR and between 18219a1 and a79cffe.

⛔ Files ignored due to path filters (1)
  • plugins/NASA/v1/icon.svg is excluded by !**/*.svg
📒 Files selected for processing (23)
  • plugins/NASA/v1/configValidation.json
  • plugins/NASA/v1/custom_types.json
  • plugins/NASA/v1/dataStreams/apodGallery.json
  • plugins/NASA/v1/dataStreams/apodToday.json
  • plugins/NASA/v1/dataStreams/donkiNotifications.json
  • plugins/NASA/v1/dataStreams/neoCloseApproaches.json
  • plugins/NASA/v1/dataStreams/neoFeed.json
  • plugins/NASA/v1/dataStreams/neoSummary.json
  • plugins/NASA/v1/dataStreams/satelliteLocation.json
  • plugins/NASA/v1/dataStreams/satellites.json
  • plugins/NASA/v1/dataStreams/scripts/neoFeed.js
  • plugins/NASA/v1/dataStreams/scripts/neoSummary.js
  • plugins/NASA/v1/dataStreams/scripts/satelliteLocation.js
  • plugins/NASA/v1/dataStreams/scripts/satellites.js
  • plugins/NASA/v1/defaultContent/manifest.json
  • plugins/NASA/v1/defaultContent/nearEarthObject.dash.json
  • plugins/NASA/v1/defaultContent/overview.dash.json
  • plugins/NASA/v1/defaultContent/scopes.json
  • plugins/NASA/v1/defaultContent/spaceWeatherNotification.dash.json
  • plugins/NASA/v1/docs/README.md
  • plugins/NASA/v1/indexDefinitions/default.json
  • plugins/NASA/v1/metadata.json
  • plugins/NASA/v1/ui.json

Comment thread plugins/NASA/v1/dataStreams/neoFeed.json
Comment thread plugins/NASA/v1/dataStreams/satelliteLocation.json
Comment thread plugins/NASA/v1/dataStreams/scripts/neoFeed.js Outdated
Comment thread plugins/NASA/v1/dataStreams/scripts/satelliteLocation.js
Comment thread plugins/NASA/v1/metadata.json
Comment thread plugins/NASA/v1/ui.json

@clarkd clarkd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few small tweaks @BusinessPlatformAutomation but looks awesome! 👾

Comment thread plugins/NASA/v1/dataStreams/scripts/neoFeed.js Outdated
Comment thread plugins/NASA/v1/dataStreams/neoFeed.json Outdated
Comment thread plugins/NASA/v1/dataStreams/satelliteLocation.json
Comment thread plugins/NASA/v1/docs/README.md
Comment thread plugins/NASA/v1/metadata.json Outdated
Comment thread plugins/NASA/v1/ui.json
Comment thread plugins/NASA/v1/docs/README.md Outdated
Co-authored-by: Dave Clarke <02DClarke@gmail.com>
@clarkd

clarkd commented Aug 7, 2026

Copy link
Copy Markdown
Member

@BusinessPlatformAutomation I've made the required changes - if you're happy for me to merge I can get this one in?

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

🧩 Plugin PR Summary

📦 Modified Plugins

  • plugins/NASA/v1

📋 Results

Step Status
Validation ✅ Passed
Deployment 🚀 Deployed

🔍 Validation Details

nasa
{
  "valid": true,
  "pluginName": "nasa",
  "pluginType": "hybrid",
  "summary": {
    "Data Streams": 8,
    "Import Definitions": 1,
    "Correlation Rules": 0,
    "UI Configuration": true,
    "Has Icon": true,
    "Has Default Content": true,
    "Config Validation": true,
    "Custom Types": true
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-plugin Used to PR newly added plugins

Development

Successfully merging this pull request may close these issues.

2 participants