Spacex API
Ruby API wrapper to consume the SpaceX API.
The gem currently support the latest SpaceX API version (V4).
Installation
Add this line to your application's Gemfile:
gem 'spacex_api'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install spacex_api
Usage
Capsules
Detailed info for serialized dragon capsules
- Get all capsules:
SpacexApi.client.capsules
- Get one capsule:
SpacexApi.client.get_capsule('id')
- Query capsules:
SpacexApi.client.query_capsules({}.to_json)
- See query guide for more details on building queries and paginating
capsule = SpacexApi.client.capsules.first
capsule.id
=> "5e9e2c5bf35918ed873b2664"
capsule.last_update
=> "Hanging in atrium at SpaceX HQ in Hawthorne"
Company Info
Detailed info about SpaceX as a company
- Get company info:
SpacexApi.client.company_info
company_info = SpacexApi.client.company_info
company_info.employees
=> 9500
company_info.headquarters.address
=> "Rocket Road"
Cores
Detailed info for serialized first stage cores
- Get all cores:
SpacexApi.client.cores
- Get one core:
SpacexApi.client.get_core('id')
- Query cores:
SpacexApi.client.query_cores({}.to_json)
- See query guide for more details on building queries and paginating
core = SpacexApi.client.cores.first
core.id
=> "5e9e289df35918033d3b2623"
core.status
=> "lost"
Crew
Detailed info on dragon crew members
- Get all crew members:
SpacexApi.client.crews
- Get one crew member:
SpacexApi.client.get_crew('id')
- Query crew members:
SpacexApi.client.query_crews({}.to_json)
- See query guide for more details on building queries and paginating
crew = SpacexApi.client.crews.first
crew.id
=> "5ebf1a6e23a9a60006e03a7a"
crew.agency
=> "NASA"
Dragons
Detailed info on dragon crew members
- Get all dragons:
SpacexApi.client.dragons
- Get one dragon:
SpacexApi.client.get_dragon('id')
- Query dragons:
SpacexApi.client.query_dragons({}.to_json)
- See query guide for more details on building queries and paginating
dragon = SpacexApi.client.dragons.first
dragon.id
=> "5e9d058759b1ff74a7ad5f8f"
dragon.heat_shield.material
=> "PICA-X"
Historical events
Detailed info on SpaceX historical events
- Get all historical events:
SpacexApi.client.historical_events
- Get one historical event:
SpacexApi.client.get_historical_event('id')
- Query historical events:
SpacexApi.client.query_historical_events({}.to_json)
- See query guide for more details on building queries and paginating
historical_event = SpacexApi.client.historical_events.first
historical_event.id
=> "5f6fb2cfdcfdf403df37971e"
historical_event.event_date_utc
=> "2008-09-28T23:15:00Z"
Landpads
Detailed info about landing pads and ships
- Get all landpads:
SpacexApi.client.landpads
- Get one landpad:
SpacexApi.client.get_landpad('id')
- Query landpads:
SpacexApi.client.query_landpads({}.to_json)
- See query guide for more details on building queries and paginating
landpad = SpacexApi.client.landpads.first
landpad.id
=> "5e9e3032383ecb267a34e7c7"
landpad.full_name
=> "Landing Zone 1"
Launches
Detailed info about launches
- Get past launches:
SpacexApi.client.past_launches
- Get upcoming launches:
SpacexApi.client.upcoming_launches
- Get latest launch:
SpacexApi.client.latest_launch
- Get next launch:
SpacexApi.client.next_launch
- Get all launches:
SpacexApi.client.launches
- Get one launch:
SpacexApi.client.get_launch('id')
- Query launches:
SpacexApi.client.query_launches({}.to_json)
- See query guide for more details on building queries and paginating
launch = SpacexApi.client.launches.first
launch.id
=> "5eb87cd9ffd86e000604b32a"
launch.name
=> "FalconSat"
Launchpads
Detailed info about launchpads
- Get all launchpads:
SpacexApi.client.launchpads
- Get one launchpad:
SpacexApi.client.get_launchpad('id')
- Query launchpads:
SpacexApi.client.query_launchpads({}.to_json)
- See query guide for more details on building queries and paginating
launchpad = SpacexApi.client.launchpads.first
launchpad.id
=> "5e9e4501f5090910d4566f83"
launchpad.name
=> "VAFB SLC 3W"
Payloads
Detailed info about launch payloads
- Get all payloads:
SpacexApi.client.payloads
- Get one payload:
SpacexApi.client.get_payload('id')
- Query payloads:
SpacexApi.client.query_payloads({}.to_json)
- See query guide for more details on building queries and paginating
payload = SpacexApi.client.payloads.first
payload.id
=> "5eb0e4b5b6c3bb0006eeb1e1"
payload.nationalities
=> ["United States"]
Roadster info
Detailed info about Elon's Tesla roadster's current position
- Get roadster info:
SpacexApi.client.roadster
- Query roadster info:
SpacexApi.client.query_roadster({}.to_json)
- See query guide for more details on building queries and paginating
roadster = SpacexApi.client.roadster
roadster.id
=> "5eb75f0842fea42237d7f3f4"
roadster.launch_mass_kg
=> 1350
Rockets
Detailed info about rocket versions
- Get all rockets:
SpacexApi.client.rockets
- Get one rocket:
SpacexApi.client.get_rocket('id')
- Query rockets:
SpacexApi.client.query_rockets({}.to_json)
- See query guide for more details on building queries and paginating
rocket = SpacexApi.client.rockets.first
rocket.id
=> "5e9d0d95eda69955f709d1eb"
rocket.company
=> "SpaceX"
Ships
Detailed info about ships in the SpaceX fleet
- Get all ships:
SpacexApi.client.ships
- Get one ship:
SpacexApi.client.get_ship('id')
- Query ships:
SpacexApi.client.query_ships({}.to_json)
- See query guide for more details on building queries and paginating
ship = SpacexApi.client.ships.first
ship.id
=> "5ea6ed2d080df4000697c901"
ship.type
=> "Tug"
Starlink
Detailed info about Starlink satellites and orbits. Includes raw orbit data from Space Track, updated hourly.
- Get all Starlink sats:
SpacexApi.client.starlinks
- Get one Starlink sat:
SpacexApi.client.get_starlink('id')
- Query Starlink sats:
SpacexApi.client.query_starlinks({}.to_json)
- See query guide for more details on building queries and paginating
starlink = SpacexApi.client.starlinks.first
starlink.id
=> "5eed770f096e59000698560d"
starlink.version
=> "v0.9"
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/victorperez/spacex-api-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
License
The gem is available as open source under the terms of the MIT License.
Code of Conduct
Everyone interacting in the SpacexApi project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.