{"openapi":"3.1.0","info":{"title":"solar-system-db REST API","description":"A queryable catalogue of known solar-system objects — planets, moons, dwarf planets, asteroids, comets, TNOs, centaurs, and rings. Sourced from NASA/JPL and the IAU Minor Planet Center. **For astronomy, science education, sci-fi worldbuilding, and model-building — not astrology.**","contact":{"name":"solar-system-db","url":"https://github.com/wizzouk2/solar-system-db"},"license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"},"version":"0.1.0"},"paths":{"/api/v1/objects":{"get":{"tags":["catalog"],"summary":"Filter solar-system objects","operationId":"get_objects_api_v1_objects_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"object_type filter (planet/moon/asteroid/comet/...)","title":"Type"},"description":"object_type filter (planet/moon/asteroid/comet/...)"},{"name":"parent","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"parent body name/id (e.g. 'Jupiter')","title":"Parent"},"description":"parent body name/id (e.g. 'Jupiter')"},{"name":"min_radius_km","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Radius Km"}},{"name":"max_radius_km","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Radius Km"}},{"name":"max_eccentricity","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Eccentricity"}},{"name":"min_semi_major_axis_au","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Semi Major Axis Au"}},{"name":"max_semi_major_axis_au","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Semi Major Axis Au"}},{"name":"neo","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Neo"}},{"name":"pha","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pha"}},{"name":"named_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Named Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{name_or_designation}":{"get":{"tags":["catalog"],"summary":"Get full record for one object","operationId":"get_object_api_v1_objects__name_or_designation__get","parameters":[{"name":"name_or_designation","in":"path","required":true,"schema":{"type":"string","title":"Name Or Designation"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/planets/{name}/moons":{"get":{"tags":["catalog"],"summary":"List moons of a planet or dwarf planet","operationId":"list_moons_api_v1_planets__name__moons_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/planets/{name}/rings":{"get":{"tags":["catalog"],"summary":"List rings of a planet or dwarf planet","operationId":"list_rings_api_v1_planets__name__rings_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dwarf-planets":{"get":{"tags":["catalog"],"summary":"IAU dwarf planets (+ candidates if requested)","operationId":"list_dwarf_planets_api_v1_dwarf_planets_get","parameters":[{"name":"include_candidates","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Candidates"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/neos":{"get":{"tags":["catalog"],"summary":"Near-Earth Objects","operationId":"list_neos_api_v1_neos_get","parameters":[{"name":"min_diameter_km","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Diameter Km"}},{"name":"max_diameter_km","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Diameter Km"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/comets/periodic":{"get":{"tags":["catalog"],"summary":"Numbered periodic comets","operationId":"list_periodic_comets_api_v1_comets_periodic_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tnos":{"get":{"tags":["catalog"],"summary":"Trans-Neptunian objects + centaurs","operationId":"list_tnos_api_v1_tnos_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"tags":["catalog"],"summary":"Fuzzy text search across names/designations/discoverers","operationId":"search_api_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Search query","title":"Q"},"description":"Search query"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/positions/{name_or_designation}":{"get":{"tags":["positions"],"summary":"Heliocentric position by two-body Kepler propagation","operationId":"compute_position_api_v1_positions__name_or_designation__get","parameters":[{"name":"name_or_designation","in":"path","required":true,"schema":{"type":"string","title":"Name Or Designation"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"ISO date or datetime","title":"Date"},"description":"ISO date or datetime"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/perihelion/{name_or_designation}":{"get":{"tags":["positions"],"summary":"Next perihelion JD","operationId":"next_perihelion_api_v1_perihelion__name_or_designation__get","parameters":[{"name":"name_or_designation","in":"path","required":true,"schema":{"type":"string","title":"Name Or Designation"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/object-types":{"get":{"tags":["reference"],"summary":"Object types present in the catalogue and their counts","operationId":"list_object_types_api_v1_object_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/sources":{"get":{"tags":["reference"],"summary":"Upstream data sources + last-retrieved timestamps","operationId":"get_sources_api_v1_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/schema":{"get":{"tags":["reference"],"summary":"SQLite schema DDL (read-only)","operationId":"get_schema_api_v1_schema_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/v1/stats":{"get":{"tags":["reference"],"summary":"Catalogue stats + last refresh timestamp","operationId":"get_stats_api_v1_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}