Orbit Guru · GPT 작업
Satellite Tracker
This API Tracks satellite and space objects and provides visual information about the.
GET /positions/{id}/{observer_lat}/{observer_lng}/{observer_alt}/{seconds}Retrieve the future positions of any satellite as groundtrack (latitude, longitude) to display orbits on maps.Retrieve the future positions of any satellite as groundtrack (latitude, longitude). Also return the satellite's azimuth and elevation with respect to the observer location. Each element in the response array is one second of calculation. First element is calculated for current UTC time.
GET /visualpasses/{id}/{observer_lat}/{observer_lng}/{observer_alt}/{days}/{min_visibility}Get Visual passes for any satellite relative to a location on Earth.A "visual pass" is a pass that should be optically visible on the entire (or partial) duration of crossing the sky. For that to happen, the satellite must be above the horizon, illumintaed by Sun (not in Earth shadow), and the sky dark enough to allow visual satellite observation.
GET /radiopasses/{id}/{observer_lat}/{observer_lng}/{observer_alt}/{days}/{min_elevation}Get radio passes for any satellite relative to a location on Earth.The "radio passes" are similar to "visual passes", the only difference being the requirement for the objects to be optically visible for observers. This function is useful mainly for radio communications.
GET /api/tle/{id}get TLE (Two line element) for a provided satellite idReturn single TleModel for requested satellite id
GET /api/tle/{id}/propagatepredicts the position of the satellite at a given time.Return propagation result with satellite position and velocity using SGP4 or SDP4 algorithms
원본 API 스키마
{
"openapi": "3.0.3",
"info": {
"title": "Satellite Tracker",
"description": "This API Tracks satellite and space objects and provides visual information about the.",
"version": "1.0.0"
},
"servers": [
{
"url": "https://dhe7zbuioh.execute-api.eu-central-1.amazonaws.com/prod"
}
],
"paths": {
"/positions/{id}/{observer_lat}/{observer_lng}/{observer_alt}/{seconds}": {
"get": {
"summary": "Retrieve the future positions of any satellite as groundtrack (latitude, longitude) to display orbits on maps.",
"description": "Retrieve the future positions of any satellite as groundtrack (latitude, longitude). Also return the satellite's azimuth and elevation with respect to the observer location. Each element in the response array is one second of calculation. First element is calculated for current UTC time.",
"operationId": "getSatellitePosition",
"parameters": [
{
"name": "id",
"in": "path",
"description": "Norad Id of the satellite",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "observer_lat",
"in": "path",
"description": "Observer's latitide (decimal degrees format)",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "observer_lng",
"in": "path",
"description": "Observer's longitude (decimal degrees format)",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "observer_alt",
"in": "path",
"description": "Observer's altitude above sea level in meters",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "seconds",
"in": "path",
"description": "Number of days of prediction (max 10)",
"required": true,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SatellitePositionResponse"
}
}
}
},
"400": {
"description": "Invalid Norad Id supplied"
},
"404": {
"description": "Satellite not found"
},
"405": {
"description": "Validation exception"
}
}
}
},
"/visualpasses/{id}/{observer_lat}/{observer_lng}/{observer_alt}/{days}/{min_visibility}": {
"get": {
"summary": "Get Visual passes for any satellite relative to a location on Earth.",
"description": "A \"visual pass\" is a pass that should be optically visible on the entire (or partial) duration of crossing the sky. For that to happen, the satellite must be above the horizon, illumintaed by Sun (not in Earth shadow), and the sky dark enough to allow visual satellite observation.",
"operationId": "getVisualPass",
"parameters": [
{
"name": "id",
"in": "path",
"description": "Norad Id of the satellite",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "observer_lat",
"in": "path",
"description": "Observer's latitide (decimal degrees format)",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "observer_lng",
"in": "path",
"description": "Observer's longitude (decimal degrees format)",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "observer_alt",
"in": "path",
"description": "Observer's altitude above sea level in meters",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "days",
"in": "path",
"description": "Number of days of prediction (max 10)",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "min_visibility",
"in": "path",
"description": "Minimum number of seconds the satellite should be considered optically visible during the pass to be returned as result",
"required": true,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VisualPassResponse"
}
}
}
},
"400": {
"description": "Invalid Norad Id supplied"
},
"404": {
"description": "Satellite not found"
},
"405": {
"description": "Validation exception"
}
}
}
},
"/radiopasses/{id}/{observer_lat}/{observer_lng}/{observer_alt}/{days}/{min_elevation}": {
"get": {
"summary": "Get radio passes for any satellite relative to a location on Earth.",
"description": "The \"radio passes\" are similar to \"visual passes\", the only difference being the requirement for the objects to be optically visible for observers. This function is useful mainly for radio communications.",
"operationId": "getRadioPasses",
"parameters": [
{
"name": "id",
"in": "path",
"description": "Norad Id of the satellite",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "observer_lat",
"in": "path",
"description": "Observer's latitide (decimal degrees format)",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "observer_lng",
"in": "path",
"description": "Observer's longitude (decimal degrees format)",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "observer_alt",
"in": "path",
"description": "Observer's altitude above sea level in meters",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "days",
"in": "path",
"description": "Number of days of prediction (max 10)",
"required": true,
"schema": {
"type": "number"
}
},
{
"name": "min_elevation",
"in": "path",
"description": "The minimum elevation acceptable for the highest altitude point of the pass (degrees)",
"required": true,
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RadioPassResponse"
}
}
}
},
"400": {
"description": "Invalid Norad Id supplied"
},
"404": {
"description": "Satellite not found"
},
"405": {
"description": "Validation exception"
}
}
}
},
"/api/tle/{id}": {
"get": {
"summary": "get TLE (Two line element) for a provided satellite id",
"operationId": "getTle",
"description": "Return single TleModel for requested satellite id",
"parameters": [
{
"name": "id",
"in": "path",
"description": "Satellite id / norad id",
"required": true,
"schema": {
"example": 43638,
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Resource found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TleModel"
}
}
}
},
"404": {
"$ref": "#/components/responses/404"
},
"500": {
"$ref": "#/components/responses/500"
}
}
}
},
"/api/tle/{id}/propagate": {
"get": {
"summary": "predicts the position of the satellite at a given time.",
"description": "Return propagation result with satellite position and velocity using SGP4 or SDP4 algorithms",
"operationId": "propagate",
"parameters": [
{
"name": "id",
"in": "path",
"description": "Target norad id for which propagation is calculated",
"required": true,
"schema": {
"example": 43638,
"type": "integer"
}
},
{
"name": "date",
"in": "query",
"description": "Target date and time",
"required": false,
"schema": {
"type": "string",
"example": "2021-04-20T16:28:40+00:00"
}
}
],
"responses": {
"200": {
"description": "Resource found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Propagation"
}
}
}
},
"404": {
"$ref": "#/components/responses/404"
},
"500": {
"$ref": "#/components/responses/500"
}
}
}
}
},
"components": {
"schemas": {
"SatellitePositionResponse": {
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"satname": {
"type": "string",
"example": "SPACE STATION"
},
"satid": {
"type": "integer",
"example": 25544
},
"transactionscount": {
"type": "integer",
"example": 5
}
}
},
"positions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"satlatitude": {
"type": "number",
"format": "float",
"example": -39.90318514
},
"satlongitude": {
"type": "number",
"format": "float",
"example": 158.28897924
},
"sataltitude": {
"type": "number",
"format": "float",
"example": 417.85
},
"azimuth": {
"type": "number",
"format": "float",
"example": 254.31
},
"elevation": {
"type": "number",
"format": "float",
"example": -69.09
},
"ra": {
"type": "number",
"format": "float",
"example": 44.77078138
},
"dec": {
"type": "number",
"format": "float",
"example": -43.99279118
},
"timestamp": {
"type": "integer",
"example": 1521354418
}
}
}
}
}
},
"VisualPassResponse": {
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"satid": {
"type": "integer",
"example": 25544
},
"satname": {
"type": "string",
"example": "SPACE STATION"
},
"transactionscount": {
"type": "integer",
"example": 4
},
"passescount": {
"type": "integer",
"example": 3
}
}
},
"passes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"startAz": {
"type": "number",
"format": "float",
"example": 307.21
},
"startAzCompass": {
"type": "string",
"example": "NW"
},
"startEl": {
"type": "number",
"format": "float",
"example": 13.08
},
"startUTC": {
"type": "integer",
"example": 1521368025
},
"maxAz": {
"type": "number",
"format": "float",
"example": 225.45
},
"maxAzCompass": {
"type": "string",
"example": "SW"
},
"maxEl": {
"type": "number",
"format": "float",
"example": 78.27
},
"maxUTC": {
"type": "integer",
"example": 1521368345
},
"endAz": {
"type": "number",
"format": "float",
"example": 132.82
},
"endAzCompass": {
"type": "string",
"example": "SE"
},
"endEl": {
"type": "integer",
"example": 0
},
"endUTC": {
"type": "integer",
"example": 1521368660
},
"mag": {
"type": "number",
"format": "float",
"example": -2.4
},
"duration": {
"type": "integer",
"example": 485
}
}
}
}
}
},
"RadioPassResponse": {
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"satid": {
"type": "integer",
"example": 25544
},
"satname": {
"type": "string",
"example": "SPACE STATION"
},
"transactionscount": {
"type": "integer",
"example": 4
},
"passescount": {
"type": "integer",
"example": 3
}
}
},
"passes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"startAz": {
"type": "number",
"format": "float",
"example": 311.57
},
"startAzCompass": {
"type": "string",
"example": "NW"
},
"startUTC": {
"type": "integer",
"example": 1521451295
},
"maxAz": {
"type": "number",
"format": "float",
"example": 37.98
},
"maxAzCompass": {
"type": "string",
"example": "NE"
},
"maxEl": {
"type": "number",
"format": "float",
"example": 52.19
},
"maxUTC": {
"type": "integer",
"example": 1521451615
},
"endAz": {
"type": "number",
"format": "float",
"example": 118.6
},
"endAzCompass": {
"type": "string",
"example": "ESE"
},
"endUTC": {
"type": "integer",
"example": 1521451925
}
}
}
}
}
},
"Exception": {
"properties": {
"response": {
"properties": {
"message": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"TleModel": {
"allOf": [
{
"properties": {
"@context": {
"type": "string",
"example": "https://www.w3.org/ns/hydra/context.jsonld"
},
"@id": {
"type": "string",
"example": "https://tle.ivanstanojevic.me/api/tle/43638"
},
"@type": {
"type": "string",
"example": "TleModel"
},
"satelliteId": {
"type": "integer",
"example": 43638
},
"name": {
"type": "string",
"example": "1998-067PN"
},
"date": {
"type": "string",
"example": "2021-02-16T06:41:41+00:00"
},
"line1": {
"type": "string",
"example": "1 43638U 98067PN 21047.27895714 .00025925 00000-0 18734-3 0 9990"
},
"line2": {
"type": "string",
"example": "2 43638 51.6322 151.1192 0001883 262.5831 97.4954 15.73313437134937"
}
},
"type": "object"
}
]
},
"Propagation": {
"properties": {
"@context": {
"type": "string",
"example": "https://www.w3.org/ns/hydra/context.jsonld"
},
"@id": {
"type": "string",
"example": "https://tle.ivanstanojevic.me/api/tle/44859/propagate?date=2021-04-26T08:39:45+00:00"
},
"@type": {
"type": "string",
"example": "SatellitePropagationResult"
},
"tle": {
"$ref": "#/components/schemas/TleModel"
},
"algorithm": {
"type": "string",
"enum": [
"SGP4",
"SDP4"
],
"description": "Algorithm used for propagation. Determined based on mean motion.",
"example": "SGP4"
},
"vector": {
"properties": {
"reference_frame": {
"type": "string",
"example": "ECI"
},
"position": {
"properties": {
"x": {
"type": "number",
"example": -2450.396984017652
},
"y": {
"type": "number",
"example": 6101.198295995954
},
"z": {
"type": "number",
"example": -6032.216318229235
},
"r": {
"type": "number",
"example": 8922.819046481767
},
"unit": {
"type": "string",
"example": "km"
}
},
"type": "object"
},
"velocity": {
"properties": {
"x": {
"type": "number",
"example": -0.1644949004552056
},
"y": {
"type": "number",
"example": 4.639904402973215
},
"z": {
"type": "number",
"example": 4.406398357056158
},
"r": {
"type": "number",
"example": 6.400946642651633
},
"unit": {
"type": "string",
"example": "km/s"
}
},
"type": "object"
}
},
"type": "object"
},
"geodetic": {
"properties": {
"latitude": {
"type": "number",
"example": -42.67210184042445
},
"longitude": {
"type": "number",
"example": 124.524923099869
},
"altitude": {
"type": "number",
"example": 2554.4740343929398
}
},
"type": "object"
},
"parameters": {
"properties": {
"date": {
"type": "string",
"example": "2021-04-26T08:39:45+00:00"
},
"satelliteId": {
"type": "string",
"example": "44859"
}
},
"type": "object"
}
},
"type": "object"
}
},
"responses": {
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Exception"
},
"example": {
"response": {
"message": "Resource not found"
}
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Exception"
},
"example": {
"response": {
"message": "Server has encountered an internal error"
}
}
}
}
}
}
}
}