r-spacex / SpaceX-API

:rocket: Open Source REST API for SpaceX launch, rocket, core, capsule, starlink, launchpad, and landing pad data.
Apache License 2.0
10.43k stars 925 forks source link

Ideas for Expansion #1

Closed jakewmeyer closed 2 years ago

jakewmeyer commented 7 years ago

Please feel free to post any suggestions, corrections, or additions I should make to the data. I'll try my best to keep it as current as possible 👍

Thanks!

garyjacobs commented 6 years ago

Hey @jakewmeyer the one for the smaller size is for Iridium NEXT Mission 3 :

https://images2.imgbox.com/1c/e0/lhGbeqkh_o.png

Thanks @TsaiZinan

jakewmeyer commented 6 years ago

@TsaiZinan Updated. Thanks!

kogden commented 6 years ago

Any word on 'future launches'?

jakewmeyer commented 6 years ago

@kogden upcoming launches (aka future launches) can be found at the following endpoint:

https://api.spacexdata.com/v2/launches/upcoming

More info can be found on the launches wiki page.

kogden commented 6 years ago

My mistake - last time I checked that page I could not see any data but now I can. Appreciate it!

about-future commented 6 years ago

Hi Jake,

On Launchpads Endpoint, could you please add a numerical id to each launch pad? Implementing a ViewPager with a string id(Ex: "ksc_lc_39a") is a nightmare in Android. Example: {"padId":4,"id":"ksc_lc_39a","full_name":"Kennedy Space... } Same issue for Rockets endpoint. Example: {"rocketId":3,"id":"falconheavy","name":"Falcon Heavy","type":"rock... }

Also, on Rockets endpoint, each value for "boosters" key, starts from 0. Was this on purpose or is it a mistake? Example: Falcon 1 - boosters: 0 Falcon 9 - boosters: 0 Falcon Heavy - boosters: 2 BFR - boosters: 0

Thank you so much in advance!

jakewmeyer commented 6 years ago

@about-future Will do

Regarding the boosters, I think that was a recent change by someone? Don't remember having that in there originally. I assume it refers to side boosters only, since the others have zero. I'll see if I can get that renamed to something more specific.

about-future commented 6 years ago

The side boosters count makes sense! I thought it returns the total amount of boosters. 😄

about-future commented 6 years ago

@jakewmeyer: don't rename "boosters". I believe it's ok the way it is. Was my misunderstanding and thought it's the amount of cores, not the side boosters.

jakewmeyer commented 6 years ago

Gotcha 👍 Will leave it as is

jesusrp98 commented 6 years ago

Hey @jakewmeyer. I was wondering if capsule description could be a thing, like rocket descriptions are. For example:

{ "id": "dragon", "name": "Dragon", "type": "capsule", "active": false, "crew_capacity": 0, ... "description": "Dragon is a reusable spacecraft developed by SpaceX, an American private space transportation company based in Hawthorne, California. Dragon is launched into space by the SpaceX Falcon 9 two-stage-to-orbit launch vehicle. The Dragon spacecraft was originally designed for human travel, but so far has only been used to deliver cargo to the International Space Station (ISS)." ... }

This is a sample description from Wikipedia. Would this something easy to implement? Thank you, doing great job with the API :)

jakewmeyer commented 6 years ago

@jesusrp98 Added! Also added wikipedia links to both, just in case you need more details to link to.

Also noticed we had both Dragon 2 and Crew Dragon in there as separate entries, so I merged them, since they're the same platform now.

Thanks for the suggestion! 👍

samcat116 commented 6 years ago

This might be a little pre-mature, but we might want to start planning how to handle crew members. What info about crew members should be included?

jakewmeyer commented 6 years ago

@samcat116 New endpoint could be created to house the more detailed crew info, something like api.spacexdata.com/v2/crew or api.spacexdata.com/v2/info/crew

As far as the launches go, just having the names of the crew attached would probably suffice, but the main decision will be the placement. Best place is probably in the payload information, but it could have its own section if need be.

jesusrp98 commented 6 years ago

Regarding my last comment, since you added Wikipedia article links to the capsules, would it be possible to add also Wikipedia article links to rockets, like Falcon 9 & BFR? Thank you so much for your hard work @jakewmeyer :)

jakewmeyer commented 6 years ago

@jesusrp98 Added 👌

jeroenboumans commented 6 years ago

Hi @jakewmeyer , like mentioned in #116 could you please add the unix timestamp to the static fire test as well like all the other dates? Ticket is closed, and I cannot reopen it.

jakewmeyer commented 6 years ago

reopened it 👍

jakewmeyer commented 6 years ago

@jeroenboumans Added

jesusrp98 commented 5 years ago

Hey!

I was just messing around with the idea of having photos attached to all SpaceX vehicles: Dragons, Falcons & Tesla Roadster. It could pull them from the SpaceX’s Flickr page, where all photos are public domain. Each vehicle could have 2 to 4 photos.

I selected some possible photos for some vehicles, mainly Falcon Heavy, BFR & Falcon 9; but the idea would be to add photos from Falcon 1 to Crew Dragon as well.

https://www.flickr.com/photos/spacex/40110304192/ https://www.flickr.com/photos/spacex/40126461411/ https://www.flickr.com/photos/spacex/25254688767/ https://www.flickr.com/photos/spacex/30934146988/ https://www.flickr.com/photos/spacex/36689886890/ https://www.flickr.com/photos/spacex/36571921725/

What do you think? Could this be a good idea to implement? If so, we could make a list of remarkable photos to add.

I want your opinion: thanks :)

jakewmeyer commented 5 years ago

Sounds good, since this was recently added to launches 👍

jesusrp98 commented 5 years ago

I saw that the other day and realized that adding Flickr pictures to all SpaceX's vehicles could be great! Going to elaborate a list with 2 to 4 images per vehicle. Going to post it tomorrow :)

jesusrp98 commented 5 years ago

Already done the picture list and attached it to this comment. Please, take a look a give your opinion. It includes public-domain photos for each SpaceX's vehicle: Dragon 1 & 2, Falcon 1 to BFR & Tesla Roadster.

Here is an example of how can be implemented, following how it’s implemented in ‘launches’:

{
    "id": "dragon2",
    "name": "Dragon 2",
    ...
    “flickr_images”: [
        “https://farm8.staticflickr.com/7647/16581815487_6d56cb32e1_b.jpg”,
        “https://farm1.staticflickr.com/780/21119686299_c88f63e350_b.jpg”,
        “https://farm9.staticflickr.com/8588/16661791299_a236e2f5dc_b.jpg”
    ],
    ...
}

Thanks! :)

jakewmeyer commented 5 years ago

Thanks for compiling the list 👍 Added all of them

chrisgriffith commented 5 years ago

Some thoughts on the crew node:

{ "crew": { "number": 3, "people": [{ "name": "Robert Behnken", "gender": "male", "age": 48, "nationality": "us", "role": "Mission Specialist 1", "isAlive": true, "birthDate": "July 28, 1970", "deathDate": "", "isCivilian": false, "service": "USAF", "rank": Colonel", "bio": "Robert Louis 'Bob' Behnken is a United States Air Force officer, NASA astronaut and former Chief of the Astronaut Office. Behnken holds a Ph.D in Mechanical Engineering and holds the rank of Colonel in the U.S. Air Force. Col. Behnken has logged over 1,000 flight hours in 25 different aircraft.", "bioLink": "https://en.wikipedia.org/wiki/Robert_L._Behnken" }] } }

a list of their social media accounts could also be included.

jesusrp98 commented 5 years ago

Regarding the crew situation, what about a new endpoint called /crew (for example) with this structure:

[
  {
    "name": "First Crew Mission Name",
    "id": "first_crew_mission_name",
    "crew": {
      // All crew information
    }
  },
  ...
]

This would be similar to what we have with cores & capsules. Having the tag crew_mission in the specific launch, then using it to get the whole crew's details.

Also, in the launch endpoint could reside some basic information about each astronaut:

{
  "mission_name": "First Crew Mission",
  ...
  "crew_mission": "first_crew_mission_name",
  "crew": [
    {
      "name": "Johnny Appleseed"
      "role": "Mission Specialist 1"
    },
    ...
  ]

Also, consider adding more piece of information, like photos URL and number of flights, for example.

jakewmeyer commented 5 years ago

I'll look at this more over the weekend, and come up with a schema example to iterate on 👍

sramzan commented 5 years ago

Where exactly does the data come from for the API calls? i.e. is the DB manually filled with data and then the API queries it? Or, it actively populated on the fly?

Just curious but I couldn't figure out where the data population was being handled in the code. From what I understand it's just being pulled from MongoDB.

jakewmeyer commented 5 years ago

The DB is filled with most of the data manually, and a bunch of background scripts help out with the time sensitive/tedious updating tasks.

sramzan commented 5 years ago

Thanks @jakewmeyer! - Anyway, I could take a peek at those scripts/DB? I was looking to work on the data portion of it but didn't want to go and create a separate repo without seeing if there is a way to help here first

jakewmeyer commented 5 years ago

Scripts are here

Latest mongodump & json dump from db is here

sramzan commented 5 years ago

thanks! Sorry I forgot to reply

chrislongden commented 5 years ago

Awesome work on this API, I've been playing around with it and slowly building out an app to show all the information that you provide.

Last nights (I'm in England) launch of the Falcon Heavy was scrubbed and re-scheduled for tonight (11 April) but I noticed the API is still showing the original date.

I've looked at the script you have for pulling the manifest from the spacex reddit wiki page and noticed the date/time hasn't been updated there.

However, on the right side of the page there is a section "Select Upcoming Events" which shows a handful of upcoming launches, now the date/time here is correct.

I was wondering if you'd be able to scan the page as normal but then to scan this "Select Upcoming Events" to refine the date/time in the API in case of scrubbed launches etc.

jakewmeyer commented 5 years ago

@chrislongden

I'll look into adding that as another check. The wiki is awesome for longer term dates, but once you get to the day of, it's usually not updated as much, since most updates come in through the launch threads. Problem with those is the info is inconsistently inconsistent, which makes it harder to scrape.

Ideally I'd like to cut off the wiki time updates 24 hours out, and switch over to something that is updated more frequently, like the sidebar or launch thread.

jeroenboumans commented 5 years ago

@jakewmeyer Just thinking out loud: would it be possible to filter @SpaceX's tweets (example) for that? #224

jakewmeyer commented 5 years ago

@jeroenboumans Maybe. Seriously considering something like that for the static fire announcements, since the format is pretty consistent.

robinschmied commented 5 years ago

Hi @jakewmeyer. Would it be possible to add the "site_name": "CCAFS SLC 40" property from the launches endpoint to the the launchpad endpoint. Currently, there is just site_id and site_name_long, but no site_name.

jakewmeyer commented 5 years ago

@robinschmied Added 👍

timisenman commented 4 years ago

It would be great to have a manifest for SpaceX tests as well, like Starhopper, and Starship, with their associated times, details, etc.

timisenman commented 4 years ago

One thing I've done with my own parsing of the API is extract subtitles from the launches, to allow for more nuanced use of the titles in my app.

It would be nice to have this done by the API, so other consumers could make use of the cleaner titles as well.

Example: Smallsat SSO Rideshare 2 Mission 9 If the title has "Mission" or "()" in it, I will take the substring starting after "Mission" to make...

Title: Smallsat SSO Rideshare 2 
Subtitle: Mission 9

Which I then use for cleaner headers. IMG_4346

antoinegag commented 4 years ago

Would it be out of scope to provide Starlink data? I think it could make for interesting uses.

jakewmeyer commented 4 years ago

@antoinegag What starlink data are you thinking of?

antoinegag commented 4 years ago

@jakewmeyer I'm not too knowledgeable about what data is currently publicly available on starlink but things like numbers of sats out there, data about their positions, their operational state etc.

marcozambi commented 4 years ago

Just a question: is the timeline info not provided anymore? It's been a few launches without any of that...

jakewmeyer commented 4 years ago

@antoinegag Bare minimum we have all the NORAD id's for each starlink sat, so theoretically we could have a list of all the satellites, with current orbit info, updated hourly. That seems to be the most useful info surrounding them, and more info could be added as satellites are added or decommissioned.

jakewmeyer commented 4 years ago

@marcozambi It's something I've been neglecting to do. It's one of the few things not automated, so it requires parsing the press release, converting all the times, and making sure it falls in line with previous ones.

The current format isn't great, and I don't think I'll support it going forward without automating it.

I know one of the more useful pieces of data from it is the webcast liftoff timestamp, so I'd be willing to add a property for that, similar to the youtube_id property.

jesusrp98 commented 4 years ago

PDF parsing is not automatic? I think there are a couple of services that would be helpful in order to extract timeline info from the press kit SpaceX provides.

AlbericTrancart commented 4 years ago

Hello @jakewmeyer ! I second the idea of having data about Starlink sats. For instance with it we could do stats about in orbit/decayed sats over time.

All the data seems to be here: https://celestrak.com/pub/satcat.txt I can't use this resource in SpaceX Stats because it's over 6MB and the CORS policy forbids it, but I'll happily write an update script and submit a PR if you want.

I know that you are focused on v4 right now but after that it could be a great addition :+1: The real issue will be to find a format and/or filtering that can handle 12k sats hehe... like a per sat endpoint and a "constellation" endpoint that aggregates the thing

jakewmeyer commented 4 years ago

Agreed, this would be cool to have 👍 After v4 I'll take a closer look

SturdyPose commented 4 years ago

Is it possible to add an image URL to each rocket? Will it create a hassle to sustain them?