Upload folder using huggingface_hub
Browse files- .gitignore +13 -0
- Dockerfile +10 -0
- README.md +3 -8
- app.py +154 -0
- build.sh +1 -0
- data/launch_api.json +1490 -0
- data/launch_schedule.csv +16 -0
- discord-bot.sh +1 -0
- example.env +9 -0
- frontend.py +55 -0
- llm_providers.py +55 -0
- requirements.txt +25 -0
- run.sh +1 -0
- system1.py +141 -0
- tests/ollama-benchmark.py +51 -0
- tests/ollama-test.py +37 -0
- tests/openai_format_test.py +120 -0
- tools/__init__.py +46 -0
- tools/data/launch_api.json +1490 -0
- tools/data/launch_schedule.csv +16 -0
- tools/jira_tools.py +493 -0
- tools/jql_prompt.py +95 -0
- tools/jql_tools.py +69 -0
- tools/launch_api_tool.py +98 -0
- tools/launch_tools.py +124 -0
- tools/time_tools.py +67 -0
- tools/weather_tools.py +53 -0
.gitignore
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.env
|
| 2 |
+
.vscode/
|
| 3 |
+
__pycache__/
|
| 4 |
+
env/
|
| 5 |
+
.DS_Store
|
| 6 |
+
tools/__pycache__/
|
| 7 |
+
output/logs/
|
| 8 |
+
*.pyc
|
| 9 |
+
*.pyo
|
| 10 |
+
*.pyd
|
| 11 |
+
.ipynb_checkpoints/
|
| 12 |
+
jupyter_notebooks/
|
| 13 |
+
*.py~
|
Dockerfile
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM python:3.9
|
| 2 |
+
|
| 3 |
+
WORKDIR /
|
| 4 |
+
|
| 5 |
+
COPY . .
|
| 6 |
+
|
| 7 |
+
RUN pip install --upgrade -r requirements.txt
|
| 8 |
+
|
| 9 |
+
#CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8080"]
|
| 10 |
+
CMD ["gradio", "frontend.py"]
|
README.md
CHANGED
|
@@ -1,12 +1,7 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
|
| 4 |
-
colorFrom: blue
|
| 5 |
-
colorTo: yellow
|
| 6 |
sdk: gradio
|
| 7 |
sdk_version: 4.36.1
|
| 8 |
-
app_file: app.py
|
| 9 |
-
pinned: false
|
| 10 |
---
|
| 11 |
-
|
| 12 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
---
|
| 2 |
+
title: system1
|
| 3 |
+
app_file: frontend.py
|
|
|
|
|
|
|
| 4 |
sdk: gradio
|
| 5 |
sdk_version: 4.36.1
|
|
|
|
|
|
|
| 6 |
---
|
| 7 |
+
# Vector
|
|
|
app.py
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import FastAPI, Request
|
| 2 |
+
from fastapi.middleware.cors import CORSMiddleware
|
| 3 |
+
from fastapi.responses import JSONResponse, StreamingResponse
|
| 4 |
+
from fastapi.encoders import jsonable_encoder
|
| 5 |
+
from typing import Optional, List, Literal
|
| 6 |
+
import requests
|
| 7 |
+
from pydantic import BaseModel, Field
|
| 8 |
+
import json
|
| 9 |
+
import os
|
| 10 |
+
from system1.system1 import System1
|
| 11 |
+
from dotenv import load_dotenv
|
| 12 |
+
import time
|
| 13 |
+
load_dotenv()
|
| 14 |
+
import uvicorn
|
| 15 |
+
import asyncio
|
| 16 |
+
import shortuuid
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
vector = System1(llm_provider="openai", model_id="gpt-4o", agent_type="openai_functions")
|
| 20 |
+
app = FastAPI()
|
| 21 |
+
|
| 22 |
+
origins = [
|
| 23 |
+
"http://localhost:5173",
|
| 24 |
+
"localhost:8000",
|
| 25 |
+
"localhost:8080"
|
| 26 |
+
"*"
|
| 27 |
+
]
|
| 28 |
+
|
| 29 |
+
# Add CORS middleware
|
| 30 |
+
app.add_middleware(
|
| 31 |
+
CORSMiddleware,
|
| 32 |
+
allow_origins=origins,
|
| 33 |
+
allow_credentials=True,
|
| 34 |
+
allow_methods=["*"],
|
| 35 |
+
allow_headers=["*"],
|
| 36 |
+
)
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
@app.get('/')
|
| 40 |
+
def index():
|
| 41 |
+
return {"message": "Vector API"}
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
@app.get('/search')
|
| 45 |
+
async def vector_search(query: str):
|
| 46 |
+
message = vector.query(query)
|
| 47 |
+
return JSONResponse(content=jsonable_encoder({"message": message}))
|
| 48 |
+
|
| 49 |
+
@app.get('/chat')
|
| 50 |
+
async def vector_chat(query: str):
|
| 51 |
+
message = vector.chat(query)
|
| 52 |
+
return JSONResponse(content=jsonable_encoder({"message": message}))
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
from fastapi import Request
|
| 56 |
+
|
| 57 |
+
class Message(BaseModel):
|
| 58 |
+
role: str
|
| 59 |
+
content: str
|
| 60 |
+
|
| 61 |
+
class CompletionRequest(BaseModel):
|
| 62 |
+
model: str
|
| 63 |
+
messages: List[Message]
|
| 64 |
+
max_tokens: int = None
|
| 65 |
+
temperature: float = 1.0
|
| 66 |
+
stream: bool = False
|
| 67 |
+
|
| 68 |
+
class DeltaMessage(BaseModel):
|
| 69 |
+
role: Optional[str] = None
|
| 70 |
+
content: Optional[str] = None
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
class ChatCompletionResponseStreamChoice(BaseModel):
|
| 74 |
+
index: int
|
| 75 |
+
delta: DeltaMessage
|
| 76 |
+
finish_reason: Optional[Literal["stop", "length"]] = None
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
class ChatCompletionStreamResponse(BaseModel):
|
| 80 |
+
id: str = Field(default_factory=lambda: f"chatcmpl-{shortuuid.random()}")
|
| 81 |
+
object: str = "chat.completion.chunk"
|
| 82 |
+
created: int = Field(default_factory=lambda: int(time.time()))
|
| 83 |
+
model: str
|
| 84 |
+
|
| 85 |
+
@app.post("/v1/chat/completions")
|
| 86 |
+
async def completions(request: CompletionRequest):
|
| 87 |
+
if request.stream:
|
| 88 |
+
print("STREAM")
|
| 89 |
+
async def stream_response():
|
| 90 |
+
for i in range(1, 11):
|
| 91 |
+
delta = {
|
| 92 |
+
"id": "msg_123",
|
| 93 |
+
"object": "thread.message.delta",
|
| 94 |
+
"delta": {
|
| 95 |
+
"content": [
|
| 96 |
+
{
|
| 97 |
+
"index": 0,
|
| 98 |
+
"type": "text",
|
| 99 |
+
"text": { "value": f"Stream {i}...", "annotations": [] }
|
| 100 |
+
}
|
| 101 |
+
]
|
| 102 |
+
}
|
| 103 |
+
}
|
| 104 |
+
yield json.dumps(delta)
|
| 105 |
+
# Final delta to indicate the end of the stream
|
| 106 |
+
final_delta = {
|
| 107 |
+
"id": "msg_123",
|
| 108 |
+
"object": "thread.message.delta",
|
| 109 |
+
"delta": {
|
| 110 |
+
"content": [
|
| 111 |
+
{
|
| 112 |
+
"index": 0,
|
| 113 |
+
"type": "text",
|
| 114 |
+
"text": { "value": "", "annotations": [] }
|
| 115 |
+
}
|
| 116 |
+
]
|
| 117 |
+
}
|
| 118 |
+
}
|
| 119 |
+
yield json.dumps(final_delta)
|
| 120 |
+
|
| 121 |
+
return StreamingResponse(stream_response(), media_type="application/json")
|
| 122 |
+
else:
|
| 123 |
+
# Existing functionality for non-streaming responses
|
| 124 |
+
response = vector.chat_messages(request.messages)
|
| 125 |
+
prompt_tokens = sum(len(message.content) for message in request.messages)
|
| 126 |
+
completion_tokens = len(str(response))
|
| 127 |
+
total_tokens = prompt_tokens + completion_tokens
|
| 128 |
+
|
| 129 |
+
formatted_response = {
|
| 130 |
+
"id": "vector-123",
|
| 131 |
+
"object": "chat.completion",
|
| 132 |
+
"created": int(time.time()),
|
| 133 |
+
"model": "vector-openai",
|
| 134 |
+
"system_fingerprint": "fp_44709d6fcb",
|
| 135 |
+
"choices": [{
|
| 136 |
+
"index": 0,
|
| 137 |
+
"message": {
|
| 138 |
+
"role": "assistant",
|
| 139 |
+
"content": response,
|
| 140 |
+
},
|
| 141 |
+
"logprobs": None,
|
| 142 |
+
"finish_reason": "stop"
|
| 143 |
+
}],
|
| 144 |
+
"usage": {
|
| 145 |
+
"prompt_tokens": prompt_tokens,
|
| 146 |
+
"completion_tokens": completion_tokens,
|
| 147 |
+
"total_tokens": total_tokens
|
| 148 |
+
}
|
| 149 |
+
}
|
| 150 |
+
return jsonable_encoder(formatted_response)
|
| 151 |
+
|
| 152 |
+
|
| 153 |
+
if __name__ == '__main__':
|
| 154 |
+
uvicorn.run("app:app", host='127.0.0.1', port=int(os.environ.get('PORT', '8080')), reload=True)
|
build.sh
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
docker build -t vector-jira .
|
data/launch_api.json
ADDED
|
@@ -0,0 +1,1490 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"count": 153,
|
| 3 |
+
"next": "https://lldev.thespacedevs.com/2.2.0/launch/upcoming/?limit=10&offset=10",
|
| 4 |
+
"previous": null,
|
| 5 |
+
"results": [
|
| 6 |
+
{
|
| 7 |
+
"id": "587cba9a-2a6c-46c9-9b06-630a1bf86fe3",
|
| 8 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/587cba9a-2a6c-46c9-9b06-630a1bf86fe3/",
|
| 9 |
+
"slug": "falcon-9-block-5-starlink-group-8-5",
|
| 10 |
+
"name": "Falcon 9 Block 5 | Starlink Group 8-5",
|
| 11 |
+
"status": {
|
| 12 |
+
"id": 8,
|
| 13 |
+
"name": "To Be Confirmed",
|
| 14 |
+
"abbrev": "TBC",
|
| 15 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 16 |
+
},
|
| 17 |
+
"last_updated": "2024-06-02T16:04:54Z",
|
| 18 |
+
"net": "2024-06-05T00:04:00Z",
|
| 19 |
+
"window_end": "2024-06-05T03:27:00Z",
|
| 20 |
+
"window_start": "2024-06-05T00:04:00Z",
|
| 21 |
+
"net_precision": {
|
| 22 |
+
"id": 2,
|
| 23 |
+
"name": "Hour",
|
| 24 |
+
"abbrev": "HR",
|
| 25 |
+
"description": "The T-0 is accurate to the hour."
|
| 26 |
+
},
|
| 27 |
+
"probability": 90,
|
| 28 |
+
"weather_concerns": "Cumulus Cloud Rule",
|
| 29 |
+
"holdreason": "",
|
| 30 |
+
"failreason": "",
|
| 31 |
+
"hashtag": null,
|
| 32 |
+
"launch_service_provider": {
|
| 33 |
+
"id": 121,
|
| 34 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 35 |
+
"name": "SpaceX",
|
| 36 |
+
"type": "Commercial"
|
| 37 |
+
},
|
| 38 |
+
"rocket": {
|
| 39 |
+
"id": 8202,
|
| 40 |
+
"configuration": {
|
| 41 |
+
"id": 164,
|
| 42 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/164/",
|
| 43 |
+
"name": "Falcon 9",
|
| 44 |
+
"family": "Falcon",
|
| 45 |
+
"full_name": "Falcon 9 Block 5",
|
| 46 |
+
"variant": "Block 5"
|
| 47 |
+
}
|
| 48 |
+
},
|
| 49 |
+
"mission": {
|
| 50 |
+
"id": 6773,
|
| 51 |
+
"name": "Starlink Group 8-5",
|
| 52 |
+
"description": "A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.",
|
| 53 |
+
"launch_designator": null,
|
| 54 |
+
"type": "Communications",
|
| 55 |
+
"orbit": {
|
| 56 |
+
"id": 8,
|
| 57 |
+
"name": "Low Earth Orbit",
|
| 58 |
+
"abbrev": "LEO"
|
| 59 |
+
},
|
| 60 |
+
"agencies": [
|
| 61 |
+
{
|
| 62 |
+
"id": 121,
|
| 63 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 64 |
+
"name": "SpaceX",
|
| 65 |
+
"featured": true,
|
| 66 |
+
"type": "Commercial",
|
| 67 |
+
"country_code": "USA",
|
| 68 |
+
"abbrev": "SpX",
|
| 69 |
+
"description": "Space Exploration Technologies Corp., known as SpaceX, is an American aerospace manufacturer and space transport services company headquartered in Hawthorne, California. It was founded in 2002 by entrepreneur Elon Musk with the goal of reducing space transportation costs and enabling the colonization of Mars. SpaceX operates from many pads, on the East Coast of the US they operate from SLC-40 at Cape Canaveral Space Force Station and historic LC-39A at Kennedy Space Center. They also operate from SLC-4E at Vandenberg Space Force Base, California, usually for polar launches. Another launch site is being developed at Boca Chica, Texas.",
|
| 70 |
+
"administrator": "CEO: Elon Musk",
|
| 71 |
+
"founding_year": "2002",
|
| 72 |
+
"launchers": "Falcon | Starship",
|
| 73 |
+
"spacecraft": "Dragon",
|
| 74 |
+
"launch_library_url": null,
|
| 75 |
+
"total_launch_count": 369,
|
| 76 |
+
"consecutive_successful_launches": 70,
|
| 77 |
+
"successful_launches": 358,
|
| 78 |
+
"failed_launches": 11,
|
| 79 |
+
"pending_launches": 131,
|
| 80 |
+
"consecutive_successful_landings": 32,
|
| 81 |
+
"successful_landings": 320,
|
| 82 |
+
"failed_landings": 24,
|
| 83 |
+
"attempted_landings": 343,
|
| 84 |
+
"info_url": "http://www.spacex.com/",
|
| 85 |
+
"wiki_url": "http://en.wikipedia.org/wiki/SpaceX",
|
| 86 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_logo_20220826094919.png",
|
| 87 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_image_20190207032501.jpeg",
|
| 88 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_nation_20230531064544.jpg"
|
| 89 |
+
}
|
| 90 |
+
],
|
| 91 |
+
"info_urls": [],
|
| 92 |
+
"vid_urls": []
|
| 93 |
+
},
|
| 94 |
+
"pad": {
|
| 95 |
+
"id": 80,
|
| 96 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/80/",
|
| 97 |
+
"agency_id": 121,
|
| 98 |
+
"name": "Space Launch Complex 40",
|
| 99 |
+
"description": null,
|
| 100 |
+
"info_url": null,
|
| 101 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_40",
|
| 102 |
+
"map_url": "https://www.google.com/maps?q=28.56194122,-80.57735736",
|
| 103 |
+
"latitude": "28.56194122",
|
| 104 |
+
"longitude": "-80.57735736",
|
| 105 |
+
"location": {
|
| 106 |
+
"id": 12,
|
| 107 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/12/",
|
| 108 |
+
"name": "Cape Canaveral, FL, USA",
|
| 109 |
+
"country_code": "USA",
|
| 110 |
+
"description": "",
|
| 111 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg",
|
| 112 |
+
"timezone_name": "America/New_York",
|
| 113 |
+
"total_launch_count": 956,
|
| 114 |
+
"total_landing_count": 51
|
| 115 |
+
},
|
| 116 |
+
"country_code": "USA",
|
| 117 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_80_20200803143323.jpg",
|
| 118 |
+
"total_launch_count": 245,
|
| 119 |
+
"orbital_launch_attempt_count": 245
|
| 120 |
+
},
|
| 121 |
+
"webcast_live": false,
|
| 122 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon2520925_image_20221009234147.png",
|
| 123 |
+
"infographic": null,
|
| 124 |
+
"program": [
|
| 125 |
+
{
|
| 126 |
+
"id": 25,
|
| 127 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/25/",
|
| 128 |
+
"name": "Starlink",
|
| 129 |
+
"description": "Starlink is a satellite internet constellation operated by American aerospace company SpaceX",
|
| 130 |
+
"agencies": [
|
| 131 |
+
{
|
| 132 |
+
"id": 121,
|
| 133 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 134 |
+
"name": "SpaceX",
|
| 135 |
+
"type": "Commercial"
|
| 136 |
+
}
|
| 137 |
+
],
|
| 138 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/starlink_program_20231228154508.jpeg",
|
| 139 |
+
"start_date": "2018-02-22T14:17:00Z",
|
| 140 |
+
"end_date": null,
|
| 141 |
+
"info_url": "https://starlink.com",
|
| 142 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Starlink",
|
| 143 |
+
"mission_patches": [
|
| 144 |
+
{
|
| 145 |
+
"id": 7,
|
| 146 |
+
"name": "Space X Starlink Mission Patch",
|
| 147 |
+
"priority": 10,
|
| 148 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/mission_patch_images/space2520x252_mission_patch_20221011205756.png",
|
| 149 |
+
"agency": {
|
| 150 |
+
"id": 121,
|
| 151 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 152 |
+
"name": "SpaceX",
|
| 153 |
+
"type": "Commercial"
|
| 154 |
+
}
|
| 155 |
+
}
|
| 156 |
+
],
|
| 157 |
+
"type": {
|
| 158 |
+
"id": 3,
|
| 159 |
+
"name": "Communication Constellation"
|
| 160 |
+
}
|
| 161 |
+
}
|
| 162 |
+
],
|
| 163 |
+
"orbital_launch_attempt_count": 6687,
|
| 164 |
+
"location_launch_attempt_count": 957,
|
| 165 |
+
"pad_launch_attempt_count": 246,
|
| 166 |
+
"agency_launch_attempt_count": 370,
|
| 167 |
+
"orbital_launch_attempt_count_year": 109,
|
| 168 |
+
"location_launch_attempt_count_year": 30,
|
| 169 |
+
"pad_launch_attempt_count_year": 28,
|
| 170 |
+
"agency_launch_attempt_count_year": 59,
|
| 171 |
+
"type": "normal"
|
| 172 |
+
},
|
| 173 |
+
{
|
| 174 |
+
"id": "0bcda9f1-a347-408d-88cd-b8b5bd6fffc2",
|
| 175 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/0bcda9f1-a347-408d-88cd-b8b5bd6fffc2/",
|
| 176 |
+
"slug": "electron-prefire-and-ice-prefire-2",
|
| 177 |
+
"name": "Electron | PREFIRE And Ice (PREFIRE 2)",
|
| 178 |
+
"status": {
|
| 179 |
+
"id": 1,
|
| 180 |
+
"name": "Go for Launch",
|
| 181 |
+
"abbrev": "Go",
|
| 182 |
+
"description": "Current T-0 confirmed by official or reliable sources."
|
| 183 |
+
},
|
| 184 |
+
"last_updated": "2024-06-02T16:38:52Z",
|
| 185 |
+
"net": "2024-06-05T03:00:00Z",
|
| 186 |
+
"window_end": "2024-06-05T03:00:00Z",
|
| 187 |
+
"window_start": "2024-06-05T03:00:00Z",
|
| 188 |
+
"net_precision": {
|
| 189 |
+
"id": 1,
|
| 190 |
+
"name": "Minute",
|
| 191 |
+
"abbrev": "MIN",
|
| 192 |
+
"description": "The T-0 is accurate to the minute."
|
| 193 |
+
},
|
| 194 |
+
"probability": null,
|
| 195 |
+
"weather_concerns": null,
|
| 196 |
+
"holdreason": "",
|
| 197 |
+
"failreason": "",
|
| 198 |
+
"hashtag": null,
|
| 199 |
+
"launch_service_provider": {
|
| 200 |
+
"id": 147,
|
| 201 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/147/",
|
| 202 |
+
"name": "Rocket Lab",
|
| 203 |
+
"type": "Commercial"
|
| 204 |
+
},
|
| 205 |
+
"rocket": {
|
| 206 |
+
"id": 7984,
|
| 207 |
+
"configuration": {
|
| 208 |
+
"id": 26,
|
| 209 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/26/",
|
| 210 |
+
"name": "Electron",
|
| 211 |
+
"family": "",
|
| 212 |
+
"full_name": "Electron",
|
| 213 |
+
"variant": ""
|
| 214 |
+
}
|
| 215 |
+
},
|
| 216 |
+
"mission": {
|
| 217 |
+
"id": 6509,
|
| 218 |
+
"name": "PREFIRE And Ice (PREFIRE 2)",
|
| 219 |
+
"description": "Second 6U Cubesat carrying a miniaturized IR spectrometer, covering 0- 45 \u03bcm at 0.84 \u03bcm spectral resolution, operating for one seasonal cycle for NASAs PREFIRE (Polar Radiant Energy in the Far-InfraRed Experiment) mission.",
|
| 220 |
+
"launch_designator": null,
|
| 221 |
+
"type": "Earth Science",
|
| 222 |
+
"orbit": {
|
| 223 |
+
"id": 13,
|
| 224 |
+
"name": "Polar Orbit",
|
| 225 |
+
"abbrev": "PO"
|
| 226 |
+
},
|
| 227 |
+
"agencies": [
|
| 228 |
+
{
|
| 229 |
+
"id": 44,
|
| 230 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 231 |
+
"name": "National Aeronautics and Space Administration",
|
| 232 |
+
"featured": true,
|
| 233 |
+
"type": "Government",
|
| 234 |
+
"country_code": "USA",
|
| 235 |
+
"abbrev": "NASA",
|
| 236 |
+
"description": "The National Aeronautics and Space Administration is an independent agency of the executive branch of the United States federal government responsible for the civilian space program, as well as aeronautics and aerospace research. NASA have many launch facilities but most are inactive. The most commonly used pad will be LC-39B at Kennedy Space Center in Florida.",
|
| 237 |
+
"administrator": "Administrator: Bill Nelson",
|
| 238 |
+
"founding_year": "1958",
|
| 239 |
+
"launchers": "Space Shuttle | SLS",
|
| 240 |
+
"spacecraft": "Orion",
|
| 241 |
+
"launch_library_url": null,
|
| 242 |
+
"total_launch_count": 135,
|
| 243 |
+
"consecutive_successful_launches": 11,
|
| 244 |
+
"successful_launches": 115,
|
| 245 |
+
"failed_launches": 20,
|
| 246 |
+
"pending_launches": 6,
|
| 247 |
+
"consecutive_successful_landings": 0,
|
| 248 |
+
"successful_landings": 0,
|
| 249 |
+
"failed_landings": 0,
|
| 250 |
+
"attempted_landings": 0,
|
| 251 |
+
"info_url": "http://www.nasa.gov",
|
| 252 |
+
"wiki_url": "http://en.wikipedia.org/wiki/National_Aeronautics_and_Space_Administration",
|
| 253 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_logo_20190207032448.png",
|
| 254 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_image_20190207032448.jpeg",
|
| 255 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_nation_20230803040809.jpg"
|
| 256 |
+
}
|
| 257 |
+
],
|
| 258 |
+
"info_urls": [],
|
| 259 |
+
"vid_urls": []
|
| 260 |
+
},
|
| 261 |
+
"pad": {
|
| 262 |
+
"id": 185,
|
| 263 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/185/",
|
| 264 |
+
"agency_id": 147,
|
| 265 |
+
"name": "Rocket Lab Launch Complex 1B",
|
| 266 |
+
"description": null,
|
| 267 |
+
"info_url": null,
|
| 268 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Rocket_Lab_Launch_Complex_1",
|
| 269 |
+
"map_url": "https://www.google.com/maps?q=-39.262833,177.864469",
|
| 270 |
+
"latitude": "-39.262833",
|
| 271 |
+
"longitude": "177.864469",
|
| 272 |
+
"location": {
|
| 273 |
+
"id": 10,
|
| 274 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/10/",
|
| 275 |
+
"name": "Onenui Station, Mahia Peninsula, New Zealand",
|
| 276 |
+
"country_code": "NZL",
|
| 277 |
+
"description": "",
|
| 278 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_10_20200803142509.jpg",
|
| 279 |
+
"timezone_name": "Pacific/Auckland",
|
| 280 |
+
"total_launch_count": 44,
|
| 281 |
+
"total_landing_count": 17
|
| 282 |
+
},
|
| 283 |
+
"country_code": "NZL",
|
| 284 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_185_20200803143540.jpg",
|
| 285 |
+
"total_launch_count": 18,
|
| 286 |
+
"orbital_launch_attempt_count": 18
|
| 287 |
+
},
|
| 288 |
+
"webcast_live": false,
|
| 289 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/electron_on_lc-_image_20240602163715.jpeg",
|
| 290 |
+
"infographic": null,
|
| 291 |
+
"program": [],
|
| 292 |
+
"orbital_launch_attempt_count": 6688,
|
| 293 |
+
"location_launch_attempt_count": 45,
|
| 294 |
+
"pad_launch_attempt_count": 19,
|
| 295 |
+
"agency_launch_attempt_count": 49,
|
| 296 |
+
"orbital_launch_attempt_count_year": 110,
|
| 297 |
+
"location_launch_attempt_count_year": 6,
|
| 298 |
+
"pad_launch_attempt_count_year": 6,
|
| 299 |
+
"agency_launch_attempt_count_year": 7,
|
| 300 |
+
"type": "normal"
|
| 301 |
+
},
|
| 302 |
+
{
|
| 303 |
+
"id": "32f98a5d-b605-4e18-9b92-9dbd59f0681f",
|
| 304 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/32f98a5d-b605-4e18-9b92-9dbd59f0681f/",
|
| 305 |
+
"slug": "falcon-9-block-5-starlink-group-8-8",
|
| 306 |
+
"name": "Falcon 9 Block 5 | Starlink Group 8-8",
|
| 307 |
+
"status": {
|
| 308 |
+
"id": 8,
|
| 309 |
+
"name": "To Be Confirmed",
|
| 310 |
+
"abbrev": "TBC",
|
| 311 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 312 |
+
},
|
| 313 |
+
"last_updated": "2024-05-31T00:43:06Z",
|
| 314 |
+
"net": "2024-06-05T05:12:00Z",
|
| 315 |
+
"window_end": "2024-06-05T09:12:00Z",
|
| 316 |
+
"window_start": "2024-06-05T05:12:00Z",
|
| 317 |
+
"net_precision": {
|
| 318 |
+
"id": 2,
|
| 319 |
+
"name": "Hour",
|
| 320 |
+
"abbrev": "HR",
|
| 321 |
+
"description": "The T-0 is accurate to the hour."
|
| 322 |
+
},
|
| 323 |
+
"probability": null,
|
| 324 |
+
"weather_concerns": null,
|
| 325 |
+
"holdreason": "",
|
| 326 |
+
"failreason": "",
|
| 327 |
+
"hashtag": null,
|
| 328 |
+
"launch_service_provider": {
|
| 329 |
+
"id": 121,
|
| 330 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 331 |
+
"name": "SpaceX",
|
| 332 |
+
"type": "Commercial"
|
| 333 |
+
},
|
| 334 |
+
"rocket": {
|
| 335 |
+
"id": 8255,
|
| 336 |
+
"configuration": {
|
| 337 |
+
"id": 164,
|
| 338 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/164/",
|
| 339 |
+
"name": "Falcon 9",
|
| 340 |
+
"family": "Falcon",
|
| 341 |
+
"full_name": "Falcon 9 Block 5",
|
| 342 |
+
"variant": "Block 5"
|
| 343 |
+
}
|
| 344 |
+
},
|
| 345 |
+
"mission": {
|
| 346 |
+
"id": 6836,
|
| 347 |
+
"name": "Starlink Group 8-8",
|
| 348 |
+
"description": "A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.",
|
| 349 |
+
"launch_designator": null,
|
| 350 |
+
"type": "Communications",
|
| 351 |
+
"orbit": {
|
| 352 |
+
"id": 8,
|
| 353 |
+
"name": "Low Earth Orbit",
|
| 354 |
+
"abbrev": "LEO"
|
| 355 |
+
},
|
| 356 |
+
"agencies": [
|
| 357 |
+
{
|
| 358 |
+
"id": 121,
|
| 359 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 360 |
+
"name": "SpaceX",
|
| 361 |
+
"featured": true,
|
| 362 |
+
"type": "Commercial",
|
| 363 |
+
"country_code": "USA",
|
| 364 |
+
"abbrev": "SpX",
|
| 365 |
+
"description": "Space Exploration Technologies Corp., known as SpaceX, is an American aerospace manufacturer and space transport services company headquartered in Hawthorne, California. It was founded in 2002 by entrepreneur Elon Musk with the goal of reducing space transportation costs and enabling the colonization of Mars. SpaceX operates from many pads, on the East Coast of the US they operate from SLC-40 at Cape Canaveral Space Force Station and historic LC-39A at Kennedy Space Center. They also operate from SLC-4E at Vandenberg Space Force Base, California, usually for polar launches. Another launch site is being developed at Boca Chica, Texas.",
|
| 366 |
+
"administrator": "CEO: Elon Musk",
|
| 367 |
+
"founding_year": "2002",
|
| 368 |
+
"launchers": "Falcon | Starship",
|
| 369 |
+
"spacecraft": "Dragon",
|
| 370 |
+
"launch_library_url": null,
|
| 371 |
+
"total_launch_count": 369,
|
| 372 |
+
"consecutive_successful_launches": 70,
|
| 373 |
+
"successful_launches": 358,
|
| 374 |
+
"failed_launches": 11,
|
| 375 |
+
"pending_launches": 131,
|
| 376 |
+
"consecutive_successful_landings": 32,
|
| 377 |
+
"successful_landings": 320,
|
| 378 |
+
"failed_landings": 24,
|
| 379 |
+
"attempted_landings": 343,
|
| 380 |
+
"info_url": "http://www.spacex.com/",
|
| 381 |
+
"wiki_url": "http://en.wikipedia.org/wiki/SpaceX",
|
| 382 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_logo_20220826094919.png",
|
| 383 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_image_20190207032501.jpeg",
|
| 384 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_nation_20230531064544.jpg"
|
| 385 |
+
}
|
| 386 |
+
],
|
| 387 |
+
"info_urls": [],
|
| 388 |
+
"vid_urls": []
|
| 389 |
+
},
|
| 390 |
+
"pad": {
|
| 391 |
+
"id": 16,
|
| 392 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/16/",
|
| 393 |
+
"agency_id": null,
|
| 394 |
+
"name": "Space Launch Complex 4E",
|
| 395 |
+
"description": "Space Launch Complex 4 East (SLC-4E) is a launch site at Vandenberg Space Force Base, California, U.S.\r\n\r\nThe pad was previously used by Atlas and Titan rockets between 1963 and 2005. The pad was built for use by Atlas-Agena rockets, but was later rebuilt to handle Titan rockets.",
|
| 396 |
+
"info_url": null,
|
| 397 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Vandenberg_Space_Launch_Complex_4#SLC-4E",
|
| 398 |
+
"map_url": "https://www.google.com/maps?q=34.632,-120.611",
|
| 399 |
+
"latitude": "34.632",
|
| 400 |
+
"longitude": "-120.611",
|
| 401 |
+
"location": {
|
| 402 |
+
"id": 11,
|
| 403 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/11/",
|
| 404 |
+
"name": "Vandenberg SFB, CA, USA",
|
| 405 |
+
"country_code": "USA",
|
| 406 |
+
"description": "",
|
| 407 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_11_20200803142416.jpg",
|
| 408 |
+
"timezone_name": "America/Los_Angeles",
|
| 409 |
+
"total_launch_count": 757,
|
| 410 |
+
"total_landing_count": 19
|
| 411 |
+
},
|
| 412 |
+
"country_code": "USA",
|
| 413 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_16_20200803143532.jpg",
|
| 414 |
+
"total_launch_count": 146,
|
| 415 |
+
"orbital_launch_attempt_count": 146
|
| 416 |
+
},
|
| 417 |
+
"webcast_live": false,
|
| 418 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon2520925_image_20221009234147.png",
|
| 419 |
+
"infographic": null,
|
| 420 |
+
"program": [
|
| 421 |
+
{
|
| 422 |
+
"id": 25,
|
| 423 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/25/",
|
| 424 |
+
"name": "Starlink",
|
| 425 |
+
"description": "Starlink is a satellite internet constellation operated by American aerospace company SpaceX",
|
| 426 |
+
"agencies": [
|
| 427 |
+
{
|
| 428 |
+
"id": 121,
|
| 429 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 430 |
+
"name": "SpaceX",
|
| 431 |
+
"type": "Commercial"
|
| 432 |
+
}
|
| 433 |
+
],
|
| 434 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/starlink_program_20231228154508.jpeg",
|
| 435 |
+
"start_date": "2018-02-22T14:17:00Z",
|
| 436 |
+
"end_date": null,
|
| 437 |
+
"info_url": "https://starlink.com",
|
| 438 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Starlink",
|
| 439 |
+
"mission_patches": [
|
| 440 |
+
{
|
| 441 |
+
"id": 7,
|
| 442 |
+
"name": "Space X Starlink Mission Patch",
|
| 443 |
+
"priority": 10,
|
| 444 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/mission_patch_images/space2520x252_mission_patch_20221011205756.png",
|
| 445 |
+
"agency": {
|
| 446 |
+
"id": 121,
|
| 447 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 448 |
+
"name": "SpaceX",
|
| 449 |
+
"type": "Commercial"
|
| 450 |
+
}
|
| 451 |
+
}
|
| 452 |
+
],
|
| 453 |
+
"type": {
|
| 454 |
+
"id": 3,
|
| 455 |
+
"name": "Communication Constellation"
|
| 456 |
+
}
|
| 457 |
+
}
|
| 458 |
+
],
|
| 459 |
+
"orbital_launch_attempt_count": 6689,
|
| 460 |
+
"location_launch_attempt_count": 758,
|
| 461 |
+
"pad_launch_attempt_count": 147,
|
| 462 |
+
"agency_launch_attempt_count": 371,
|
| 463 |
+
"orbital_launch_attempt_count_year": 111,
|
| 464 |
+
"location_launch_attempt_count_year": 19,
|
| 465 |
+
"pad_launch_attempt_count_year": 19,
|
| 466 |
+
"agency_launch_attempt_count_year": 60,
|
| 467 |
+
"type": "normal"
|
| 468 |
+
},
|
| 469 |
+
{
|
| 470 |
+
"id": "968067d1-8c12-4018-9854-b7b7d4bddc6b",
|
| 471 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/968067d1-8c12-4018-9854-b7b7d4bddc6b/",
|
| 472 |
+
"slug": "atlas-v-n22-cst-100-starliner-crewed-flight-test",
|
| 473 |
+
"name": "Atlas V N22 | CST-100 Starliner Crewed Flight Test",
|
| 474 |
+
"status": {
|
| 475 |
+
"id": 8,
|
| 476 |
+
"name": "To Be Confirmed",
|
| 477 |
+
"abbrev": "TBC",
|
| 478 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 479 |
+
},
|
| 480 |
+
"last_updated": "2024-06-02T16:42:58Z",
|
| 481 |
+
"net": "2024-06-05T14:52:00Z",
|
| 482 |
+
"window_end": "2024-06-05T14:52:00Z",
|
| 483 |
+
"window_start": "2024-06-05T14:52:00Z",
|
| 484 |
+
"net_precision": {
|
| 485 |
+
"id": 1,
|
| 486 |
+
"name": "Minute",
|
| 487 |
+
"abbrev": "MIN",
|
| 488 |
+
"description": "The T-0 is accurate to the minute."
|
| 489 |
+
},
|
| 490 |
+
"probability": null,
|
| 491 |
+
"weather_concerns": null,
|
| 492 |
+
"holdreason": "",
|
| 493 |
+
"failreason": "",
|
| 494 |
+
"hashtag": null,
|
| 495 |
+
"launch_service_provider": {
|
| 496 |
+
"id": 124,
|
| 497 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/124/",
|
| 498 |
+
"name": "United Launch Alliance",
|
| 499 |
+
"type": "Commercial"
|
| 500 |
+
},
|
| 501 |
+
"rocket": {
|
| 502 |
+
"id": 103,
|
| 503 |
+
"configuration": {
|
| 504 |
+
"id": 166,
|
| 505 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/166/",
|
| 506 |
+
"name": "Atlas V N22",
|
| 507 |
+
"family": "Atlas",
|
| 508 |
+
"full_name": "Atlas V N22",
|
| 509 |
+
"variant": "V N22"
|
| 510 |
+
}
|
| 511 |
+
},
|
| 512 |
+
"mission": {
|
| 513 |
+
"id": 1052,
|
| 514 |
+
"name": "CST-100 Starliner Crewed Flight Test",
|
| 515 |
+
"description": "This is the first crewed test flight of Starliner spacecraft. It will carry NASA astronauts Barry Wilmore and\r\nSuni Williams to the International Space Station.",
|
| 516 |
+
"launch_designator": null,
|
| 517 |
+
"type": "Test Flight",
|
| 518 |
+
"orbit": {
|
| 519 |
+
"id": 8,
|
| 520 |
+
"name": "Low Earth Orbit",
|
| 521 |
+
"abbrev": "LEO"
|
| 522 |
+
},
|
| 523 |
+
"agencies": [
|
| 524 |
+
{
|
| 525 |
+
"id": 80,
|
| 526 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/80/",
|
| 527 |
+
"name": "Boeing",
|
| 528 |
+
"featured": false,
|
| 529 |
+
"type": "Commercial",
|
| 530 |
+
"country_code": "USA",
|
| 531 |
+
"abbrev": "BA",
|
| 532 |
+
"description": "Boeing as a space agency has recently provided NASA with assistance on sending humans to the ISS from American with both their construction of the CST-100 Starliner crew capsule and their work on the SLS Avionics to return to the moon and beyond. Their ventures in GPS satellite systems and Tracking and Data Relay Satellites provide information about earth-orbiting craft to stations on the ground. They also enable research on the ISS and will be helping with the construction of the Lunar Gateway.",
|
| 533 |
+
"administrator": "Leanne Caret",
|
| 534 |
+
"founding_year": "2002",
|
| 535 |
+
"launchers": "SLS",
|
| 536 |
+
"spacecraft": "Starliner",
|
| 537 |
+
"launch_library_url": null,
|
| 538 |
+
"total_launch_count": 2,
|
| 539 |
+
"consecutive_successful_launches": 0,
|
| 540 |
+
"successful_launches": 1,
|
| 541 |
+
"failed_launches": 1,
|
| 542 |
+
"pending_launches": 0,
|
| 543 |
+
"consecutive_successful_landings": 0,
|
| 544 |
+
"successful_landings": 0,
|
| 545 |
+
"failed_landings": 0,
|
| 546 |
+
"attempted_landings": 0,
|
| 547 |
+
"info_url": "https://www.boeing.com",
|
| 548 |
+
"wiki_url": "http://en.wikipedia.org/wiki/Boeing",
|
| 549 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/boeing_logo_20201128183345.png",
|
| 550 |
+
"image_url": null,
|
| 551 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/boeing_nation_20230804083022.jpg"
|
| 552 |
+
},
|
| 553 |
+
{
|
| 554 |
+
"id": 44,
|
| 555 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 556 |
+
"name": "National Aeronautics and Space Administration",
|
| 557 |
+
"featured": true,
|
| 558 |
+
"type": "Government",
|
| 559 |
+
"country_code": "USA",
|
| 560 |
+
"abbrev": "NASA",
|
| 561 |
+
"description": "The National Aeronautics and Space Administration is an independent agency of the executive branch of the United States federal government responsible for the civilian space program, as well as aeronautics and aerospace research. NASA have many launch facilities but most are inactive. The most commonly used pad will be LC-39B at Kennedy Space Center in Florida.",
|
| 562 |
+
"administrator": "Administrator: Bill Nelson",
|
| 563 |
+
"founding_year": "1958",
|
| 564 |
+
"launchers": "Space Shuttle | SLS",
|
| 565 |
+
"spacecraft": "Orion",
|
| 566 |
+
"launch_library_url": null,
|
| 567 |
+
"total_launch_count": 135,
|
| 568 |
+
"consecutive_successful_launches": 11,
|
| 569 |
+
"successful_launches": 115,
|
| 570 |
+
"failed_launches": 20,
|
| 571 |
+
"pending_launches": 6,
|
| 572 |
+
"consecutive_successful_landings": 0,
|
| 573 |
+
"successful_landings": 0,
|
| 574 |
+
"failed_landings": 0,
|
| 575 |
+
"attempted_landings": 0,
|
| 576 |
+
"info_url": "http://www.nasa.gov",
|
| 577 |
+
"wiki_url": "http://en.wikipedia.org/wiki/National_Aeronautics_and_Space_Administration",
|
| 578 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_logo_20190207032448.png",
|
| 579 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_image_20190207032448.jpeg",
|
| 580 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_nation_20230803040809.jpg"
|
| 581 |
+
}
|
| 582 |
+
],
|
| 583 |
+
"info_urls": [],
|
| 584 |
+
"vid_urls": []
|
| 585 |
+
},
|
| 586 |
+
"pad": {
|
| 587 |
+
"id": 29,
|
| 588 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/29/",
|
| 589 |
+
"agency_id": null,
|
| 590 |
+
"name": "Space Launch Complex 41",
|
| 591 |
+
"description": null,
|
| 592 |
+
"info_url": null,
|
| 593 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_41",
|
| 594 |
+
"map_url": "https://www.google.com/maps?q=28.58341025,-80.58303644",
|
| 595 |
+
"latitude": "28.58341025",
|
| 596 |
+
"longitude": "-80.58303644",
|
| 597 |
+
"location": {
|
| 598 |
+
"id": 12,
|
| 599 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/12/",
|
| 600 |
+
"name": "Cape Canaveral, FL, USA",
|
| 601 |
+
"country_code": "USA",
|
| 602 |
+
"description": "",
|
| 603 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg",
|
| 604 |
+
"timezone_name": "America/New_York",
|
| 605 |
+
"total_launch_count": 956,
|
| 606 |
+
"total_landing_count": 51
|
| 607 |
+
},
|
| 608 |
+
"country_code": "USA",
|
| 609 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_29_20200803143528.jpg",
|
| 610 |
+
"total_launch_count": 111,
|
| 611 |
+
"orbital_launch_attempt_count": 111
|
| 612 |
+
},
|
| 613 |
+
"webcast_live": false,
|
| 614 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/atlas_v_n22_on__image_20240602164247.jpg",
|
| 615 |
+
"infographic": null,
|
| 616 |
+
"program": [
|
| 617 |
+
{
|
| 618 |
+
"id": 5,
|
| 619 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/5/",
|
| 620 |
+
"name": "Commercial Crew Program",
|
| 621 |
+
"description": "The Commercial Crew Program (CCP) is a human spaceflight program operated by NASA, in association with American aerospace manufacturers Boeing and SpaceX. The program conducts rotations between the expeditions of the International Space Station program, transporting crews to and from the International Space Station (ISS) aboard Boeing Starliner and SpaceX Crew Dragon capsules, in the first crewed orbital spaceflights operated by private companies.",
|
| 622 |
+
"agencies": [
|
| 623 |
+
{
|
| 624 |
+
"id": 80,
|
| 625 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/80/",
|
| 626 |
+
"name": "Boeing",
|
| 627 |
+
"type": "Commercial"
|
| 628 |
+
},
|
| 629 |
+
{
|
| 630 |
+
"id": 44,
|
| 631 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 632 |
+
"name": "National Aeronautics and Space Administration",
|
| 633 |
+
"type": "Government"
|
| 634 |
+
},
|
| 635 |
+
{
|
| 636 |
+
"id": 121,
|
| 637 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 638 |
+
"name": "SpaceX",
|
| 639 |
+
"type": "Commercial"
|
| 640 |
+
}
|
| 641 |
+
],
|
| 642 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/commercial2520_program_20200820201209.png",
|
| 643 |
+
"start_date": "2011-04-18T00:00:00Z",
|
| 644 |
+
"end_date": null,
|
| 645 |
+
"info_url": "https://www.nasa.gov/exploration/commercial/crew/index.html",
|
| 646 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Commercial_Crew_Program",
|
| 647 |
+
"mission_patches": [],
|
| 648 |
+
"type": {
|
| 649 |
+
"id": 2,
|
| 650 |
+
"name": "Human Spaceflight"
|
| 651 |
+
}
|
| 652 |
+
},
|
| 653 |
+
{
|
| 654 |
+
"id": 17,
|
| 655 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/17/",
|
| 656 |
+
"name": "International Space Station",
|
| 657 |
+
"description": "The International Space Station programme is tied together by a complex set of legal, political and financial agreements between the sixteen nations involved in the project, governing ownership of the various components, rights to crewing and utilization, and responsibilities for crew rotation and resupply of the International Space Station. It was conceived in 1984 by President Ronald Reagan, during the Space Station Freedom project as it was originally called.",
|
| 658 |
+
"agencies": [
|
| 659 |
+
{
|
| 660 |
+
"id": 16,
|
| 661 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/16/",
|
| 662 |
+
"name": "Canadian Space Agency",
|
| 663 |
+
"type": "Government"
|
| 664 |
+
},
|
| 665 |
+
{
|
| 666 |
+
"id": 27,
|
| 667 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/27/",
|
| 668 |
+
"name": "European Space Agency",
|
| 669 |
+
"type": "Multinational"
|
| 670 |
+
},
|
| 671 |
+
{
|
| 672 |
+
"id": 37,
|
| 673 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/37/",
|
| 674 |
+
"name": "Japan Aerospace Exploration Agency",
|
| 675 |
+
"type": "Government"
|
| 676 |
+
},
|
| 677 |
+
{
|
| 678 |
+
"id": 44,
|
| 679 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 680 |
+
"name": "National Aeronautics and Space Administration",
|
| 681 |
+
"type": "Government"
|
| 682 |
+
},
|
| 683 |
+
{
|
| 684 |
+
"id": 63,
|
| 685 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/63/",
|
| 686 |
+
"name": "Russian Federal Space Agency (ROSCOSMOS)",
|
| 687 |
+
"type": "Government"
|
| 688 |
+
}
|
| 689 |
+
],
|
| 690 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/international2_program_20201129184745.png",
|
| 691 |
+
"start_date": "1998-11-20T06:40:00Z",
|
| 692 |
+
"end_date": null,
|
| 693 |
+
"info_url": "https://www.nasa.gov/mission_pages/station/main/index.html",
|
| 694 |
+
"wiki_url": "https://en.wikipedia.org/wiki/International_Space_Station_programme",
|
| 695 |
+
"mission_patches": [],
|
| 696 |
+
"type": {
|
| 697 |
+
"id": 2,
|
| 698 |
+
"name": "Human Spaceflight"
|
| 699 |
+
}
|
| 700 |
+
}
|
| 701 |
+
],
|
| 702 |
+
"orbital_launch_attempt_count": 6690,
|
| 703 |
+
"location_launch_attempt_count": 958,
|
| 704 |
+
"pad_launch_attempt_count": 112,
|
| 705 |
+
"agency_launch_attempt_count": 162,
|
| 706 |
+
"orbital_launch_attempt_count_year": 112,
|
| 707 |
+
"location_launch_attempt_count_year": 31,
|
| 708 |
+
"pad_launch_attempt_count_year": 2,
|
| 709 |
+
"agency_launch_attempt_count_year": 3,
|
| 710 |
+
"type": "normal"
|
| 711 |
+
},
|
| 712 |
+
{
|
| 713 |
+
"id": "2b1b756f-7207-4781-a874-aed61b38463d",
|
| 714 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/2b1b756f-7207-4781-a874-aed61b38463d/",
|
| 715 |
+
"slug": "starship-integrated-flight-test-4",
|
| 716 |
+
"name": "Starship | Integrated Flight Test 4",
|
| 717 |
+
"status": {
|
| 718 |
+
"id": 8,
|
| 719 |
+
"name": "To Be Confirmed",
|
| 720 |
+
"abbrev": "TBC",
|
| 721 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 722 |
+
},
|
| 723 |
+
"last_updated": "2024-06-01T15:41:13Z",
|
| 724 |
+
"net": "2024-06-06T12:00:00Z",
|
| 725 |
+
"window_end": "2024-06-06T16:00:00Z",
|
| 726 |
+
"window_start": "2024-06-06T12:00:00Z",
|
| 727 |
+
"net_precision": {
|
| 728 |
+
"id": 2,
|
| 729 |
+
"name": "Hour",
|
| 730 |
+
"abbrev": "HR",
|
| 731 |
+
"description": "The T-0 is accurate to the hour."
|
| 732 |
+
},
|
| 733 |
+
"probability": null,
|
| 734 |
+
"weather_concerns": null,
|
| 735 |
+
"holdreason": "",
|
| 736 |
+
"failreason": "",
|
| 737 |
+
"hashtag": null,
|
| 738 |
+
"launch_service_provider": {
|
| 739 |
+
"id": 121,
|
| 740 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 741 |
+
"name": "SpaceX",
|
| 742 |
+
"type": "Commercial"
|
| 743 |
+
},
|
| 744 |
+
"rocket": {
|
| 745 |
+
"id": 8221,
|
| 746 |
+
"configuration": {
|
| 747 |
+
"id": 464,
|
| 748 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/464/",
|
| 749 |
+
"name": "Starship",
|
| 750 |
+
"family": "Starship",
|
| 751 |
+
"full_name": "Starship",
|
| 752 |
+
"variant": ""
|
| 753 |
+
}
|
| 754 |
+
},
|
| 755 |
+
"mission": {
|
| 756 |
+
"id": 6798,
|
| 757 |
+
"name": "Integrated Flight Test 4",
|
| 758 |
+
"description": "Fourth test flight of the two-stage Starship launch vehicle.",
|
| 759 |
+
"launch_designator": null,
|
| 760 |
+
"type": "Test Flight",
|
| 761 |
+
"orbit": {
|
| 762 |
+
"id": 15,
|
| 763 |
+
"name": "Suborbital",
|
| 764 |
+
"abbrev": "Sub"
|
| 765 |
+
},
|
| 766 |
+
"agencies": [
|
| 767 |
+
{
|
| 768 |
+
"id": 121,
|
| 769 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 770 |
+
"name": "SpaceX",
|
| 771 |
+
"featured": true,
|
| 772 |
+
"type": "Commercial",
|
| 773 |
+
"country_code": "USA",
|
| 774 |
+
"abbrev": "SpX",
|
| 775 |
+
"description": "Space Exploration Technologies Corp., known as SpaceX, is an American aerospace manufacturer and space transport services company headquartered in Hawthorne, California. It was founded in 2002 by entrepreneur Elon Musk with the goal of reducing space transportation costs and enabling the colonization of Mars. SpaceX operates from many pads, on the East Coast of the US they operate from SLC-40 at Cape Canaveral Space Force Station and historic LC-39A at Kennedy Space Center. They also operate from SLC-4E at Vandenberg Space Force Base, California, usually for polar launches. Another launch site is being developed at Boca Chica, Texas.",
|
| 776 |
+
"administrator": "CEO: Elon Musk",
|
| 777 |
+
"founding_year": "2002",
|
| 778 |
+
"launchers": "Falcon | Starship",
|
| 779 |
+
"spacecraft": "Dragon",
|
| 780 |
+
"launch_library_url": null,
|
| 781 |
+
"total_launch_count": 369,
|
| 782 |
+
"consecutive_successful_launches": 70,
|
| 783 |
+
"successful_launches": 358,
|
| 784 |
+
"failed_launches": 11,
|
| 785 |
+
"pending_launches": 131,
|
| 786 |
+
"consecutive_successful_landings": 32,
|
| 787 |
+
"successful_landings": 320,
|
| 788 |
+
"failed_landings": 24,
|
| 789 |
+
"attempted_landings": 343,
|
| 790 |
+
"info_url": "http://www.spacex.com/",
|
| 791 |
+
"wiki_url": "http://en.wikipedia.org/wiki/SpaceX",
|
| 792 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_logo_20220826094919.png",
|
| 793 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_image_20190207032501.jpeg",
|
| 794 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_nation_20230531064544.jpg"
|
| 795 |
+
}
|
| 796 |
+
],
|
| 797 |
+
"info_urls": [],
|
| 798 |
+
"vid_urls": []
|
| 799 |
+
},
|
| 800 |
+
"pad": {
|
| 801 |
+
"id": 188,
|
| 802 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/188/",
|
| 803 |
+
"agency_id": 121,
|
| 804 |
+
"name": "Orbital Launch Mount A",
|
| 805 |
+
"description": null,
|
| 806 |
+
"info_url": null,
|
| 807 |
+
"wiki_url": "https://en.wikipedia.org/wiki/SpaceX_South_Texas_Launch_Site",
|
| 808 |
+
"map_url": "https://www.google.com/maps?q=25.997116,-97.15503099856647",
|
| 809 |
+
"latitude": "25.997116",
|
| 810 |
+
"longitude": "-97.15503099856647",
|
| 811 |
+
"location": {
|
| 812 |
+
"id": 143,
|
| 813 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/143/",
|
| 814 |
+
"name": "SpaceX Starbase, TX, USA",
|
| 815 |
+
"country_code": "USA",
|
| 816 |
+
"description": "",
|
| 817 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_143_20200803142438.jpg",
|
| 818 |
+
"timezone_name": "America/Chicago",
|
| 819 |
+
"total_launch_count": 12,
|
| 820 |
+
"total_landing_count": 9
|
| 821 |
+
},
|
| 822 |
+
"country_code": "USA",
|
| 823 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_orbital_launch_mount_a_20210514061342.jpg",
|
| 824 |
+
"total_launch_count": 3,
|
| 825 |
+
"orbital_launch_attempt_count": 0
|
| 826 |
+
},
|
| 827 |
+
"webcast_live": false,
|
| 828 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/starship_full_s_image_20240520184130.jpeg",
|
| 829 |
+
"infographic": null,
|
| 830 |
+
"program": [
|
| 831 |
+
{
|
| 832 |
+
"id": 1,
|
| 833 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/1/",
|
| 834 |
+
"name": "SpaceX Starship",
|
| 835 |
+
"description": "The SpaceX Starship is a fully reusable super heavy-lift launch vehicle under development by SpaceX since 2012, as a self-funded private spaceflight project. The second stage of the Starship \u2014 is designed as a long-duration cargo and passenger-carrying spacecraft. It is expected to be initially used without any booster stage at all, as part of an extensive development program to prove out launch-and-landing and iterate on a variety of design details, particularly with respect to the vehicle's atmospheric reentry.",
|
| 836 |
+
"agencies": [
|
| 837 |
+
{
|
| 838 |
+
"id": 121,
|
| 839 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 840 |
+
"name": "SpaceX",
|
| 841 |
+
"type": "Commercial"
|
| 842 |
+
}
|
| 843 |
+
],
|
| 844 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex2520star_program_20201129204513.png",
|
| 845 |
+
"start_date": "2019-03-01T05:00:00Z",
|
| 846 |
+
"end_date": null,
|
| 847 |
+
"info_url": "https://www.spacex.com/vehicles/starship/",
|
| 848 |
+
"wiki_url": "https://en.wikipedia.org/wiki/SpaceX_Starship",
|
| 849 |
+
"mission_patches": [],
|
| 850 |
+
"type": {
|
| 851 |
+
"id": 7,
|
| 852 |
+
"name": "Technology"
|
| 853 |
+
}
|
| 854 |
+
}
|
| 855 |
+
],
|
| 856 |
+
"orbital_launch_attempt_count": null,
|
| 857 |
+
"location_launch_attempt_count": 13,
|
| 858 |
+
"pad_launch_attempt_count": 4,
|
| 859 |
+
"agency_launch_attempt_count": 372,
|
| 860 |
+
"orbital_launch_attempt_count_year": 0,
|
| 861 |
+
"location_launch_attempt_count_year": 2,
|
| 862 |
+
"pad_launch_attempt_count_year": 2,
|
| 863 |
+
"agency_launch_attempt_count_year": 61,
|
| 864 |
+
"type": "normal"
|
| 865 |
+
},
|
| 866 |
+
{
|
| 867 |
+
"id": "cdc8274b-932e-48d6-9e8d-691969da4ad0",
|
| 868 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/cdc8274b-932e-48d6-9e8d-691969da4ad0/",
|
| 869 |
+
"slug": "falcon-9-block-5-starlink-group-10-1",
|
| 870 |
+
"name": "Falcon 9 Block 5 | Starlink Group 10-1",
|
| 871 |
+
"status": {
|
| 872 |
+
"id": 8,
|
| 873 |
+
"name": "To Be Confirmed",
|
| 874 |
+
"abbrev": "TBC",
|
| 875 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 876 |
+
},
|
| 877 |
+
"last_updated": "2024-06-01T07:19:07Z",
|
| 878 |
+
"net": "2024-06-07T22:58:00Z",
|
| 879 |
+
"window_end": "2024-06-08T02:21:00Z",
|
| 880 |
+
"window_start": "2024-06-07T22:58:00Z",
|
| 881 |
+
"net_precision": {
|
| 882 |
+
"id": 2,
|
| 883 |
+
"name": "Hour",
|
| 884 |
+
"abbrev": "HR",
|
| 885 |
+
"description": "The T-0 is accurate to the hour."
|
| 886 |
+
},
|
| 887 |
+
"probability": null,
|
| 888 |
+
"weather_concerns": null,
|
| 889 |
+
"holdreason": "",
|
| 890 |
+
"failreason": "",
|
| 891 |
+
"hashtag": null,
|
| 892 |
+
"launch_service_provider": {
|
| 893 |
+
"id": 121,
|
| 894 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 895 |
+
"name": "SpaceX",
|
| 896 |
+
"type": "Commercial"
|
| 897 |
+
},
|
| 898 |
+
"rocket": {
|
| 899 |
+
"id": 8256,
|
| 900 |
+
"configuration": {
|
| 901 |
+
"id": 164,
|
| 902 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/164/",
|
| 903 |
+
"name": "Falcon 9",
|
| 904 |
+
"family": "Falcon",
|
| 905 |
+
"full_name": "Falcon 9 Block 5",
|
| 906 |
+
"variant": "Block 5"
|
| 907 |
+
}
|
| 908 |
+
},
|
| 909 |
+
"mission": {
|
| 910 |
+
"id": 6837,
|
| 911 |
+
"name": "Starlink Group 10-1",
|
| 912 |
+
"description": "A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.",
|
| 913 |
+
"launch_designator": null,
|
| 914 |
+
"type": "Communications",
|
| 915 |
+
"orbit": {
|
| 916 |
+
"id": 8,
|
| 917 |
+
"name": "Low Earth Orbit",
|
| 918 |
+
"abbrev": "LEO"
|
| 919 |
+
},
|
| 920 |
+
"agencies": [
|
| 921 |
+
{
|
| 922 |
+
"id": 121,
|
| 923 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 924 |
+
"name": "SpaceX",
|
| 925 |
+
"featured": true,
|
| 926 |
+
"type": "Commercial",
|
| 927 |
+
"country_code": "USA",
|
| 928 |
+
"abbrev": "SpX",
|
| 929 |
+
"description": "Space Exploration Technologies Corp., known as SpaceX, is an American aerospace manufacturer and space transport services company headquartered in Hawthorne, California. It was founded in 2002 by entrepreneur Elon Musk with the goal of reducing space transportation costs and enabling the colonization of Mars. SpaceX operates from many pads, on the East Coast of the US they operate from SLC-40 at Cape Canaveral Space Force Station and historic LC-39A at Kennedy Space Center. They also operate from SLC-4E at Vandenberg Space Force Base, California, usually for polar launches. Another launch site is being developed at Boca Chica, Texas.",
|
| 930 |
+
"administrator": "CEO: Elon Musk",
|
| 931 |
+
"founding_year": "2002",
|
| 932 |
+
"launchers": "Falcon | Starship",
|
| 933 |
+
"spacecraft": "Dragon",
|
| 934 |
+
"launch_library_url": null,
|
| 935 |
+
"total_launch_count": 369,
|
| 936 |
+
"consecutive_successful_launches": 70,
|
| 937 |
+
"successful_launches": 358,
|
| 938 |
+
"failed_launches": 11,
|
| 939 |
+
"pending_launches": 131,
|
| 940 |
+
"consecutive_successful_landings": 32,
|
| 941 |
+
"successful_landings": 320,
|
| 942 |
+
"failed_landings": 24,
|
| 943 |
+
"attempted_landings": 343,
|
| 944 |
+
"info_url": "http://www.spacex.com/",
|
| 945 |
+
"wiki_url": "http://en.wikipedia.org/wiki/SpaceX",
|
| 946 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_logo_20220826094919.png",
|
| 947 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_image_20190207032501.jpeg",
|
| 948 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_nation_20230531064544.jpg"
|
| 949 |
+
}
|
| 950 |
+
],
|
| 951 |
+
"info_urls": [],
|
| 952 |
+
"vid_urls": []
|
| 953 |
+
},
|
| 954 |
+
"pad": {
|
| 955 |
+
"id": 80,
|
| 956 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/80/",
|
| 957 |
+
"agency_id": 121,
|
| 958 |
+
"name": "Space Launch Complex 40",
|
| 959 |
+
"description": null,
|
| 960 |
+
"info_url": null,
|
| 961 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_40",
|
| 962 |
+
"map_url": "https://www.google.com/maps?q=28.56194122,-80.57735736",
|
| 963 |
+
"latitude": "28.56194122",
|
| 964 |
+
"longitude": "-80.57735736",
|
| 965 |
+
"location": {
|
| 966 |
+
"id": 12,
|
| 967 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/12/",
|
| 968 |
+
"name": "Cape Canaveral, FL, USA",
|
| 969 |
+
"country_code": "USA",
|
| 970 |
+
"description": "",
|
| 971 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg",
|
| 972 |
+
"timezone_name": "America/New_York",
|
| 973 |
+
"total_launch_count": 956,
|
| 974 |
+
"total_landing_count": 51
|
| 975 |
+
},
|
| 976 |
+
"country_code": "USA",
|
| 977 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_80_20200803143323.jpg",
|
| 978 |
+
"total_launch_count": 245,
|
| 979 |
+
"orbital_launch_attempt_count": 245
|
| 980 |
+
},
|
| 981 |
+
"webcast_live": false,
|
| 982 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon2520925_image_20221009234147.png",
|
| 983 |
+
"infographic": null,
|
| 984 |
+
"program": [
|
| 985 |
+
{
|
| 986 |
+
"id": 25,
|
| 987 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/25/",
|
| 988 |
+
"name": "Starlink",
|
| 989 |
+
"description": "Starlink is a satellite internet constellation operated by American aerospace company SpaceX",
|
| 990 |
+
"agencies": [
|
| 991 |
+
{
|
| 992 |
+
"id": 121,
|
| 993 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 994 |
+
"name": "SpaceX",
|
| 995 |
+
"type": "Commercial"
|
| 996 |
+
}
|
| 997 |
+
],
|
| 998 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/starlink_program_20231228154508.jpeg",
|
| 999 |
+
"start_date": "2018-02-22T14:17:00Z",
|
| 1000 |
+
"end_date": null,
|
| 1001 |
+
"info_url": "https://starlink.com",
|
| 1002 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Starlink",
|
| 1003 |
+
"mission_patches": [
|
| 1004 |
+
{
|
| 1005 |
+
"id": 7,
|
| 1006 |
+
"name": "Space X Starlink Mission Patch",
|
| 1007 |
+
"priority": 10,
|
| 1008 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/mission_patch_images/space2520x252_mission_patch_20221011205756.png",
|
| 1009 |
+
"agency": {
|
| 1010 |
+
"id": 121,
|
| 1011 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 1012 |
+
"name": "SpaceX",
|
| 1013 |
+
"type": "Commercial"
|
| 1014 |
+
}
|
| 1015 |
+
}
|
| 1016 |
+
],
|
| 1017 |
+
"type": {
|
| 1018 |
+
"id": 3,
|
| 1019 |
+
"name": "Communication Constellation"
|
| 1020 |
+
}
|
| 1021 |
+
}
|
| 1022 |
+
],
|
| 1023 |
+
"orbital_launch_attempt_count": 6691,
|
| 1024 |
+
"location_launch_attempt_count": 959,
|
| 1025 |
+
"pad_launch_attempt_count": 247,
|
| 1026 |
+
"agency_launch_attempt_count": 373,
|
| 1027 |
+
"orbital_launch_attempt_count_year": 113,
|
| 1028 |
+
"location_launch_attempt_count_year": 32,
|
| 1029 |
+
"pad_launch_attempt_count_year": 29,
|
| 1030 |
+
"agency_launch_attempt_count_year": 62,
|
| 1031 |
+
"type": "normal"
|
| 1032 |
+
},
|
| 1033 |
+
{
|
| 1034 |
+
"id": "c4a4f111-dd24-491a-bc44-8bcaf2e08351",
|
| 1035 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/c4a4f111-dd24-491a-bc44-8bcaf2e08351/",
|
| 1036 |
+
"slug": "spaceshiptwo-galactic-07",
|
| 1037 |
+
"name": "SpaceShipTwo | Galactic 07",
|
| 1038 |
+
"status": {
|
| 1039 |
+
"id": 2,
|
| 1040 |
+
"name": "To Be Determined",
|
| 1041 |
+
"abbrev": "TBD",
|
| 1042 |
+
"description": "Current date is a placeholder or rough estimation based on unreliable or interpreted sources."
|
| 1043 |
+
},
|
| 1044 |
+
"last_updated": "2024-05-01T23:25:01Z",
|
| 1045 |
+
"net": "2024-06-08T00:00:00Z",
|
| 1046 |
+
"window_end": "2024-06-08T00:00:00Z",
|
| 1047 |
+
"window_start": "2024-06-08T00:00:00Z",
|
| 1048 |
+
"net_precision": {
|
| 1049 |
+
"id": 5,
|
| 1050 |
+
"name": "Day",
|
| 1051 |
+
"abbrev": "DAY",
|
| 1052 |
+
"description": "The T-0 is expected on the given day."
|
| 1053 |
+
},
|
| 1054 |
+
"probability": null,
|
| 1055 |
+
"weather_concerns": null,
|
| 1056 |
+
"holdreason": "",
|
| 1057 |
+
"failreason": "",
|
| 1058 |
+
"hashtag": null,
|
| 1059 |
+
"launch_service_provider": {
|
| 1060 |
+
"id": 1024,
|
| 1061 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/1024/",
|
| 1062 |
+
"name": "Virgin Galactic",
|
| 1063 |
+
"type": "Private"
|
| 1064 |
+
},
|
| 1065 |
+
"rocket": {
|
| 1066 |
+
"id": 8092,
|
| 1067 |
+
"configuration": {
|
| 1068 |
+
"id": 465,
|
| 1069 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/465/",
|
| 1070 |
+
"name": "SpaceShipTwo",
|
| 1071 |
+
"family": "",
|
| 1072 |
+
"full_name": "SpaceShipTwo",
|
| 1073 |
+
"variant": ""
|
| 1074 |
+
}
|
| 1075 |
+
},
|
| 1076 |
+
"mission": {
|
| 1077 |
+
"id": 6646,
|
| 1078 |
+
"name": "Galactic 07",
|
| 1079 |
+
"description": "Seventh commercial Virgin Galactic mission.",
|
| 1080 |
+
"launch_designator": null,
|
| 1081 |
+
"type": "Tourism",
|
| 1082 |
+
"orbit": {
|
| 1083 |
+
"id": 15,
|
| 1084 |
+
"name": "Suborbital",
|
| 1085 |
+
"abbrev": "Sub"
|
| 1086 |
+
},
|
| 1087 |
+
"agencies": [
|
| 1088 |
+
{
|
| 1089 |
+
"id": 1024,
|
| 1090 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/1024/",
|
| 1091 |
+
"name": "Virgin Galactic",
|
| 1092 |
+
"featured": false,
|
| 1093 |
+
"type": "Private",
|
| 1094 |
+
"country_code": "USA",
|
| 1095 |
+
"abbrev": "VG",
|
| 1096 |
+
"description": "Virgin Galactic is an American spaceflight company within the Virgin Group. It is developing commercial spacecraft and aims to provide suborbital spaceflights to space tourists. Virgin Galactic's suborbital spacecraft are air launched from beneath a carrier airplane known as White Knight Two.",
|
| 1097 |
+
"administrator": "Founder: Richard Branson",
|
| 1098 |
+
"founding_year": "2004",
|
| 1099 |
+
"launchers": "VMS Eve",
|
| 1100 |
+
"spacecraft": "VSS Enterprise | VSS Unity",
|
| 1101 |
+
"launch_library_url": null,
|
| 1102 |
+
"total_launch_count": 66,
|
| 1103 |
+
"consecutive_successful_launches": 10,
|
| 1104 |
+
"successful_launches": 61,
|
| 1105 |
+
"failed_launches": 5,
|
| 1106 |
+
"pending_launches": 1,
|
| 1107 |
+
"consecutive_successful_landings": 0,
|
| 1108 |
+
"successful_landings": 0,
|
| 1109 |
+
"failed_landings": 0,
|
| 1110 |
+
"attempted_landings": 0,
|
| 1111 |
+
"info_url": "https://www.virgingalactic.com/",
|
| 1112 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Virgin_Galactic",
|
| 1113 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/virgin2520galactic_logo_20230509082346.png",
|
| 1114 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/virgin_galactic_image_20210522131723.jpeg",
|
| 1115 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/virgin2520galactic_nation_20230617045127.jpg"
|
| 1116 |
+
}
|
| 1117 |
+
],
|
| 1118 |
+
"info_urls": [],
|
| 1119 |
+
"vid_urls": []
|
| 1120 |
+
},
|
| 1121 |
+
"pad": {
|
| 1122 |
+
"id": 191,
|
| 1123 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/191/",
|
| 1124 |
+
"agency_id": 1024,
|
| 1125 |
+
"name": "Spaceport America",
|
| 1126 |
+
"description": null,
|
| 1127 |
+
"info_url": "https://www.spaceportamerica.com/",
|
| 1128 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Spaceport_America",
|
| 1129 |
+
"map_url": "https://www.google.com/maps?q=32.9902778,-106.9719162",
|
| 1130 |
+
"latitude": "32.9902778",
|
| 1131 |
+
"longitude": "-106.9719162",
|
| 1132 |
+
"location": {
|
| 1133 |
+
"id": 144,
|
| 1134 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/144/",
|
| 1135 |
+
"name": "Air launch to Suborbital flight",
|
| 1136 |
+
"country_code": "???",
|
| 1137 |
+
"description": "",
|
| 1138 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_144_20200803142439.jpg",
|
| 1139 |
+
"timezone_name": "",
|
| 1140 |
+
"total_launch_count": 85,
|
| 1141 |
+
"total_landing_count": 0
|
| 1142 |
+
},
|
| 1143 |
+
"country_code": "USA",
|
| 1144 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_spaceport_america_20210522162030.jpg",
|
| 1145 |
+
"total_launch_count": 13,
|
| 1146 |
+
"orbital_launch_attempt_count": 0
|
| 1147 |
+
},
|
| 1148 |
+
"webcast_live": false,
|
| 1149 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spaceshiptwo_image_20210522140909.jpeg",
|
| 1150 |
+
"infographic": null,
|
| 1151 |
+
"program": [],
|
| 1152 |
+
"orbital_launch_attempt_count": null,
|
| 1153 |
+
"location_launch_attempt_count": 86,
|
| 1154 |
+
"pad_launch_attempt_count": 14,
|
| 1155 |
+
"agency_launch_attempt_count": 67,
|
| 1156 |
+
"orbital_launch_attempt_count_year": 0,
|
| 1157 |
+
"location_launch_attempt_count_year": 2,
|
| 1158 |
+
"pad_launch_attempt_count_year": 2,
|
| 1159 |
+
"agency_launch_attempt_count_year": 2,
|
| 1160 |
+
"type": "normal"
|
| 1161 |
+
},
|
| 1162 |
+
{
|
| 1163 |
+
"id": "e59f9e0b-fed2-4b12-a21b-ceda262bca5e",
|
| 1164 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/e59f9e0b-fed2-4b12-a21b-ceda262bca5e/",
|
| 1165 |
+
"slug": "falcon-9-block-5-astra-1pses-24",
|
| 1166 |
+
"name": "Falcon 9 Block 5 | Astra 1P/SES-24",
|
| 1167 |
+
"status": {
|
| 1168 |
+
"id": 2,
|
| 1169 |
+
"name": "To Be Determined",
|
| 1170 |
+
"abbrev": "TBD",
|
| 1171 |
+
"description": "Current date is a placeholder or rough estimation based on unreliable or interpreted sources."
|
| 1172 |
+
},
|
| 1173 |
+
"last_updated": "2024-05-28T02:36:44Z",
|
| 1174 |
+
"net": "2024-06-10T00:00:00Z",
|
| 1175 |
+
"window_end": "2024-06-10T00:00:00Z",
|
| 1176 |
+
"window_start": "2024-06-10T00:00:00Z",
|
| 1177 |
+
"net_precision": {
|
| 1178 |
+
"id": 5,
|
| 1179 |
+
"name": "Day",
|
| 1180 |
+
"abbrev": "DAY",
|
| 1181 |
+
"description": "The T-0 is expected on the given day."
|
| 1182 |
+
},
|
| 1183 |
+
"probability": null,
|
| 1184 |
+
"weather_concerns": null,
|
| 1185 |
+
"holdreason": "",
|
| 1186 |
+
"failreason": "",
|
| 1187 |
+
"hashtag": null,
|
| 1188 |
+
"launch_service_provider": {
|
| 1189 |
+
"id": 121,
|
| 1190 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 1191 |
+
"name": "SpaceX",
|
| 1192 |
+
"type": "Commercial"
|
| 1193 |
+
},
|
| 1194 |
+
"rocket": {
|
| 1195 |
+
"id": 8057,
|
| 1196 |
+
"configuration": {
|
| 1197 |
+
"id": 164,
|
| 1198 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/164/",
|
| 1199 |
+
"name": "Falcon 9",
|
| 1200 |
+
"family": "Falcon",
|
| 1201 |
+
"full_name": "Falcon 9 Block 5",
|
| 1202 |
+
"variant": "Block 5"
|
| 1203 |
+
}
|
| 1204 |
+
},
|
| 1205 |
+
"mission": {
|
| 1206 |
+
"id": 6610,
|
| 1207 |
+
"name": "Astra 1P/SES-24",
|
| 1208 |
+
"description": "ASTRA 1P, a classic wide-beam satellite, will support SES\u2019s prime TV neighbourhood and enable content owners, private and public broadcasters across Germany, France and Spain to continue broadcasting satellite TV channels in the highest-picture quality in the most cost-efficient manner. It will be based on the full electric and powerful Spacebus NEO platform developed by Thales Alenia Space and already flight proven in orbit.",
|
| 1209 |
+
"launch_designator": null,
|
| 1210 |
+
"type": "Communications",
|
| 1211 |
+
"orbit": {
|
| 1212 |
+
"id": 2,
|
| 1213 |
+
"name": "Geostationary Transfer Orbit",
|
| 1214 |
+
"abbrev": "GTO"
|
| 1215 |
+
},
|
| 1216 |
+
"agencies": [],
|
| 1217 |
+
"info_urls": [],
|
| 1218 |
+
"vid_urls": []
|
| 1219 |
+
},
|
| 1220 |
+
"pad": {
|
| 1221 |
+
"id": 80,
|
| 1222 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/80/",
|
| 1223 |
+
"agency_id": 121,
|
| 1224 |
+
"name": "Space Launch Complex 40",
|
| 1225 |
+
"description": null,
|
| 1226 |
+
"info_url": null,
|
| 1227 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_40",
|
| 1228 |
+
"map_url": "https://www.google.com/maps?q=28.56194122,-80.57735736",
|
| 1229 |
+
"latitude": "28.56194122",
|
| 1230 |
+
"longitude": "-80.57735736",
|
| 1231 |
+
"location": {
|
| 1232 |
+
"id": 12,
|
| 1233 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/12/",
|
| 1234 |
+
"name": "Cape Canaveral, FL, USA",
|
| 1235 |
+
"country_code": "USA",
|
| 1236 |
+
"description": "",
|
| 1237 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg",
|
| 1238 |
+
"timezone_name": "America/New_York",
|
| 1239 |
+
"total_launch_count": 956,
|
| 1240 |
+
"total_landing_count": 51
|
| 1241 |
+
},
|
| 1242 |
+
"country_code": "USA",
|
| 1243 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_80_20200803143323.jpg",
|
| 1244 |
+
"total_launch_count": 245,
|
| 1245 |
+
"orbital_launch_attempt_count": 245
|
| 1246 |
+
},
|
| 1247 |
+
"webcast_live": false,
|
| 1248 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon_9_image_20230807133459.jpeg",
|
| 1249 |
+
"infographic": null,
|
| 1250 |
+
"program": [],
|
| 1251 |
+
"orbital_launch_attempt_count": 6692,
|
| 1252 |
+
"location_launch_attempt_count": 960,
|
| 1253 |
+
"pad_launch_attempt_count": 248,
|
| 1254 |
+
"agency_launch_attempt_count": 374,
|
| 1255 |
+
"orbital_launch_attempt_count_year": 114,
|
| 1256 |
+
"location_launch_attempt_count_year": 33,
|
| 1257 |
+
"pad_launch_attempt_count_year": 30,
|
| 1258 |
+
"agency_launch_attempt_count_year": 63,
|
| 1259 |
+
"type": "normal"
|
| 1260 |
+
},
|
| 1261 |
+
{
|
| 1262 |
+
"id": "341c544e-d3b7-41fd-b5d4-7ffacc7ccaac",
|
| 1263 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/341c544e-d3b7-41fd-b5d4-7ffacc7ccaac/",
|
| 1264 |
+
"slug": "long-march-2c-space-variable-objects-monitor-svom",
|
| 1265 |
+
"name": "Long March 2C | Space Variable Objects Monitor (SVOM)",
|
| 1266 |
+
"status": {
|
| 1267 |
+
"id": 8,
|
| 1268 |
+
"name": "To Be Confirmed",
|
| 1269 |
+
"abbrev": "TBC",
|
| 1270 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 1271 |
+
},
|
| 1272 |
+
"last_updated": "2024-01-09T12:21:52Z",
|
| 1273 |
+
"net": "2024-06-24T10:00:00Z",
|
| 1274 |
+
"window_end": "2024-06-24T10:00:00Z",
|
| 1275 |
+
"window_start": "2024-06-24T10:00:00Z",
|
| 1276 |
+
"net_precision": {
|
| 1277 |
+
"id": 2,
|
| 1278 |
+
"name": "Hour",
|
| 1279 |
+
"abbrev": "HR",
|
| 1280 |
+
"description": "The T-0 is accurate to the hour."
|
| 1281 |
+
},
|
| 1282 |
+
"probability": null,
|
| 1283 |
+
"weather_concerns": null,
|
| 1284 |
+
"holdreason": "",
|
| 1285 |
+
"failreason": "",
|
| 1286 |
+
"hashtag": null,
|
| 1287 |
+
"launch_service_provider": {
|
| 1288 |
+
"id": 88,
|
| 1289 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/88/",
|
| 1290 |
+
"name": "China Aerospace Science and Technology Corporation",
|
| 1291 |
+
"type": "Government"
|
| 1292 |
+
},
|
| 1293 |
+
"rocket": {
|
| 1294 |
+
"id": 8159,
|
| 1295 |
+
"configuration": {
|
| 1296 |
+
"id": 61,
|
| 1297 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/61/",
|
| 1298 |
+
"name": "Long March 2",
|
| 1299 |
+
"family": "Long March",
|
| 1300 |
+
"full_name": "Long March 2C",
|
| 1301 |
+
"variant": "C"
|
| 1302 |
+
}
|
| 1303 |
+
},
|
| 1304 |
+
"mission": {
|
| 1305 |
+
"id": 6720,
|
| 1306 |
+
"name": "Space Variable Objects Monitor (SVOM)",
|
| 1307 |
+
"description": "The Space Variable Objects Monitor (SVOM) is a French/Chinese planned small X-ray telescope satellite under development by China National Space Administration (CNSA) and the Centre National d'\u00c9tudes Spatiales (CNES).\r\n\r\nSVOM will study the explosions of massive stars by analysing the resulting gamma-ray bursts. The lightweight X-ray mirror for SVOM weighs just 1 kg (2.2 lb). SVOM will add new capabilities to the work of finding gamma-ray bursts currently being done by the multinational satellite Swift.\r\n\r\nIts anti-solar pointing strategy makes the Earth cross the field of view of its payload every orbit.",
|
| 1308 |
+
"launch_designator": null,
|
| 1309 |
+
"type": "Astrophysics",
|
| 1310 |
+
"orbit": {
|
| 1311 |
+
"id": 8,
|
| 1312 |
+
"name": "Low Earth Orbit",
|
| 1313 |
+
"abbrev": "LEO"
|
| 1314 |
+
},
|
| 1315 |
+
"agencies": [],
|
| 1316 |
+
"info_urls": [],
|
| 1317 |
+
"vid_urls": []
|
| 1318 |
+
},
|
| 1319 |
+
"pad": {
|
| 1320 |
+
"id": 66,
|
| 1321 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/66/",
|
| 1322 |
+
"agency_id": 17,
|
| 1323 |
+
"name": "Launch Complex 3 (LC-3/LA-1)",
|
| 1324 |
+
"description": null,
|
| 1325 |
+
"info_url": null,
|
| 1326 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Xichang_Satellite_Launch_Center",
|
| 1327 |
+
"map_url": "https://www.google.com/maps?q=28.247209,102.02917",
|
| 1328 |
+
"latitude": "28.247209",
|
| 1329 |
+
"longitude": "102.02917",
|
| 1330 |
+
"location": {
|
| 1331 |
+
"id": 16,
|
| 1332 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/16/",
|
| 1333 |
+
"name": "Xichang Satellite Launch Center, People's Republic of China",
|
| 1334 |
+
"country_code": "CHN",
|
| 1335 |
+
"description": "",
|
| 1336 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_16_20200803142513.jpg",
|
| 1337 |
+
"timezone_name": "Asia/Shanghai",
|
| 1338 |
+
"total_launch_count": 206,
|
| 1339 |
+
"total_landing_count": 0
|
| 1340 |
+
},
|
| 1341 |
+
"country_code": "CHN",
|
| 1342 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_66_20200803143611.jpg",
|
| 1343 |
+
"total_launch_count": 91,
|
| 1344 |
+
"orbital_launch_attempt_count": 91
|
| 1345 |
+
},
|
| 1346 |
+
"webcast_live": false,
|
| 1347 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/long_march_2_image_20230803100234.jpeg",
|
| 1348 |
+
"infographic": null,
|
| 1349 |
+
"program": [],
|
| 1350 |
+
"orbital_launch_attempt_count": 6693,
|
| 1351 |
+
"location_launch_attempt_count": 207,
|
| 1352 |
+
"pad_launch_attempt_count": 92,
|
| 1353 |
+
"agency_launch_attempt_count": 475,
|
| 1354 |
+
"orbital_launch_attempt_count_year": 115,
|
| 1355 |
+
"location_launch_attempt_count_year": 9,
|
| 1356 |
+
"pad_launch_attempt_count_year": 6,
|
| 1357 |
+
"agency_launch_attempt_count_year": 21,
|
| 1358 |
+
"type": "normal"
|
| 1359 |
+
},
|
| 1360 |
+
{
|
| 1361 |
+
"id": "ad53f165-a118-43a6-ad46-6021accdaabd",
|
| 1362 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/ad53f165-a118-43a6-ad46-6021accdaabd/",
|
| 1363 |
+
"slug": "falcon-heavy-goes-u",
|
| 1364 |
+
"name": "Falcon Heavy | GOES-U",
|
| 1365 |
+
"status": {
|
| 1366 |
+
"id": 1,
|
| 1367 |
+
"name": "Go for Launch",
|
| 1368 |
+
"abbrev": "Go",
|
| 1369 |
+
"description": "Current T-0 confirmed by official or reliable sources."
|
| 1370 |
+
},
|
| 1371 |
+
"last_updated": "2024-05-09T23:48:30Z",
|
| 1372 |
+
"net": "2024-06-25T21:16:00Z",
|
| 1373 |
+
"window_end": "2024-06-25T23:16:00Z",
|
| 1374 |
+
"window_start": "2024-06-25T21:16:00Z",
|
| 1375 |
+
"net_precision": {
|
| 1376 |
+
"id": 1,
|
| 1377 |
+
"name": "Minute",
|
| 1378 |
+
"abbrev": "MIN",
|
| 1379 |
+
"description": "The T-0 is accurate to the minute."
|
| 1380 |
+
},
|
| 1381 |
+
"probability": null,
|
| 1382 |
+
"weather_concerns": null,
|
| 1383 |
+
"holdreason": "",
|
| 1384 |
+
"failreason": "",
|
| 1385 |
+
"hashtag": null,
|
| 1386 |
+
"launch_service_provider": {
|
| 1387 |
+
"id": 121,
|
| 1388 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 1389 |
+
"name": "SpaceX",
|
| 1390 |
+
"type": "Commercial"
|
| 1391 |
+
},
|
| 1392 |
+
"rocket": {
|
| 1393 |
+
"id": 7449,
|
| 1394 |
+
"configuration": {
|
| 1395 |
+
"id": 161,
|
| 1396 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/161/",
|
| 1397 |
+
"name": "Falcon Heavy",
|
| 1398 |
+
"family": "Falcon",
|
| 1399 |
+
"full_name": "Falcon Heavy",
|
| 1400 |
+
"variant": "Heavy"
|
| 1401 |
+
}
|
| 1402 |
+
},
|
| 1403 |
+
"mission": {
|
| 1404 |
+
"id": 5841,
|
| 1405 |
+
"name": "GOES-U",
|
| 1406 |
+
"description": "The Geostationary Operational Environmental Satellite-S Series (GOES-S) is the second of the next generation of geostationary weather satellites. The four satellites of the series will provide advanced imaging with increased spatial resolution and faster coverage for more accurate forecasts, real-time mapping of lightning activity, and improved monitoring of solar activity.",
|
| 1407 |
+
"launch_designator": null,
|
| 1408 |
+
"type": "Earth Science",
|
| 1409 |
+
"orbit": {
|
| 1410 |
+
"id": 2,
|
| 1411 |
+
"name": "Geostationary Transfer Orbit",
|
| 1412 |
+
"abbrev": "GTO"
|
| 1413 |
+
},
|
| 1414 |
+
"agencies": [
|
| 1415 |
+
{
|
| 1416 |
+
"id": 44,
|
| 1417 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 1418 |
+
"name": "National Aeronautics and Space Administration",
|
| 1419 |
+
"featured": true,
|
| 1420 |
+
"type": "Government",
|
| 1421 |
+
"country_code": "USA",
|
| 1422 |
+
"abbrev": "NASA",
|
| 1423 |
+
"description": "The National Aeronautics and Space Administration is an independent agency of the executive branch of the United States federal government responsible for the civilian space program, as well as aeronautics and aerospace research. NASA have many launch facilities but most are inactive. The most commonly used pad will be LC-39B at Kennedy Space Center in Florida.",
|
| 1424 |
+
"administrator": "Administrator: Bill Nelson",
|
| 1425 |
+
"founding_year": "1958",
|
| 1426 |
+
"launchers": "Space Shuttle | SLS",
|
| 1427 |
+
"spacecraft": "Orion",
|
| 1428 |
+
"launch_library_url": null,
|
| 1429 |
+
"total_launch_count": 135,
|
| 1430 |
+
"consecutive_successful_launches": 11,
|
| 1431 |
+
"successful_launches": 115,
|
| 1432 |
+
"failed_launches": 20,
|
| 1433 |
+
"pending_launches": 6,
|
| 1434 |
+
"consecutive_successful_landings": 0,
|
| 1435 |
+
"successful_landings": 0,
|
| 1436 |
+
"failed_landings": 0,
|
| 1437 |
+
"attempted_landings": 0,
|
| 1438 |
+
"info_url": "http://www.nasa.gov",
|
| 1439 |
+
"wiki_url": "http://en.wikipedia.org/wiki/National_Aeronautics_and_Space_Administration",
|
| 1440 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_logo_20190207032448.png",
|
| 1441 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_image_20190207032448.jpeg",
|
| 1442 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_nation_20230803040809.jpg"
|
| 1443 |
+
}
|
| 1444 |
+
],
|
| 1445 |
+
"info_urls": [],
|
| 1446 |
+
"vid_urls": []
|
| 1447 |
+
},
|
| 1448 |
+
"pad": {
|
| 1449 |
+
"id": 87,
|
| 1450 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/87/",
|
| 1451 |
+
"agency_id": 121,
|
| 1452 |
+
"name": "Launch Complex 39A",
|
| 1453 |
+
"description": null,
|
| 1454 |
+
"info_url": null,
|
| 1455 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Kennedy_Space_Center_Launch_Complex_39#Launch_Pad_39A",
|
| 1456 |
+
"map_url": "https://www.google.com/maps?q=28.60822681,-80.60428186",
|
| 1457 |
+
"latitude": "28.60822681",
|
| 1458 |
+
"longitude": "-80.60428186",
|
| 1459 |
+
"location": {
|
| 1460 |
+
"id": 27,
|
| 1461 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/27/",
|
| 1462 |
+
"name": "Kennedy Space Center, FL, USA",
|
| 1463 |
+
"country_code": "USA",
|
| 1464 |
+
"description": "",
|
| 1465 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_27_20200803142447.jpg",
|
| 1466 |
+
"timezone_name": "America/New_York",
|
| 1467 |
+
"total_launch_count": 238,
|
| 1468 |
+
"total_landing_count": 0
|
| 1469 |
+
},
|
| 1470 |
+
"country_code": "USA",
|
| 1471 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_87_20200803143537.jpg",
|
| 1472 |
+
"total_launch_count": 180,
|
| 1473 |
+
"orbital_launch_attempt_count": 179
|
| 1474 |
+
},
|
| 1475 |
+
"webcast_live": false,
|
| 1476 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon_heavy_image_20220129192819.jpeg",
|
| 1477 |
+
"infographic": null,
|
| 1478 |
+
"program": [],
|
| 1479 |
+
"orbital_launch_attempt_count": 6694,
|
| 1480 |
+
"location_launch_attempt_count": 239,
|
| 1481 |
+
"pad_launch_attempt_count": 181,
|
| 1482 |
+
"agency_launch_attempt_count": 375,
|
| 1483 |
+
"orbital_launch_attempt_count_year": 116,
|
| 1484 |
+
"location_launch_attempt_count_year": 13,
|
| 1485 |
+
"pad_launch_attempt_count_year": 13,
|
| 1486 |
+
"agency_launch_attempt_count_year": 64,
|
| 1487 |
+
"type": "normal"
|
| 1488 |
+
}
|
| 1489 |
+
]
|
| 1490 |
+
}
|
data/launch_schedule.csv
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Status Name,Status Description,Last Updated,Provider Name,Provider Type,Provider Abbrev,Rocket Name,Rocket Active,Rocket Reusable,Rocket Description,Rocket Family,Rocket Full Name,Mission Name,Mission Description,Mission Type,Orbit Name,Orbit Abbrev,Window Start,Window End,Webcast Live,Pad Name,Pad Location,Rocket Launch Mass,Rocket Thrust,Mission Payload Mass,Mission Payload Type,Total Launch Count,Successful Launches,Previous Flight,Turn Around Time Days,Safety Measures,Regulatory Approval
|
| 2 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-06-02T16:04:54Z,SpaceX,Commercial,,,,,,,,Starlink Group 8-5,A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.,Communications,Low Earth Orbit,LEO,2024-06-05T00:04:00Z,2024-06-05T03:27:00Z,False,Space Launch Complex 40,"{""id"": 12, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/12/"", ""name"": ""Cape Canaveral, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 956, ""total_landing_count"": 51}",,,,,,,,,,
|
| 3 |
+
Go for Launch,Current T-0 confirmed by official or reliable sources.,2024-06-02T16:38:52Z,Rocket Lab,Commercial,,,,,,,,PREFIRE And Ice (PREFIRE 2),"Second 6U Cubesat carrying a miniaturized IR spectrometer, covering 0- 45 μm at 0.84 μm spectral resolution, operating for one seasonal cycle for NASAs PREFIRE (Polar Radiant Energy in the Far-InfraRed Experiment) mission.",Earth Science,Polar Orbit,PO,2024-06-05T03:00:00Z,2024-06-05T03:00:00Z,False,Rocket Lab Launch Complex 1B,"{""id"": 10, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/10/"", ""name"": ""Onenui Station, Mahia Peninsula, New Zealand"", ""country_code"": ""NZL"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_10_20200803142509.jpg"", ""timezone_name"": ""Pacific/Auckland"", ""total_launch_count"": 44, ""total_landing_count"": 17}",,,,,,,,,,
|
| 4 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-05-31T00:43:06Z,SpaceX,Commercial,,,,,,,,Starlink Group 8-8,A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.,Communications,Low Earth Orbit,LEO,2024-06-05T05:12:00Z,2024-06-05T09:12:00Z,False,Space Launch Complex 4E,"{""id"": 11, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/11/"", ""name"": ""Vandenberg SFB, CA, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_11_20200803142416.jpg"", ""timezone_name"": ""America/Los_Angeles"", ""total_launch_count"": 757, ""total_landing_count"": 19}",,,,,,,,,,
|
| 5 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-06-02T16:42:58Z,United Launch Alliance,Commercial,,,,,,,,CST-100 Starliner Crewed Flight Test,"This is the first crewed test flight of Starliner spacecraft. It will carry NASA astronauts Barry Wilmore and
|
| 6 |
+
Suni Williams to the International Space Station.",Test Flight,Low Earth Orbit,LEO,2024-06-05T14:52:00Z,2024-06-05T14:52:00Z,False,Space Launch Complex 41,"{""id"": 12, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/12/"", ""name"": ""Cape Canaveral, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 956, ""total_landing_count"": 51}",,,,,,,,,,
|
| 7 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-06-01T15:41:13Z,SpaceX,Commercial,,,,,,,,Integrated Flight Test 4,Fourth test flight of the two-stage Starship launch vehicle.,Test Flight,Suborbital,Sub,2024-06-06T12:00:00Z,2024-06-06T16:00:00Z,False,Orbital Launch Mount A,"{""id"": 143, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/143/"", ""name"": ""SpaceX Starbase, TX, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_143_20200803142438.jpg"", ""timezone_name"": ""America/Chicago"", ""total_launch_count"": 12, ""total_landing_count"": 9}",,,,,,,,,,
|
| 8 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-06-01T07:19:07Z,SpaceX,Commercial,,,,,,,,Starlink Group 10-1,A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.,Communications,Low Earth Orbit,LEO,2024-06-07T22:58:00Z,2024-06-08T02:21:00Z,False,Space Launch Complex 40,"{""id"": 12, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/12/"", ""name"": ""Cape Canaveral, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 956, ""total_landing_count"": 51}",,,,,,,,,,
|
| 9 |
+
To Be Determined,Current date is a placeholder or rough estimation based on unreliable or interpreted sources.,2024-05-01T23:25:01Z,Virgin Galactic,Private,,,,,,,,Galactic 07,Seventh commercial Virgin Galactic mission.,Tourism,Suborbital,Sub,2024-06-08T00:00:00Z,2024-06-08T00:00:00Z,False,Spaceport America,"{""id"": 144, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/144/"", ""name"": ""Air launch to Suborbital flight"", ""country_code"": ""???"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_144_20200803142439.jpg"", ""timezone_name"": """", ""total_launch_count"": 85, ""total_landing_count"": 0}",,,,,,,,,,
|
| 10 |
+
To Be Determined,Current date is a placeholder or rough estimation based on unreliable or interpreted sources.,2024-05-28T02:36:44Z,SpaceX,Commercial,,,,,,,,Astra 1P/SES-24,"ASTRA 1P, a classic wide-beam satellite, will support SES’s prime TV neighbourhood and enable content owners, private and public broadcasters across Germany, France and Spain to continue broadcasting satellite TV channels in the highest-picture quality in the most cost-efficient manner. It will be based on the full electric and powerful Spacebus NEO platform developed by Thales Alenia Space and already flight proven in orbit.",Communications,Geostationary Transfer Orbit,GTO,2024-06-10T00:00:00Z,2024-06-10T00:00:00Z,False,Space Launch Complex 40,"{""id"": 12, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/12/"", ""name"": ""Cape Canaveral, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 956, ""total_landing_count"": 51}",,,,,,,,,,
|
| 11 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-01-09T12:21:52Z,China Aerospace Science and Technology Corporation,Government,,,,,,,,Space Variable Objects Monitor (SVOM),"The Space Variable Objects Monitor (SVOM) is a French/Chinese planned small X-ray telescope satellite under development by China National Space Administration (CNSA) and the Centre National d'Études Spatiales (CNES).
|
| 12 |
+
|
| 13 |
+
SVOM will study the explosions of massive stars by analysing the resulting gamma-ray bursts. The lightweight X-ray mirror for SVOM weighs just 1 kg (2.2 lb). SVOM will add new capabilities to the work of finding gamma-ray bursts currently being done by the multinational satellite Swift.
|
| 14 |
+
|
| 15 |
+
Its anti-solar pointing strategy makes the Earth cross the field of view of its payload every orbit.",Astrophysics,Low Earth Orbit,LEO,2024-06-24T10:00:00Z,2024-06-24T10:00:00Z,False,Launch Complex 3 (LC-3/LA-1),"{""id"": 16, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/16/"", ""name"": ""Xichang Satellite Launch Center, People's Republic of China"", ""country_code"": ""CHN"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_16_20200803142513.jpg"", ""timezone_name"": ""Asia/Shanghai"", ""total_launch_count"": 206, ""total_landing_count"": 0}",,,,,,,,,,
|
| 16 |
+
Go for Launch,Current T-0 confirmed by official or reliable sources.,2024-05-09T23:48:30Z,SpaceX,Commercial,,,,,,,,GOES-U,"The Geostationary Operational Environmental Satellite-S Series (GOES-S) is the second of the next generation of geostationary weather satellites. The four satellites of the series will provide advanced imaging with increased spatial resolution and faster coverage for more accurate forecasts, real-time mapping of lightning activity, and improved monitoring of solar activity.",Earth Science,Geostationary Transfer Orbit,GTO,2024-06-25T21:16:00Z,2024-06-25T23:16:00Z,False,Launch Complex 39A,"{""id"": 27, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/27/"", ""name"": ""Kennedy Space Center, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_27_20200803142447.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 238, ""total_landing_count"": 0}",,,,,,,,,,
|
discord-bot.sh
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
gradio deploy-discord
|
example.env
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
OPENAI_API_KEY=""
|
| 2 |
+
AWS_ACCESS_KEY=""
|
| 3 |
+
AWS_SECRET_ACCESS_KEY=""
|
| 4 |
+
TOGETHER_API_KEY=""
|
| 5 |
+
GROQ_API_KEY=""
|
| 6 |
+
JIRA_API_TOKEN=""
|
| 7 |
+
JIRA_INSTANCE_URL=""
|
| 8 |
+
JIRA_USERNAME=""
|
| 9 |
+
AWS_DEFAULT_REGION=""
|
frontend.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
from system1.system1 import System1
|
| 3 |
+
import os
|
| 4 |
+
|
| 5 |
+
# Define the default model provider and default agent type
|
| 6 |
+
default_model = "bedrock-chat:anthropic.claude-3-sonnet-20240229-v1:0"
|
| 7 |
+
#default_model = "bedrock-chat:mistral.mistral-large-2402-v1:0"
|
| 8 |
+
#default_model = "bedrock:cohere.command-r-plus-v1:0"
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
default_agent_type = "structured"
|
| 12 |
+
|
| 13 |
+
def create_vector_interface():
|
| 14 |
+
provider, model_id = default_model.split(':', 1)
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
# Custom CSS to make the element scale to the size of the screen
|
| 18 |
+
custom_css = """
|
| 19 |
+
#chat-interface {
|
| 20 |
+
height: 100vh !important;
|
| 21 |
+
}
|
| 22 |
+
"""
|
| 23 |
+
|
| 24 |
+
vector = System1(llm_provider="openai", model_id="gpt-4o", agent_type=default_agent_type)
|
| 25 |
+
chat_history = []
|
| 26 |
+
|
| 27 |
+
with gr.Blocks(css=custom_css, fill_height=True) as app:
|
| 28 |
+
def chat(message, history):
|
| 29 |
+
|
| 30 |
+
try:
|
| 31 |
+
chat_history.append(("human", message))
|
| 32 |
+
response_messages = vector.chat_messages(chat_history)
|
| 33 |
+
bot_message = response_messages['messages'][-1].content if response_messages['messages'] else "No messages found"
|
| 34 |
+
chat_history.append(("ai", bot_message))
|
| 35 |
+
return bot_message
|
| 36 |
+
|
| 37 |
+
except Exception as e:
|
| 38 |
+
return f"An error occurred: {str(e)}"
|
| 39 |
+
|
| 40 |
+
chat_interface = gr.ChatInterface(
|
| 41 |
+
fn=chat,
|
| 42 |
+
title="TrustStack AI",
|
| 43 |
+
examples=[
|
| 44 |
+
"Show me all issues in project VE",
|
| 45 |
+
"Tell me the description of the issues in project ADVICE",
|
| 46 |
+
"List all projects",
|
| 47 |
+
"When was the last update on the ticket VE-4",
|
| 48 |
+
"Describe the capabilities of the JIRA integration tools"
|
| 49 |
+
],
|
| 50 |
+
theme=gr.themes.Soft(),
|
| 51 |
+
fill_height=True
|
| 52 |
+
)
|
| 53 |
+
|
| 54 |
+
app.launch(server_port=int(os.getenv("GRADIO_SERVER_PORT")), share=True)
|
| 55 |
+
|
llm_providers.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import boto3
|
| 3 |
+
from langchain_openai import ChatOpenAI
|
| 4 |
+
from langchain_community.llms import Bedrock
|
| 5 |
+
from langchain_aws import ChatBedrock
|
| 6 |
+
from langchain_together.llms import Together
|
| 7 |
+
from langchain_groq import ChatGroq
|
| 8 |
+
from langchain_community.chat_models import ChatOllama
|
| 9 |
+
from dotenv import load_dotenv
|
| 10 |
+
load_dotenv()
|
| 11 |
+
|
| 12 |
+
AWS_ACCESS_KEY = os.getenv('AWS_ACCESS_KEY')
|
| 13 |
+
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
|
| 14 |
+
AWS_REGION = os.getenv('AWS_REGION', 'us-east-1')
|
| 15 |
+
|
| 16 |
+
def get_openai_llm(model_id):
|
| 17 |
+
return ChatOpenAI(model=model_id, temperature=0.1, streaming=False)
|
| 18 |
+
|
| 19 |
+
def get_bedrock_llm(model_id):
|
| 20 |
+
bedrock = boto3.client(
|
| 21 |
+
service_name='bedrock-runtime',
|
| 22 |
+
aws_access_key_id=AWS_ACCESS_KEY,
|
| 23 |
+
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
|
| 24 |
+
region_name=AWS_REGION
|
| 25 |
+
)
|
| 26 |
+
return Bedrock(model_id=model_id)
|
| 27 |
+
|
| 28 |
+
def get_bedrock_chat_llm(model_id):
|
| 29 |
+
bedrock = boto3.client(
|
| 30 |
+
service_name='bedrock-runtime',
|
| 31 |
+
aws_access_key_id=AWS_ACCESS_KEY,
|
| 32 |
+
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
|
| 33 |
+
region_name=AWS_REGION
|
| 34 |
+
)
|
| 35 |
+
return ChatBedrock(model_id=model_id)
|
| 36 |
+
|
| 37 |
+
def get_together_llm(model_id):
|
| 38 |
+
together_api_key = os.getenv("TOGETHER_API_KEY")
|
| 39 |
+
if not together_api_key:
|
| 40 |
+
raise ValueError("TOGETHER_API_KEY must be set in the environment variables.")
|
| 41 |
+
return Together(
|
| 42 |
+
model=model_id,
|
| 43 |
+
temperature=0.1,
|
| 44 |
+
top_k=1,
|
| 45 |
+
together_api_key=together_api_key
|
| 46 |
+
)
|
| 47 |
+
|
| 48 |
+
def get_groq_llm(model_id):
|
| 49 |
+
groq_api_key = os.getenv("GROQ_API_KEY")
|
| 50 |
+
return ChatGroq(temperature=0.2, groq_api_key=groq_api_key, model=model_id)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
def get_ollama_llm(model_id):
|
| 55 |
+
return ChatOpenAI(api_key="ollama", model=model_id, base_url="http://192.168.1.164:1234/v1/")
|
requirements.txt
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
atlassian-python-api==3.41.4
|
| 2 |
+
fastapi==0.108.0
|
| 3 |
+
gradio
|
| 4 |
+
matplotlib==3.8.2
|
| 5 |
+
numpy==1.26.3
|
| 6 |
+
pandas==2.1.4
|
| 7 |
+
pydantic==2.5.3
|
| 8 |
+
pydantic_core==2.14.6
|
| 9 |
+
regex==2023.12.25
|
| 10 |
+
requests==2.31.0
|
| 11 |
+
uvicorn==0.25.0
|
| 12 |
+
wget==3.2
|
| 13 |
+
python-dotenv==1.0.0
|
| 14 |
+
openai==1.30.1
|
| 15 |
+
langchain==0.2.1
|
| 16 |
+
langchain-aws==0.1.6
|
| 17 |
+
langchain-community==0.2.4
|
| 18 |
+
langchain-core==0.2.5
|
| 19 |
+
langchain-groq==0.1.5
|
| 20 |
+
langchain-openai==0.1.8
|
| 21 |
+
langchain-text-splitters==0.2.1
|
| 22 |
+
langchain-together==0.1.3
|
| 23 |
+
langchainhub==0.1.18
|
| 24 |
+
langgraph==0.0.66
|
| 25 |
+
boto3
|
run.sh
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
docker run -p 8080:8080 vector:latest
|
system1.py
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import datetime
|
| 3 |
+
import json
|
| 4 |
+
import re
|
| 5 |
+
import logging
|
| 6 |
+
import pprint
|
| 7 |
+
import sys
|
| 8 |
+
import uuid
|
| 9 |
+
import argparse
|
| 10 |
+
from dotenv import load_dotenv
|
| 11 |
+
from langchain import hub
|
| 12 |
+
from langchain.globals import set_debug
|
| 13 |
+
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
|
| 14 |
+
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage
|
| 15 |
+
from llm_providers import get_openai_llm, get_bedrock_llm, get_bedrock_chat_llm, get_together_llm, get_groq_llm, get_ollama_llm
|
| 16 |
+
from dotenv import load_dotenv
|
| 17 |
+
load_dotenv()
|
| 18 |
+
|
| 19 |
+
AWS_ACCESS_KEY = os.getenv('AWS_ACCESS_KEY')
|
| 20 |
+
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
|
| 21 |
+
AWS_REGION = os.getenv('AWS_REGION', 'us-east-1')
|
| 22 |
+
|
| 23 |
+
from langgraph.prebuilt import create_react_agent
|
| 24 |
+
from langgraph.checkpoint import MemorySaver
|
| 25 |
+
|
| 26 |
+
class System1:
|
| 27 |
+
def __init__(self, llm_provider='openai', model_id='gpt-4-1106-preview', debug=False, agent_type="structured", toolkits=['jira', 'launch', 'time']):
|
| 28 |
+
self.model_id = model_id
|
| 29 |
+
self.agent_type = agent_type
|
| 30 |
+
self.tools = self.load_tools(toolkits)
|
| 31 |
+
self._setup_logging(debug)
|
| 32 |
+
self.llm = self._get_llm(llm_provider)
|
| 33 |
+
self.memory = MemorySaver()
|
| 34 |
+
self.chat_history = []
|
| 35 |
+
self.agent = create_react_agent(self.llm, self.tools, checkpointer=self.memory, messages_modifier=self._get_system_prompt())
|
| 36 |
+
|
| 37 |
+
def _setup_logging(self, debug):
|
| 38 |
+
self.log_dir = "output/logs"
|
| 39 |
+
os.makedirs(self.log_dir, exist_ok=True)
|
| 40 |
+
timestamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
|
| 41 |
+
self.log_file = os.path.join(self.log_dir, f"vector_log_{timestamp}.txt")
|
| 42 |
+
if debug:
|
| 43 |
+
set_debug(True)
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
def _get_llm(self, llm_provider):
|
| 47 |
+
llm_providers = {
|
| 48 |
+
'openai': get_openai_llm,
|
| 49 |
+
'bedrock': get_bedrock_llm,
|
| 50 |
+
'bedrock-chat': get_bedrock_chat_llm,
|
| 51 |
+
'together': get_together_llm,
|
| 52 |
+
'groq': get_groq_llm,
|
| 53 |
+
'ollama': get_ollama_llm
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
if llm_provider in llm_providers:
|
| 57 |
+
return llm_providers[llm_provider](self.model_id)
|
| 58 |
+
else:
|
| 59 |
+
raise ValueError(f"Unsupported LLM provider: {llm_provider}")
|
| 60 |
+
|
| 61 |
+
def _get_system_prompt(self):
|
| 62 |
+
return """You are a very powerful assistant named Vector
|
| 63 |
+
Your goal is to accomplish business objectives with the tools at your disposal.
|
| 64 |
+
You must try to accomplish every task, no matter how difficult.
|
| 65 |
+
DO NOT MENTION TOOL NAMES IN YOUR FINAL RESPONSE!!!
|
| 66 |
+
Provide your final response in a well formatted human readable style. DO NOT OUTPUT JSON IN FINAL RESPONSE. ONLY USE JSON FOR TOOL CALLING
|
| 67 |
+
Ignore null or none values unless the user specifically requests that information
|
| 68 |
+
Provide all relevant information pertaining to the user's request in your final output
|
| 69 |
+
"""
|
| 70 |
+
|
| 71 |
+
async def chat_stream(self, chat_string):
|
| 72 |
+
try:
|
| 73 |
+
print(chat_string)
|
| 74 |
+
inputs = {"input": str(chat_string), "chat_history": self.chat_history}
|
| 75 |
+
|
| 76 |
+
async for chunk in self.agent_executor.astream(inputs):
|
| 77 |
+
yield str(chunk)
|
| 78 |
+
print("------")
|
| 79 |
+
pprint.pprint(chunk, depth=1)
|
| 80 |
+
except Exception as e:
|
| 81 |
+
yield str(e)
|
| 82 |
+
|
| 83 |
+
def chat_messages(self, messages):
|
| 84 |
+
config = {"configurable": {"thread_id": uuid.uuid1()}}
|
| 85 |
+
response = self.agent.invoke({"messages": messages}, config=config)
|
| 86 |
+
return response
|
| 87 |
+
|
| 88 |
+
def chat_llm(self, chat_input: str):
|
| 89 |
+
return self.llm.invoke([HumanMessage(content=chat_input)])
|
| 90 |
+
return self.llm.invoke(chat_string)
|
| 91 |
+
|
| 92 |
+
def load_tools(self, toolkits):
|
| 93 |
+
workdir = os.path.join(os.getcwd(), 'tmp')
|
| 94 |
+
from tools import AgentTools
|
| 95 |
+
return AgentTools(toolkits=toolkits, workdir=workdir).get_tools()
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
if __name__ == '__main__':
|
| 99 |
+
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
|
| 100 |
+
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
|
| 101 |
+
load_dotenv()
|
| 102 |
+
|
| 103 |
+
parser = argparse.ArgumentParser(description='Vector: A conversational AI agent')
|
| 104 |
+
parser.add_argument('--chat', action='store_true', help='Run Vector in chat mode')
|
| 105 |
+
parser.add_argument('--query', type=str, help='Run Vector in query mode with a single input')
|
| 106 |
+
parser.add_argument('--local', action='store_true', help='Run Vector in local mode')
|
| 107 |
+
parser.add_argument('--llm', action='store_true', help='Run Vector in local mode')
|
| 108 |
+
|
| 109 |
+
args = parser.parse_args()
|
| 110 |
+
|
| 111 |
+
if args.chat:
|
| 112 |
+
#vector = Vector(llm_provider="bedrock-chat", model_id="anthropic.claude-3-haiku-20240307-v1:0", agent_type="react", toolkits=['jira'])
|
| 113 |
+
#vector = Vector(llm_provider="ollama", model_id="phi3")
|
| 114 |
+
vector = System1(llm_provider="openai", model_id="gpt-4o", agent_type="react", toolkits=['jira'])
|
| 115 |
+
|
| 116 |
+
while True:
|
| 117 |
+
user_input = input('You > ')
|
| 118 |
+
if user_input.lower() == 'quit':
|
| 119 |
+
break
|
| 120 |
+
else:
|
| 121 |
+
messages = [("user", user_input)]
|
| 122 |
+
result = vector.chat_messages(messages)
|
| 123 |
+
print()
|
| 124 |
+
|
| 125 |
+
if args.local:
|
| 126 |
+
vector = System1(llm_provider="ollama", model_id="phi3:latest", toolkits=["launch"])
|
| 127 |
+
from langchain_core.messages.human import HumanMessage
|
| 128 |
+
messages = []
|
| 129 |
+
while True:
|
| 130 |
+
user_input = input('You > ')
|
| 131 |
+
if user_input.lower() == 'quit':
|
| 132 |
+
break
|
| 133 |
+
else:
|
| 134 |
+
result = vector.chat_messages([(HumanMessage(content=user_input))])
|
| 135 |
+
print(result)
|
| 136 |
+
|
| 137 |
+
if args.llm:
|
| 138 |
+
vector = System1(llm_provider="bedrock-chat", model_id="anthropic.claude-3-haiku-20240307-v1:0")
|
| 139 |
+
result = vector.chat_llm(input("> "))
|
| 140 |
+
print("Vector LLM: " + result.content)
|
| 141 |
+
|
tests/ollama-benchmark.py
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import asyncio
|
| 2 |
+
import time
|
| 3 |
+
import json
|
| 4 |
+
import aiohttp
|
| 5 |
+
|
| 6 |
+
async def speed_test_streaming_tokens(model_name: str, prompt: str):
|
| 7 |
+
url = "http://192.168.1.164:11434/v1/api/generate"
|
| 8 |
+
data = {
|
| 9 |
+
"model": model_name,
|
| 10 |
+
"prompt": prompt,
|
| 11 |
+
"stream": True
|
| 12 |
+
}
|
| 13 |
+
async with aiohttp.ClientSession() as session:
|
| 14 |
+
start_time = time.time()
|
| 15 |
+
async with session.post(url, json=data) as response:
|
| 16 |
+
total_tokens = 0
|
| 17 |
+
eval_duration = 0
|
| 18 |
+
try:
|
| 19 |
+
while True:
|
| 20 |
+
chunk = await response.content.readany()
|
| 21 |
+
if not chunk:
|
| 22 |
+
break
|
| 23 |
+
chunk_data = json.loads(chunk.decode())
|
| 24 |
+
print(f"Received chunk: {chunk_data}") # Output testing: show received chunk in real-time
|
| 25 |
+
if chunk_data.get("done"):
|
| 26 |
+
total_duration = chunk_data.get("total_duration", 0)
|
| 27 |
+
load_duration = chunk_data.get("load_duration", 0)
|
| 28 |
+
prompt_eval_count = chunk_data.get("prompt_eval_count", 0)
|
| 29 |
+
prompt_eval_duration = chunk_data.get("prompt_eval_duration", 0)
|
| 30 |
+
eval_count = chunk_data.get("eval_count", 0)
|
| 31 |
+
eval_duration = chunk_data.get("eval_duration", 0)
|
| 32 |
+
total_tokens += eval_count
|
| 33 |
+
break
|
| 34 |
+
except Exception as e:
|
| 35 |
+
print(f"Error during streaming: {e}")
|
| 36 |
+
|
| 37 |
+
end_time = time.time()
|
| 38 |
+
total_time = end_time - start_time
|
| 39 |
+
if eval_duration > 0:
|
| 40 |
+
tokens_per_second = (total_tokens / (eval_duration / 1e9))
|
| 41 |
+
else:
|
| 42 |
+
tokens_per_second = 0
|
| 43 |
+
|
| 44 |
+
print(f"Total tokens: {total_tokens}")
|
| 45 |
+
print(f"Total time: {total_time} seconds")
|
| 46 |
+
print(f"Tokens per second: {tokens_per_second}")
|
| 47 |
+
|
| 48 |
+
# Example usage
|
| 49 |
+
model_name = "phi3"
|
| 50 |
+
prompt = "explain to me potential theory of everythings"
|
| 51 |
+
asyncio.run(speed_test_streaming_tokens(model_name, prompt))
|
tests/ollama-test.py
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from langchain_community.llms import Ollama
|
| 2 |
+
import requests
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
def ping_ollama_server():
|
| 6 |
+
llm = Ollama(model="phi3", host="192.168.1.164")
|
| 7 |
+
try:
|
| 8 |
+
response = llm.invoke("test")
|
| 9 |
+
if response:
|
| 10 |
+
print("Ollama server is up and running!")
|
| 11 |
+
else:
|
| 12 |
+
print("Failed to reach Ollama server.")
|
| 13 |
+
except Exception as e:
|
| 14 |
+
print("Error pinging Ollama server:", e)
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def simple_request(prompt):
|
| 19 |
+
url = "http://192.168.1.164:11434/api/generate"
|
| 20 |
+
data = {
|
| 21 |
+
"model": "phi3:latest",
|
| 22 |
+
"prompt": prompt,
|
| 23 |
+
"stream": False
|
| 24 |
+
}
|
| 25 |
+
try:
|
| 26 |
+
response = requests.post(url, json=data)
|
| 27 |
+
if response.status_code == 200:
|
| 28 |
+
print("Response from Ollama server:", response.json())
|
| 29 |
+
else:
|
| 30 |
+
print("Failed to get a valid response from Ollama server, status code:", response.status_code)
|
| 31 |
+
except Exception as e:
|
| 32 |
+
print("Error making request to Ollama server:", e)
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
if __name__ == "__main__":
|
| 36 |
+
#ping_ollama_server()
|
| 37 |
+
simple_request("hi")
|
tests/openai_format_test.py
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import requests
|
| 3 |
+
import json
|
| 4 |
+
import time
|
| 5 |
+
from openai import OpenAI
|
| 6 |
+
from dotenv import load_dotenv
|
| 7 |
+
from pydantic import BaseModel
|
| 8 |
+
from typing import Any, Dict
|
| 9 |
+
|
| 10 |
+
load_dotenv()
|
| 11 |
+
|
| 12 |
+
client = OpenAI(base_url="http://localhost:8080/v1/")
|
| 13 |
+
|
| 14 |
+
class SerializableResponse(BaseModel):
|
| 15 |
+
data: Dict[str, Any]
|
| 16 |
+
|
| 17 |
+
def test_response():
|
| 18 |
+
print("Testing synchronous response...")
|
| 19 |
+
url = "http://127.0.0.1:8080/v1/chat/completions"
|
| 20 |
+
headers = {
|
| 21 |
+
"Content-Type": "application/json",
|
| 22 |
+
"Authorization": f"Bearer {os.getenv('OPENAI_API_KEY')}"
|
| 23 |
+
}
|
| 24 |
+
data = {
|
| 25 |
+
"model": "gpt-3.5-turbo",
|
| 26 |
+
"messages": [{"role": "user", "content": "count between 1 and 1000"}],
|
| 27 |
+
"temperature": 0.7
|
| 28 |
+
}
|
| 29 |
+
start_time = time.time()
|
| 30 |
+
response = requests.post(url, json=data, headers=headers)
|
| 31 |
+
end_time = time.time()
|
| 32 |
+
print(f"Response time: {end_time - start_time} seconds")
|
| 33 |
+
try:
|
| 34 |
+
response_data = response.json()
|
| 35 |
+
if isinstance(response_data, dict):
|
| 36 |
+
for key, value in response_data.items():
|
| 37 |
+
print(f"{key}: {value}")
|
| 38 |
+
else:
|
| 39 |
+
print(response_data)
|
| 40 |
+
except json.JSONDecodeError as e:
|
| 41 |
+
print(f"JSONDecodeError: {e}")
|
| 42 |
+
|
| 43 |
+
def test_streaming_response():
|
| 44 |
+
print("Testing streaming response...")
|
| 45 |
+
url = "http://127.0.0.1:8080/v1/chat/completions"
|
| 46 |
+
headers = {
|
| 47 |
+
"Content-Type": "application/json",
|
| 48 |
+
"Authorization": f"Bearer {os.getenv('OPENAI_API_KEY')}"
|
| 49 |
+
}
|
| 50 |
+
data = {
|
| 51 |
+
"model": "gpt-3.5-turbo",
|
| 52 |
+
"messages": [{"role": "user", "content": "look up this week's launches"}],
|
| 53 |
+
"temperature": 0.7,
|
| 54 |
+
"stream": True
|
| 55 |
+
}
|
| 56 |
+
start_time = time.time()
|
| 57 |
+
response = requests.post(url, json=data, headers=headers, stream=True)
|
| 58 |
+
for line in response.iter_lines():
|
| 59 |
+
if line:
|
| 60 |
+
try:
|
| 61 |
+
response_data = json.loads(line.decode('utf-8'))
|
| 62 |
+
if isinstance(response_data, dict):
|
| 63 |
+
for key, value in response_data.items():
|
| 64 |
+
print(f"{key}: {value}")
|
| 65 |
+
else:
|
| 66 |
+
print(response_data)
|
| 67 |
+
except json.JSONDecodeError as e:
|
| 68 |
+
print(f"JSONDecodeError: {e}")
|
| 69 |
+
end_time = time.time()
|
| 70 |
+
print(f"Response time: {end_time - start_time} seconds")
|
| 71 |
+
|
| 72 |
+
def test_openai_client():
|
| 73 |
+
print("Testing OpenAI client...")
|
| 74 |
+
client = OpenAI(base_url="http://127.0.0.1:8080/v1/")
|
| 75 |
+
start_time = time.time()
|
| 76 |
+
response = client.chat.completions.create(
|
| 77 |
+
model="gpt-3.5-turbo",
|
| 78 |
+
messages=[
|
| 79 |
+
{"role": "system", "content": "You are a helpful assistant."},
|
| 80 |
+
{"role": "user", "content": "Who won the world series in 2020?"},
|
| 81 |
+
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
|
| 82 |
+
{"role": "user", "content": "Where was it played?"}
|
| 83 |
+
]
|
| 84 |
+
)
|
| 85 |
+
end_time = time.time()
|
| 86 |
+
print(f"Response time: {end_time - start_time} seconds")
|
| 87 |
+
response_data = response.dict()
|
| 88 |
+
if isinstance(response_data, dict):
|
| 89 |
+
for key, value in response_data.items():
|
| 90 |
+
print(f"{key}: {value}")
|
| 91 |
+
else:
|
| 92 |
+
print(response_data)
|
| 93 |
+
|
| 94 |
+
def test_openai_client_streaming_response():
|
| 95 |
+
print("Testing OpenAI client streaming response...")
|
| 96 |
+
client = OpenAI(base_url="http://localhost:8080/v1")
|
| 97 |
+
|
| 98 |
+
stream = client.chat.completions.create(
|
| 99 |
+
model="gpt-3.5-turbo",
|
| 100 |
+
messages=[
|
| 101 |
+
{"role": "system", "content": "You are a helpful assistant."},
|
| 102 |
+
{"role": "user", "content": "Tell me a joke."}
|
| 103 |
+
],
|
| 104 |
+
stream=True
|
| 105 |
+
)
|
| 106 |
+
start_time = time.time()
|
| 107 |
+
for chunk in stream:
|
| 108 |
+
if chunk.choices[0].delta.content is not None:
|
| 109 |
+
print(chunk.choices[0].delta.content, end="")
|
| 110 |
+
end_time = time.time()
|
| 111 |
+
print(f"\nResponse time: {end_time - start_time} seconds")
|
| 112 |
+
|
| 113 |
+
|
| 114 |
+
def main():
|
| 115 |
+
#test_response()
|
| 116 |
+
test_openai_client_streaming_response()
|
| 117 |
+
#test_openai_client()
|
| 118 |
+
|
| 119 |
+
if __name__ == "__main__":
|
| 120 |
+
main()
|
tools/__init__.py
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
from tools.launch_api_tool import launch_api_tool
|
| 3 |
+
from tools.launch_tools import launch_csv_tool
|
| 4 |
+
from tools.time_tools import get_current_time, get_time_difference, convert_time_to_timezone
|
| 5 |
+
from tools.weather_tools import get_weather
|
| 6 |
+
from tools.jira_tools import get_all_projects, get_issue, get_project, get_all_issues_for_project, get_sprint, get_closed_issues_for_project, get_in_progress_issues_for_project, get_open_issues_for_project, get_done_issues_for_project, create_issue, update_issue_status, assign_issue_to_user
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
class AgentTools:
|
| 10 |
+
def __init__(self, toolkits=['launch', 'time'], workdir="tmp/"):
|
| 11 |
+
output_dir = os.path.join(workdir, 'outputs')
|
| 12 |
+
self.tools = []
|
| 13 |
+
|
| 14 |
+
if 'launch' in toolkits:
|
| 15 |
+
#self.tools.append(launch_api_tool)
|
| 16 |
+
self.tools.append(launch_csv_tool)
|
| 17 |
+
|
| 18 |
+
if 'time' in toolkits:
|
| 19 |
+
self.tools.append(get_current_time)
|
| 20 |
+
self.tools.append(get_time_difference)
|
| 21 |
+
self.tools.append(convert_time_to_timezone)
|
| 22 |
+
|
| 23 |
+
if 'weather' in toolkits:
|
| 24 |
+
self.tools.append(get_weather)
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
if 'jira' in toolkits:
|
| 28 |
+
|
| 29 |
+
self.tools.extend([
|
| 30 |
+
get_all_projects,
|
| 31 |
+
get_issue,
|
| 32 |
+
get_project,
|
| 33 |
+
get_all_issues_for_project,
|
| 34 |
+
get_sprint,
|
| 35 |
+
get_closed_issues_for_project,
|
| 36 |
+
get_in_progress_issues_for_project,
|
| 37 |
+
get_open_issues_for_project,
|
| 38 |
+
get_done_issues_for_project,
|
| 39 |
+
create_issue,
|
| 40 |
+
update_issue_status,
|
| 41 |
+
assign_issue_to_user
|
| 42 |
+
])
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
def get_tools(self):
|
| 46 |
+
return self.tools
|
tools/data/launch_api.json
ADDED
|
@@ -0,0 +1,1490 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"count": 153,
|
| 3 |
+
"next": "https://lldev.thespacedevs.com/2.2.0/launch/upcoming/?limit=10&offset=10",
|
| 4 |
+
"previous": null,
|
| 5 |
+
"results": [
|
| 6 |
+
{
|
| 7 |
+
"id": "587cba9a-2a6c-46c9-9b06-630a1bf86fe3",
|
| 8 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/587cba9a-2a6c-46c9-9b06-630a1bf86fe3/",
|
| 9 |
+
"slug": "falcon-9-block-5-starlink-group-8-5",
|
| 10 |
+
"name": "Falcon 9 Block 5 | Starlink Group 8-5",
|
| 11 |
+
"status": {
|
| 12 |
+
"id": 8,
|
| 13 |
+
"name": "To Be Confirmed",
|
| 14 |
+
"abbrev": "TBC",
|
| 15 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 16 |
+
},
|
| 17 |
+
"last_updated": "2024-06-02T16:04:54Z",
|
| 18 |
+
"net": "2024-06-05T00:04:00Z",
|
| 19 |
+
"window_end": "2024-06-05T03:27:00Z",
|
| 20 |
+
"window_start": "2024-06-05T00:04:00Z",
|
| 21 |
+
"net_precision": {
|
| 22 |
+
"id": 2,
|
| 23 |
+
"name": "Hour",
|
| 24 |
+
"abbrev": "HR",
|
| 25 |
+
"description": "The T-0 is accurate to the hour."
|
| 26 |
+
},
|
| 27 |
+
"probability": 90,
|
| 28 |
+
"weather_concerns": "Cumulus Cloud Rule",
|
| 29 |
+
"holdreason": "",
|
| 30 |
+
"failreason": "",
|
| 31 |
+
"hashtag": null,
|
| 32 |
+
"launch_service_provider": {
|
| 33 |
+
"id": 121,
|
| 34 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 35 |
+
"name": "SpaceX",
|
| 36 |
+
"type": "Commercial"
|
| 37 |
+
},
|
| 38 |
+
"rocket": {
|
| 39 |
+
"id": 8202,
|
| 40 |
+
"configuration": {
|
| 41 |
+
"id": 164,
|
| 42 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/164/",
|
| 43 |
+
"name": "Falcon 9",
|
| 44 |
+
"family": "Falcon",
|
| 45 |
+
"full_name": "Falcon 9 Block 5",
|
| 46 |
+
"variant": "Block 5"
|
| 47 |
+
}
|
| 48 |
+
},
|
| 49 |
+
"mission": {
|
| 50 |
+
"id": 6773,
|
| 51 |
+
"name": "Starlink Group 8-5",
|
| 52 |
+
"description": "A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.",
|
| 53 |
+
"launch_designator": null,
|
| 54 |
+
"type": "Communications",
|
| 55 |
+
"orbit": {
|
| 56 |
+
"id": 8,
|
| 57 |
+
"name": "Low Earth Orbit",
|
| 58 |
+
"abbrev": "LEO"
|
| 59 |
+
},
|
| 60 |
+
"agencies": [
|
| 61 |
+
{
|
| 62 |
+
"id": 121,
|
| 63 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 64 |
+
"name": "SpaceX",
|
| 65 |
+
"featured": true,
|
| 66 |
+
"type": "Commercial",
|
| 67 |
+
"country_code": "USA",
|
| 68 |
+
"abbrev": "SpX",
|
| 69 |
+
"description": "Space Exploration Technologies Corp., known as SpaceX, is an American aerospace manufacturer and space transport services company headquartered in Hawthorne, California. It was founded in 2002 by entrepreneur Elon Musk with the goal of reducing space transportation costs and enabling the colonization of Mars. SpaceX operates from many pads, on the East Coast of the US they operate from SLC-40 at Cape Canaveral Space Force Station and historic LC-39A at Kennedy Space Center. They also operate from SLC-4E at Vandenberg Space Force Base, California, usually for polar launches. Another launch site is being developed at Boca Chica, Texas.",
|
| 70 |
+
"administrator": "CEO: Elon Musk",
|
| 71 |
+
"founding_year": "2002",
|
| 72 |
+
"launchers": "Falcon | Starship",
|
| 73 |
+
"spacecraft": "Dragon",
|
| 74 |
+
"launch_library_url": null,
|
| 75 |
+
"total_launch_count": 369,
|
| 76 |
+
"consecutive_successful_launches": 70,
|
| 77 |
+
"successful_launches": 358,
|
| 78 |
+
"failed_launches": 11,
|
| 79 |
+
"pending_launches": 131,
|
| 80 |
+
"consecutive_successful_landings": 32,
|
| 81 |
+
"successful_landings": 320,
|
| 82 |
+
"failed_landings": 24,
|
| 83 |
+
"attempted_landings": 343,
|
| 84 |
+
"info_url": "http://www.spacex.com/",
|
| 85 |
+
"wiki_url": "http://en.wikipedia.org/wiki/SpaceX",
|
| 86 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_logo_20220826094919.png",
|
| 87 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_image_20190207032501.jpeg",
|
| 88 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_nation_20230531064544.jpg"
|
| 89 |
+
}
|
| 90 |
+
],
|
| 91 |
+
"info_urls": [],
|
| 92 |
+
"vid_urls": []
|
| 93 |
+
},
|
| 94 |
+
"pad": {
|
| 95 |
+
"id": 80,
|
| 96 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/80/",
|
| 97 |
+
"agency_id": 121,
|
| 98 |
+
"name": "Space Launch Complex 40",
|
| 99 |
+
"description": null,
|
| 100 |
+
"info_url": null,
|
| 101 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_40",
|
| 102 |
+
"map_url": "https://www.google.com/maps?q=28.56194122,-80.57735736",
|
| 103 |
+
"latitude": "28.56194122",
|
| 104 |
+
"longitude": "-80.57735736",
|
| 105 |
+
"location": {
|
| 106 |
+
"id": 12,
|
| 107 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/12/",
|
| 108 |
+
"name": "Cape Canaveral, FL, USA",
|
| 109 |
+
"country_code": "USA",
|
| 110 |
+
"description": "",
|
| 111 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg",
|
| 112 |
+
"timezone_name": "America/New_York",
|
| 113 |
+
"total_launch_count": 956,
|
| 114 |
+
"total_landing_count": 51
|
| 115 |
+
},
|
| 116 |
+
"country_code": "USA",
|
| 117 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_80_20200803143323.jpg",
|
| 118 |
+
"total_launch_count": 245,
|
| 119 |
+
"orbital_launch_attempt_count": 245
|
| 120 |
+
},
|
| 121 |
+
"webcast_live": false,
|
| 122 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon2520925_image_20221009234147.png",
|
| 123 |
+
"infographic": null,
|
| 124 |
+
"program": [
|
| 125 |
+
{
|
| 126 |
+
"id": 25,
|
| 127 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/25/",
|
| 128 |
+
"name": "Starlink",
|
| 129 |
+
"description": "Starlink is a satellite internet constellation operated by American aerospace company SpaceX",
|
| 130 |
+
"agencies": [
|
| 131 |
+
{
|
| 132 |
+
"id": 121,
|
| 133 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 134 |
+
"name": "SpaceX",
|
| 135 |
+
"type": "Commercial"
|
| 136 |
+
}
|
| 137 |
+
],
|
| 138 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/starlink_program_20231228154508.jpeg",
|
| 139 |
+
"start_date": "2018-02-22T14:17:00Z",
|
| 140 |
+
"end_date": null,
|
| 141 |
+
"info_url": "https://starlink.com",
|
| 142 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Starlink",
|
| 143 |
+
"mission_patches": [
|
| 144 |
+
{
|
| 145 |
+
"id": 7,
|
| 146 |
+
"name": "Space X Starlink Mission Patch",
|
| 147 |
+
"priority": 10,
|
| 148 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/mission_patch_images/space2520x252_mission_patch_20221011205756.png",
|
| 149 |
+
"agency": {
|
| 150 |
+
"id": 121,
|
| 151 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 152 |
+
"name": "SpaceX",
|
| 153 |
+
"type": "Commercial"
|
| 154 |
+
}
|
| 155 |
+
}
|
| 156 |
+
],
|
| 157 |
+
"type": {
|
| 158 |
+
"id": 3,
|
| 159 |
+
"name": "Communication Constellation"
|
| 160 |
+
}
|
| 161 |
+
}
|
| 162 |
+
],
|
| 163 |
+
"orbital_launch_attempt_count": 6687,
|
| 164 |
+
"location_launch_attempt_count": 957,
|
| 165 |
+
"pad_launch_attempt_count": 246,
|
| 166 |
+
"agency_launch_attempt_count": 370,
|
| 167 |
+
"orbital_launch_attempt_count_year": 109,
|
| 168 |
+
"location_launch_attempt_count_year": 30,
|
| 169 |
+
"pad_launch_attempt_count_year": 28,
|
| 170 |
+
"agency_launch_attempt_count_year": 59,
|
| 171 |
+
"type": "normal"
|
| 172 |
+
},
|
| 173 |
+
{
|
| 174 |
+
"id": "0bcda9f1-a347-408d-88cd-b8b5bd6fffc2",
|
| 175 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/0bcda9f1-a347-408d-88cd-b8b5bd6fffc2/",
|
| 176 |
+
"slug": "electron-prefire-and-ice-prefire-2",
|
| 177 |
+
"name": "Electron | PREFIRE And Ice (PREFIRE 2)",
|
| 178 |
+
"status": {
|
| 179 |
+
"id": 1,
|
| 180 |
+
"name": "Go for Launch",
|
| 181 |
+
"abbrev": "Go",
|
| 182 |
+
"description": "Current T-0 confirmed by official or reliable sources."
|
| 183 |
+
},
|
| 184 |
+
"last_updated": "2024-06-02T16:38:52Z",
|
| 185 |
+
"net": "2024-06-05T03:00:00Z",
|
| 186 |
+
"window_end": "2024-06-05T03:00:00Z",
|
| 187 |
+
"window_start": "2024-06-05T03:00:00Z",
|
| 188 |
+
"net_precision": {
|
| 189 |
+
"id": 1,
|
| 190 |
+
"name": "Minute",
|
| 191 |
+
"abbrev": "MIN",
|
| 192 |
+
"description": "The T-0 is accurate to the minute."
|
| 193 |
+
},
|
| 194 |
+
"probability": null,
|
| 195 |
+
"weather_concerns": null,
|
| 196 |
+
"holdreason": "",
|
| 197 |
+
"failreason": "",
|
| 198 |
+
"hashtag": null,
|
| 199 |
+
"launch_service_provider": {
|
| 200 |
+
"id": 147,
|
| 201 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/147/",
|
| 202 |
+
"name": "Rocket Lab",
|
| 203 |
+
"type": "Commercial"
|
| 204 |
+
},
|
| 205 |
+
"rocket": {
|
| 206 |
+
"id": 7984,
|
| 207 |
+
"configuration": {
|
| 208 |
+
"id": 26,
|
| 209 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/26/",
|
| 210 |
+
"name": "Electron",
|
| 211 |
+
"family": "",
|
| 212 |
+
"full_name": "Electron",
|
| 213 |
+
"variant": ""
|
| 214 |
+
}
|
| 215 |
+
},
|
| 216 |
+
"mission": {
|
| 217 |
+
"id": 6509,
|
| 218 |
+
"name": "PREFIRE And Ice (PREFIRE 2)",
|
| 219 |
+
"description": "Second 6U Cubesat carrying a miniaturized IR spectrometer, covering 0- 45 \u03bcm at 0.84 \u03bcm spectral resolution, operating for one seasonal cycle for NASAs PREFIRE (Polar Radiant Energy in the Far-InfraRed Experiment) mission.",
|
| 220 |
+
"launch_designator": null,
|
| 221 |
+
"type": "Earth Science",
|
| 222 |
+
"orbit": {
|
| 223 |
+
"id": 13,
|
| 224 |
+
"name": "Polar Orbit",
|
| 225 |
+
"abbrev": "PO"
|
| 226 |
+
},
|
| 227 |
+
"agencies": [
|
| 228 |
+
{
|
| 229 |
+
"id": 44,
|
| 230 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 231 |
+
"name": "National Aeronautics and Space Administration",
|
| 232 |
+
"featured": true,
|
| 233 |
+
"type": "Government",
|
| 234 |
+
"country_code": "USA",
|
| 235 |
+
"abbrev": "NASA",
|
| 236 |
+
"description": "The National Aeronautics and Space Administration is an independent agency of the executive branch of the United States federal government responsible for the civilian space program, as well as aeronautics and aerospace research. NASA have many launch facilities but most are inactive. The most commonly used pad will be LC-39B at Kennedy Space Center in Florida.",
|
| 237 |
+
"administrator": "Administrator: Bill Nelson",
|
| 238 |
+
"founding_year": "1958",
|
| 239 |
+
"launchers": "Space Shuttle | SLS",
|
| 240 |
+
"spacecraft": "Orion",
|
| 241 |
+
"launch_library_url": null,
|
| 242 |
+
"total_launch_count": 135,
|
| 243 |
+
"consecutive_successful_launches": 11,
|
| 244 |
+
"successful_launches": 115,
|
| 245 |
+
"failed_launches": 20,
|
| 246 |
+
"pending_launches": 6,
|
| 247 |
+
"consecutive_successful_landings": 0,
|
| 248 |
+
"successful_landings": 0,
|
| 249 |
+
"failed_landings": 0,
|
| 250 |
+
"attempted_landings": 0,
|
| 251 |
+
"info_url": "http://www.nasa.gov",
|
| 252 |
+
"wiki_url": "http://en.wikipedia.org/wiki/National_Aeronautics_and_Space_Administration",
|
| 253 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_logo_20190207032448.png",
|
| 254 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_image_20190207032448.jpeg",
|
| 255 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_nation_20230803040809.jpg"
|
| 256 |
+
}
|
| 257 |
+
],
|
| 258 |
+
"info_urls": [],
|
| 259 |
+
"vid_urls": []
|
| 260 |
+
},
|
| 261 |
+
"pad": {
|
| 262 |
+
"id": 185,
|
| 263 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/185/",
|
| 264 |
+
"agency_id": 147,
|
| 265 |
+
"name": "Rocket Lab Launch Complex 1B",
|
| 266 |
+
"description": null,
|
| 267 |
+
"info_url": null,
|
| 268 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Rocket_Lab_Launch_Complex_1",
|
| 269 |
+
"map_url": "https://www.google.com/maps?q=-39.262833,177.864469",
|
| 270 |
+
"latitude": "-39.262833",
|
| 271 |
+
"longitude": "177.864469",
|
| 272 |
+
"location": {
|
| 273 |
+
"id": 10,
|
| 274 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/10/",
|
| 275 |
+
"name": "Onenui Station, Mahia Peninsula, New Zealand",
|
| 276 |
+
"country_code": "NZL",
|
| 277 |
+
"description": "",
|
| 278 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_10_20200803142509.jpg",
|
| 279 |
+
"timezone_name": "Pacific/Auckland",
|
| 280 |
+
"total_launch_count": 44,
|
| 281 |
+
"total_landing_count": 17
|
| 282 |
+
},
|
| 283 |
+
"country_code": "NZL",
|
| 284 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_185_20200803143540.jpg",
|
| 285 |
+
"total_launch_count": 18,
|
| 286 |
+
"orbital_launch_attempt_count": 18
|
| 287 |
+
},
|
| 288 |
+
"webcast_live": false,
|
| 289 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/electron_on_lc-_image_20240602163715.jpeg",
|
| 290 |
+
"infographic": null,
|
| 291 |
+
"program": [],
|
| 292 |
+
"orbital_launch_attempt_count": 6688,
|
| 293 |
+
"location_launch_attempt_count": 45,
|
| 294 |
+
"pad_launch_attempt_count": 19,
|
| 295 |
+
"agency_launch_attempt_count": 49,
|
| 296 |
+
"orbital_launch_attempt_count_year": 110,
|
| 297 |
+
"location_launch_attempt_count_year": 6,
|
| 298 |
+
"pad_launch_attempt_count_year": 6,
|
| 299 |
+
"agency_launch_attempt_count_year": 7,
|
| 300 |
+
"type": "normal"
|
| 301 |
+
},
|
| 302 |
+
{
|
| 303 |
+
"id": "32f98a5d-b605-4e18-9b92-9dbd59f0681f",
|
| 304 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/32f98a5d-b605-4e18-9b92-9dbd59f0681f/",
|
| 305 |
+
"slug": "falcon-9-block-5-starlink-group-8-8",
|
| 306 |
+
"name": "Falcon 9 Block 5 | Starlink Group 8-8",
|
| 307 |
+
"status": {
|
| 308 |
+
"id": 8,
|
| 309 |
+
"name": "To Be Confirmed",
|
| 310 |
+
"abbrev": "TBC",
|
| 311 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 312 |
+
},
|
| 313 |
+
"last_updated": "2024-05-31T00:43:06Z",
|
| 314 |
+
"net": "2024-06-05T05:12:00Z",
|
| 315 |
+
"window_end": "2024-06-05T09:12:00Z",
|
| 316 |
+
"window_start": "2024-06-05T05:12:00Z",
|
| 317 |
+
"net_precision": {
|
| 318 |
+
"id": 2,
|
| 319 |
+
"name": "Hour",
|
| 320 |
+
"abbrev": "HR",
|
| 321 |
+
"description": "The T-0 is accurate to the hour."
|
| 322 |
+
},
|
| 323 |
+
"probability": null,
|
| 324 |
+
"weather_concerns": null,
|
| 325 |
+
"holdreason": "",
|
| 326 |
+
"failreason": "",
|
| 327 |
+
"hashtag": null,
|
| 328 |
+
"launch_service_provider": {
|
| 329 |
+
"id": 121,
|
| 330 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 331 |
+
"name": "SpaceX",
|
| 332 |
+
"type": "Commercial"
|
| 333 |
+
},
|
| 334 |
+
"rocket": {
|
| 335 |
+
"id": 8255,
|
| 336 |
+
"configuration": {
|
| 337 |
+
"id": 164,
|
| 338 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/164/",
|
| 339 |
+
"name": "Falcon 9",
|
| 340 |
+
"family": "Falcon",
|
| 341 |
+
"full_name": "Falcon 9 Block 5",
|
| 342 |
+
"variant": "Block 5"
|
| 343 |
+
}
|
| 344 |
+
},
|
| 345 |
+
"mission": {
|
| 346 |
+
"id": 6836,
|
| 347 |
+
"name": "Starlink Group 8-8",
|
| 348 |
+
"description": "A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.",
|
| 349 |
+
"launch_designator": null,
|
| 350 |
+
"type": "Communications",
|
| 351 |
+
"orbit": {
|
| 352 |
+
"id": 8,
|
| 353 |
+
"name": "Low Earth Orbit",
|
| 354 |
+
"abbrev": "LEO"
|
| 355 |
+
},
|
| 356 |
+
"agencies": [
|
| 357 |
+
{
|
| 358 |
+
"id": 121,
|
| 359 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 360 |
+
"name": "SpaceX",
|
| 361 |
+
"featured": true,
|
| 362 |
+
"type": "Commercial",
|
| 363 |
+
"country_code": "USA",
|
| 364 |
+
"abbrev": "SpX",
|
| 365 |
+
"description": "Space Exploration Technologies Corp., known as SpaceX, is an American aerospace manufacturer and space transport services company headquartered in Hawthorne, California. It was founded in 2002 by entrepreneur Elon Musk with the goal of reducing space transportation costs and enabling the colonization of Mars. SpaceX operates from many pads, on the East Coast of the US they operate from SLC-40 at Cape Canaveral Space Force Station and historic LC-39A at Kennedy Space Center. They also operate from SLC-4E at Vandenberg Space Force Base, California, usually for polar launches. Another launch site is being developed at Boca Chica, Texas.",
|
| 366 |
+
"administrator": "CEO: Elon Musk",
|
| 367 |
+
"founding_year": "2002",
|
| 368 |
+
"launchers": "Falcon | Starship",
|
| 369 |
+
"spacecraft": "Dragon",
|
| 370 |
+
"launch_library_url": null,
|
| 371 |
+
"total_launch_count": 369,
|
| 372 |
+
"consecutive_successful_launches": 70,
|
| 373 |
+
"successful_launches": 358,
|
| 374 |
+
"failed_launches": 11,
|
| 375 |
+
"pending_launches": 131,
|
| 376 |
+
"consecutive_successful_landings": 32,
|
| 377 |
+
"successful_landings": 320,
|
| 378 |
+
"failed_landings": 24,
|
| 379 |
+
"attempted_landings": 343,
|
| 380 |
+
"info_url": "http://www.spacex.com/",
|
| 381 |
+
"wiki_url": "http://en.wikipedia.org/wiki/SpaceX",
|
| 382 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_logo_20220826094919.png",
|
| 383 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_image_20190207032501.jpeg",
|
| 384 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_nation_20230531064544.jpg"
|
| 385 |
+
}
|
| 386 |
+
],
|
| 387 |
+
"info_urls": [],
|
| 388 |
+
"vid_urls": []
|
| 389 |
+
},
|
| 390 |
+
"pad": {
|
| 391 |
+
"id": 16,
|
| 392 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/16/",
|
| 393 |
+
"agency_id": null,
|
| 394 |
+
"name": "Space Launch Complex 4E",
|
| 395 |
+
"description": "Space Launch Complex 4 East (SLC-4E) is a launch site at Vandenberg Space Force Base, California, U.S.\r\n\r\nThe pad was previously used by Atlas and Titan rockets between 1963 and 2005. The pad was built for use by Atlas-Agena rockets, but was later rebuilt to handle Titan rockets.",
|
| 396 |
+
"info_url": null,
|
| 397 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Vandenberg_Space_Launch_Complex_4#SLC-4E",
|
| 398 |
+
"map_url": "https://www.google.com/maps?q=34.632,-120.611",
|
| 399 |
+
"latitude": "34.632",
|
| 400 |
+
"longitude": "-120.611",
|
| 401 |
+
"location": {
|
| 402 |
+
"id": 11,
|
| 403 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/11/",
|
| 404 |
+
"name": "Vandenberg SFB, CA, USA",
|
| 405 |
+
"country_code": "USA",
|
| 406 |
+
"description": "",
|
| 407 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_11_20200803142416.jpg",
|
| 408 |
+
"timezone_name": "America/Los_Angeles",
|
| 409 |
+
"total_launch_count": 757,
|
| 410 |
+
"total_landing_count": 19
|
| 411 |
+
},
|
| 412 |
+
"country_code": "USA",
|
| 413 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_16_20200803143532.jpg",
|
| 414 |
+
"total_launch_count": 146,
|
| 415 |
+
"orbital_launch_attempt_count": 146
|
| 416 |
+
},
|
| 417 |
+
"webcast_live": false,
|
| 418 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon2520925_image_20221009234147.png",
|
| 419 |
+
"infographic": null,
|
| 420 |
+
"program": [
|
| 421 |
+
{
|
| 422 |
+
"id": 25,
|
| 423 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/25/",
|
| 424 |
+
"name": "Starlink",
|
| 425 |
+
"description": "Starlink is a satellite internet constellation operated by American aerospace company SpaceX",
|
| 426 |
+
"agencies": [
|
| 427 |
+
{
|
| 428 |
+
"id": 121,
|
| 429 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 430 |
+
"name": "SpaceX",
|
| 431 |
+
"type": "Commercial"
|
| 432 |
+
}
|
| 433 |
+
],
|
| 434 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/starlink_program_20231228154508.jpeg",
|
| 435 |
+
"start_date": "2018-02-22T14:17:00Z",
|
| 436 |
+
"end_date": null,
|
| 437 |
+
"info_url": "https://starlink.com",
|
| 438 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Starlink",
|
| 439 |
+
"mission_patches": [
|
| 440 |
+
{
|
| 441 |
+
"id": 7,
|
| 442 |
+
"name": "Space X Starlink Mission Patch",
|
| 443 |
+
"priority": 10,
|
| 444 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/mission_patch_images/space2520x252_mission_patch_20221011205756.png",
|
| 445 |
+
"agency": {
|
| 446 |
+
"id": 121,
|
| 447 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 448 |
+
"name": "SpaceX",
|
| 449 |
+
"type": "Commercial"
|
| 450 |
+
}
|
| 451 |
+
}
|
| 452 |
+
],
|
| 453 |
+
"type": {
|
| 454 |
+
"id": 3,
|
| 455 |
+
"name": "Communication Constellation"
|
| 456 |
+
}
|
| 457 |
+
}
|
| 458 |
+
],
|
| 459 |
+
"orbital_launch_attempt_count": 6689,
|
| 460 |
+
"location_launch_attempt_count": 758,
|
| 461 |
+
"pad_launch_attempt_count": 147,
|
| 462 |
+
"agency_launch_attempt_count": 371,
|
| 463 |
+
"orbital_launch_attempt_count_year": 111,
|
| 464 |
+
"location_launch_attempt_count_year": 19,
|
| 465 |
+
"pad_launch_attempt_count_year": 19,
|
| 466 |
+
"agency_launch_attempt_count_year": 60,
|
| 467 |
+
"type": "normal"
|
| 468 |
+
},
|
| 469 |
+
{
|
| 470 |
+
"id": "968067d1-8c12-4018-9854-b7b7d4bddc6b",
|
| 471 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/968067d1-8c12-4018-9854-b7b7d4bddc6b/",
|
| 472 |
+
"slug": "atlas-v-n22-cst-100-starliner-crewed-flight-test",
|
| 473 |
+
"name": "Atlas V N22 | CST-100 Starliner Crewed Flight Test",
|
| 474 |
+
"status": {
|
| 475 |
+
"id": 8,
|
| 476 |
+
"name": "To Be Confirmed",
|
| 477 |
+
"abbrev": "TBC",
|
| 478 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 479 |
+
},
|
| 480 |
+
"last_updated": "2024-06-02T16:42:58Z",
|
| 481 |
+
"net": "2024-06-05T14:52:00Z",
|
| 482 |
+
"window_end": "2024-06-05T14:52:00Z",
|
| 483 |
+
"window_start": "2024-06-05T14:52:00Z",
|
| 484 |
+
"net_precision": {
|
| 485 |
+
"id": 1,
|
| 486 |
+
"name": "Minute",
|
| 487 |
+
"abbrev": "MIN",
|
| 488 |
+
"description": "The T-0 is accurate to the minute."
|
| 489 |
+
},
|
| 490 |
+
"probability": null,
|
| 491 |
+
"weather_concerns": null,
|
| 492 |
+
"holdreason": "",
|
| 493 |
+
"failreason": "",
|
| 494 |
+
"hashtag": null,
|
| 495 |
+
"launch_service_provider": {
|
| 496 |
+
"id": 124,
|
| 497 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/124/",
|
| 498 |
+
"name": "United Launch Alliance",
|
| 499 |
+
"type": "Commercial"
|
| 500 |
+
},
|
| 501 |
+
"rocket": {
|
| 502 |
+
"id": 103,
|
| 503 |
+
"configuration": {
|
| 504 |
+
"id": 166,
|
| 505 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/166/",
|
| 506 |
+
"name": "Atlas V N22",
|
| 507 |
+
"family": "Atlas",
|
| 508 |
+
"full_name": "Atlas V N22",
|
| 509 |
+
"variant": "V N22"
|
| 510 |
+
}
|
| 511 |
+
},
|
| 512 |
+
"mission": {
|
| 513 |
+
"id": 1052,
|
| 514 |
+
"name": "CST-100 Starliner Crewed Flight Test",
|
| 515 |
+
"description": "This is the first crewed test flight of Starliner spacecraft. It will carry NASA astronauts Barry Wilmore and\r\nSuni Williams to the International Space Station.",
|
| 516 |
+
"launch_designator": null,
|
| 517 |
+
"type": "Test Flight",
|
| 518 |
+
"orbit": {
|
| 519 |
+
"id": 8,
|
| 520 |
+
"name": "Low Earth Orbit",
|
| 521 |
+
"abbrev": "LEO"
|
| 522 |
+
},
|
| 523 |
+
"agencies": [
|
| 524 |
+
{
|
| 525 |
+
"id": 80,
|
| 526 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/80/",
|
| 527 |
+
"name": "Boeing",
|
| 528 |
+
"featured": false,
|
| 529 |
+
"type": "Commercial",
|
| 530 |
+
"country_code": "USA",
|
| 531 |
+
"abbrev": "BA",
|
| 532 |
+
"description": "Boeing as a space agency has recently provided NASA with assistance on sending humans to the ISS from American with both their construction of the CST-100 Starliner crew capsule and their work on the SLS Avionics to return to the moon and beyond. Their ventures in GPS satellite systems and Tracking and Data Relay Satellites provide information about earth-orbiting craft to stations on the ground. They also enable research on the ISS and will be helping with the construction of the Lunar Gateway.",
|
| 533 |
+
"administrator": "Leanne Caret",
|
| 534 |
+
"founding_year": "2002",
|
| 535 |
+
"launchers": "SLS",
|
| 536 |
+
"spacecraft": "Starliner",
|
| 537 |
+
"launch_library_url": null,
|
| 538 |
+
"total_launch_count": 2,
|
| 539 |
+
"consecutive_successful_launches": 0,
|
| 540 |
+
"successful_launches": 1,
|
| 541 |
+
"failed_launches": 1,
|
| 542 |
+
"pending_launches": 0,
|
| 543 |
+
"consecutive_successful_landings": 0,
|
| 544 |
+
"successful_landings": 0,
|
| 545 |
+
"failed_landings": 0,
|
| 546 |
+
"attempted_landings": 0,
|
| 547 |
+
"info_url": "https://www.boeing.com",
|
| 548 |
+
"wiki_url": "http://en.wikipedia.org/wiki/Boeing",
|
| 549 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/boeing_logo_20201128183345.png",
|
| 550 |
+
"image_url": null,
|
| 551 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/boeing_nation_20230804083022.jpg"
|
| 552 |
+
},
|
| 553 |
+
{
|
| 554 |
+
"id": 44,
|
| 555 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 556 |
+
"name": "National Aeronautics and Space Administration",
|
| 557 |
+
"featured": true,
|
| 558 |
+
"type": "Government",
|
| 559 |
+
"country_code": "USA",
|
| 560 |
+
"abbrev": "NASA",
|
| 561 |
+
"description": "The National Aeronautics and Space Administration is an independent agency of the executive branch of the United States federal government responsible for the civilian space program, as well as aeronautics and aerospace research. NASA have many launch facilities but most are inactive. The most commonly used pad will be LC-39B at Kennedy Space Center in Florida.",
|
| 562 |
+
"administrator": "Administrator: Bill Nelson",
|
| 563 |
+
"founding_year": "1958",
|
| 564 |
+
"launchers": "Space Shuttle | SLS",
|
| 565 |
+
"spacecraft": "Orion",
|
| 566 |
+
"launch_library_url": null,
|
| 567 |
+
"total_launch_count": 135,
|
| 568 |
+
"consecutive_successful_launches": 11,
|
| 569 |
+
"successful_launches": 115,
|
| 570 |
+
"failed_launches": 20,
|
| 571 |
+
"pending_launches": 6,
|
| 572 |
+
"consecutive_successful_landings": 0,
|
| 573 |
+
"successful_landings": 0,
|
| 574 |
+
"failed_landings": 0,
|
| 575 |
+
"attempted_landings": 0,
|
| 576 |
+
"info_url": "http://www.nasa.gov",
|
| 577 |
+
"wiki_url": "http://en.wikipedia.org/wiki/National_Aeronautics_and_Space_Administration",
|
| 578 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_logo_20190207032448.png",
|
| 579 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_image_20190207032448.jpeg",
|
| 580 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_nation_20230803040809.jpg"
|
| 581 |
+
}
|
| 582 |
+
],
|
| 583 |
+
"info_urls": [],
|
| 584 |
+
"vid_urls": []
|
| 585 |
+
},
|
| 586 |
+
"pad": {
|
| 587 |
+
"id": 29,
|
| 588 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/29/",
|
| 589 |
+
"agency_id": null,
|
| 590 |
+
"name": "Space Launch Complex 41",
|
| 591 |
+
"description": null,
|
| 592 |
+
"info_url": null,
|
| 593 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_41",
|
| 594 |
+
"map_url": "https://www.google.com/maps?q=28.58341025,-80.58303644",
|
| 595 |
+
"latitude": "28.58341025",
|
| 596 |
+
"longitude": "-80.58303644",
|
| 597 |
+
"location": {
|
| 598 |
+
"id": 12,
|
| 599 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/12/",
|
| 600 |
+
"name": "Cape Canaveral, FL, USA",
|
| 601 |
+
"country_code": "USA",
|
| 602 |
+
"description": "",
|
| 603 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg",
|
| 604 |
+
"timezone_name": "America/New_York",
|
| 605 |
+
"total_launch_count": 956,
|
| 606 |
+
"total_landing_count": 51
|
| 607 |
+
},
|
| 608 |
+
"country_code": "USA",
|
| 609 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_29_20200803143528.jpg",
|
| 610 |
+
"total_launch_count": 111,
|
| 611 |
+
"orbital_launch_attempt_count": 111
|
| 612 |
+
},
|
| 613 |
+
"webcast_live": false,
|
| 614 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/atlas_v_n22_on__image_20240602164247.jpg",
|
| 615 |
+
"infographic": null,
|
| 616 |
+
"program": [
|
| 617 |
+
{
|
| 618 |
+
"id": 5,
|
| 619 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/5/",
|
| 620 |
+
"name": "Commercial Crew Program",
|
| 621 |
+
"description": "The Commercial Crew Program (CCP) is a human spaceflight program operated by NASA, in association with American aerospace manufacturers Boeing and SpaceX. The program conducts rotations between the expeditions of the International Space Station program, transporting crews to and from the International Space Station (ISS) aboard Boeing Starliner and SpaceX Crew Dragon capsules, in the first crewed orbital spaceflights operated by private companies.",
|
| 622 |
+
"agencies": [
|
| 623 |
+
{
|
| 624 |
+
"id": 80,
|
| 625 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/80/",
|
| 626 |
+
"name": "Boeing",
|
| 627 |
+
"type": "Commercial"
|
| 628 |
+
},
|
| 629 |
+
{
|
| 630 |
+
"id": 44,
|
| 631 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 632 |
+
"name": "National Aeronautics and Space Administration",
|
| 633 |
+
"type": "Government"
|
| 634 |
+
},
|
| 635 |
+
{
|
| 636 |
+
"id": 121,
|
| 637 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 638 |
+
"name": "SpaceX",
|
| 639 |
+
"type": "Commercial"
|
| 640 |
+
}
|
| 641 |
+
],
|
| 642 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/commercial2520_program_20200820201209.png",
|
| 643 |
+
"start_date": "2011-04-18T00:00:00Z",
|
| 644 |
+
"end_date": null,
|
| 645 |
+
"info_url": "https://www.nasa.gov/exploration/commercial/crew/index.html",
|
| 646 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Commercial_Crew_Program",
|
| 647 |
+
"mission_patches": [],
|
| 648 |
+
"type": {
|
| 649 |
+
"id": 2,
|
| 650 |
+
"name": "Human Spaceflight"
|
| 651 |
+
}
|
| 652 |
+
},
|
| 653 |
+
{
|
| 654 |
+
"id": 17,
|
| 655 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/17/",
|
| 656 |
+
"name": "International Space Station",
|
| 657 |
+
"description": "The International Space Station programme is tied together by a complex set of legal, political and financial agreements between the sixteen nations involved in the project, governing ownership of the various components, rights to crewing and utilization, and responsibilities for crew rotation and resupply of the International Space Station. It was conceived in 1984 by President Ronald Reagan, during the Space Station Freedom project as it was originally called.",
|
| 658 |
+
"agencies": [
|
| 659 |
+
{
|
| 660 |
+
"id": 16,
|
| 661 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/16/",
|
| 662 |
+
"name": "Canadian Space Agency",
|
| 663 |
+
"type": "Government"
|
| 664 |
+
},
|
| 665 |
+
{
|
| 666 |
+
"id": 27,
|
| 667 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/27/",
|
| 668 |
+
"name": "European Space Agency",
|
| 669 |
+
"type": "Multinational"
|
| 670 |
+
},
|
| 671 |
+
{
|
| 672 |
+
"id": 37,
|
| 673 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/37/",
|
| 674 |
+
"name": "Japan Aerospace Exploration Agency",
|
| 675 |
+
"type": "Government"
|
| 676 |
+
},
|
| 677 |
+
{
|
| 678 |
+
"id": 44,
|
| 679 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 680 |
+
"name": "National Aeronautics and Space Administration",
|
| 681 |
+
"type": "Government"
|
| 682 |
+
},
|
| 683 |
+
{
|
| 684 |
+
"id": 63,
|
| 685 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/63/",
|
| 686 |
+
"name": "Russian Federal Space Agency (ROSCOSMOS)",
|
| 687 |
+
"type": "Government"
|
| 688 |
+
}
|
| 689 |
+
],
|
| 690 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/international2_program_20201129184745.png",
|
| 691 |
+
"start_date": "1998-11-20T06:40:00Z",
|
| 692 |
+
"end_date": null,
|
| 693 |
+
"info_url": "https://www.nasa.gov/mission_pages/station/main/index.html",
|
| 694 |
+
"wiki_url": "https://en.wikipedia.org/wiki/International_Space_Station_programme",
|
| 695 |
+
"mission_patches": [],
|
| 696 |
+
"type": {
|
| 697 |
+
"id": 2,
|
| 698 |
+
"name": "Human Spaceflight"
|
| 699 |
+
}
|
| 700 |
+
}
|
| 701 |
+
],
|
| 702 |
+
"orbital_launch_attempt_count": 6690,
|
| 703 |
+
"location_launch_attempt_count": 958,
|
| 704 |
+
"pad_launch_attempt_count": 112,
|
| 705 |
+
"agency_launch_attempt_count": 162,
|
| 706 |
+
"orbital_launch_attempt_count_year": 112,
|
| 707 |
+
"location_launch_attempt_count_year": 31,
|
| 708 |
+
"pad_launch_attempt_count_year": 2,
|
| 709 |
+
"agency_launch_attempt_count_year": 3,
|
| 710 |
+
"type": "normal"
|
| 711 |
+
},
|
| 712 |
+
{
|
| 713 |
+
"id": "2b1b756f-7207-4781-a874-aed61b38463d",
|
| 714 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/2b1b756f-7207-4781-a874-aed61b38463d/",
|
| 715 |
+
"slug": "starship-integrated-flight-test-4",
|
| 716 |
+
"name": "Starship | Integrated Flight Test 4",
|
| 717 |
+
"status": {
|
| 718 |
+
"id": 8,
|
| 719 |
+
"name": "To Be Confirmed",
|
| 720 |
+
"abbrev": "TBC",
|
| 721 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 722 |
+
},
|
| 723 |
+
"last_updated": "2024-06-01T15:41:13Z",
|
| 724 |
+
"net": "2024-06-06T12:00:00Z",
|
| 725 |
+
"window_end": "2024-06-06T16:00:00Z",
|
| 726 |
+
"window_start": "2024-06-06T12:00:00Z",
|
| 727 |
+
"net_precision": {
|
| 728 |
+
"id": 2,
|
| 729 |
+
"name": "Hour",
|
| 730 |
+
"abbrev": "HR",
|
| 731 |
+
"description": "The T-0 is accurate to the hour."
|
| 732 |
+
},
|
| 733 |
+
"probability": null,
|
| 734 |
+
"weather_concerns": null,
|
| 735 |
+
"holdreason": "",
|
| 736 |
+
"failreason": "",
|
| 737 |
+
"hashtag": null,
|
| 738 |
+
"launch_service_provider": {
|
| 739 |
+
"id": 121,
|
| 740 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 741 |
+
"name": "SpaceX",
|
| 742 |
+
"type": "Commercial"
|
| 743 |
+
},
|
| 744 |
+
"rocket": {
|
| 745 |
+
"id": 8221,
|
| 746 |
+
"configuration": {
|
| 747 |
+
"id": 464,
|
| 748 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/464/",
|
| 749 |
+
"name": "Starship",
|
| 750 |
+
"family": "Starship",
|
| 751 |
+
"full_name": "Starship",
|
| 752 |
+
"variant": ""
|
| 753 |
+
}
|
| 754 |
+
},
|
| 755 |
+
"mission": {
|
| 756 |
+
"id": 6798,
|
| 757 |
+
"name": "Integrated Flight Test 4",
|
| 758 |
+
"description": "Fourth test flight of the two-stage Starship launch vehicle.",
|
| 759 |
+
"launch_designator": null,
|
| 760 |
+
"type": "Test Flight",
|
| 761 |
+
"orbit": {
|
| 762 |
+
"id": 15,
|
| 763 |
+
"name": "Suborbital",
|
| 764 |
+
"abbrev": "Sub"
|
| 765 |
+
},
|
| 766 |
+
"agencies": [
|
| 767 |
+
{
|
| 768 |
+
"id": 121,
|
| 769 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 770 |
+
"name": "SpaceX",
|
| 771 |
+
"featured": true,
|
| 772 |
+
"type": "Commercial",
|
| 773 |
+
"country_code": "USA",
|
| 774 |
+
"abbrev": "SpX",
|
| 775 |
+
"description": "Space Exploration Technologies Corp., known as SpaceX, is an American aerospace manufacturer and space transport services company headquartered in Hawthorne, California. It was founded in 2002 by entrepreneur Elon Musk with the goal of reducing space transportation costs and enabling the colonization of Mars. SpaceX operates from many pads, on the East Coast of the US they operate from SLC-40 at Cape Canaveral Space Force Station and historic LC-39A at Kennedy Space Center. They also operate from SLC-4E at Vandenberg Space Force Base, California, usually for polar launches. Another launch site is being developed at Boca Chica, Texas.",
|
| 776 |
+
"administrator": "CEO: Elon Musk",
|
| 777 |
+
"founding_year": "2002",
|
| 778 |
+
"launchers": "Falcon | Starship",
|
| 779 |
+
"spacecraft": "Dragon",
|
| 780 |
+
"launch_library_url": null,
|
| 781 |
+
"total_launch_count": 369,
|
| 782 |
+
"consecutive_successful_launches": 70,
|
| 783 |
+
"successful_launches": 358,
|
| 784 |
+
"failed_launches": 11,
|
| 785 |
+
"pending_launches": 131,
|
| 786 |
+
"consecutive_successful_landings": 32,
|
| 787 |
+
"successful_landings": 320,
|
| 788 |
+
"failed_landings": 24,
|
| 789 |
+
"attempted_landings": 343,
|
| 790 |
+
"info_url": "http://www.spacex.com/",
|
| 791 |
+
"wiki_url": "http://en.wikipedia.org/wiki/SpaceX",
|
| 792 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_logo_20220826094919.png",
|
| 793 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_image_20190207032501.jpeg",
|
| 794 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_nation_20230531064544.jpg"
|
| 795 |
+
}
|
| 796 |
+
],
|
| 797 |
+
"info_urls": [],
|
| 798 |
+
"vid_urls": []
|
| 799 |
+
},
|
| 800 |
+
"pad": {
|
| 801 |
+
"id": 188,
|
| 802 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/188/",
|
| 803 |
+
"agency_id": 121,
|
| 804 |
+
"name": "Orbital Launch Mount A",
|
| 805 |
+
"description": null,
|
| 806 |
+
"info_url": null,
|
| 807 |
+
"wiki_url": "https://en.wikipedia.org/wiki/SpaceX_South_Texas_Launch_Site",
|
| 808 |
+
"map_url": "https://www.google.com/maps?q=25.997116,-97.15503099856647",
|
| 809 |
+
"latitude": "25.997116",
|
| 810 |
+
"longitude": "-97.15503099856647",
|
| 811 |
+
"location": {
|
| 812 |
+
"id": 143,
|
| 813 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/143/",
|
| 814 |
+
"name": "SpaceX Starbase, TX, USA",
|
| 815 |
+
"country_code": "USA",
|
| 816 |
+
"description": "",
|
| 817 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_143_20200803142438.jpg",
|
| 818 |
+
"timezone_name": "America/Chicago",
|
| 819 |
+
"total_launch_count": 12,
|
| 820 |
+
"total_landing_count": 9
|
| 821 |
+
},
|
| 822 |
+
"country_code": "USA",
|
| 823 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_orbital_launch_mount_a_20210514061342.jpg",
|
| 824 |
+
"total_launch_count": 3,
|
| 825 |
+
"orbital_launch_attempt_count": 0
|
| 826 |
+
},
|
| 827 |
+
"webcast_live": false,
|
| 828 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/starship_full_s_image_20240520184130.jpeg",
|
| 829 |
+
"infographic": null,
|
| 830 |
+
"program": [
|
| 831 |
+
{
|
| 832 |
+
"id": 1,
|
| 833 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/1/",
|
| 834 |
+
"name": "SpaceX Starship",
|
| 835 |
+
"description": "The SpaceX Starship is a fully reusable super heavy-lift launch vehicle under development by SpaceX since 2012, as a self-funded private spaceflight project. The second stage of the Starship \u2014 is designed as a long-duration cargo and passenger-carrying spacecraft. It is expected to be initially used without any booster stage at all, as part of an extensive development program to prove out launch-and-landing and iterate on a variety of design details, particularly with respect to the vehicle's atmospheric reentry.",
|
| 836 |
+
"agencies": [
|
| 837 |
+
{
|
| 838 |
+
"id": 121,
|
| 839 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 840 |
+
"name": "SpaceX",
|
| 841 |
+
"type": "Commercial"
|
| 842 |
+
}
|
| 843 |
+
],
|
| 844 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex2520star_program_20201129204513.png",
|
| 845 |
+
"start_date": "2019-03-01T05:00:00Z",
|
| 846 |
+
"end_date": null,
|
| 847 |
+
"info_url": "https://www.spacex.com/vehicles/starship/",
|
| 848 |
+
"wiki_url": "https://en.wikipedia.org/wiki/SpaceX_Starship",
|
| 849 |
+
"mission_patches": [],
|
| 850 |
+
"type": {
|
| 851 |
+
"id": 7,
|
| 852 |
+
"name": "Technology"
|
| 853 |
+
}
|
| 854 |
+
}
|
| 855 |
+
],
|
| 856 |
+
"orbital_launch_attempt_count": null,
|
| 857 |
+
"location_launch_attempt_count": 13,
|
| 858 |
+
"pad_launch_attempt_count": 4,
|
| 859 |
+
"agency_launch_attempt_count": 372,
|
| 860 |
+
"orbital_launch_attempt_count_year": 0,
|
| 861 |
+
"location_launch_attempt_count_year": 2,
|
| 862 |
+
"pad_launch_attempt_count_year": 2,
|
| 863 |
+
"agency_launch_attempt_count_year": 61,
|
| 864 |
+
"type": "normal"
|
| 865 |
+
},
|
| 866 |
+
{
|
| 867 |
+
"id": "cdc8274b-932e-48d6-9e8d-691969da4ad0",
|
| 868 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/cdc8274b-932e-48d6-9e8d-691969da4ad0/",
|
| 869 |
+
"slug": "falcon-9-block-5-starlink-group-10-1",
|
| 870 |
+
"name": "Falcon 9 Block 5 | Starlink Group 10-1",
|
| 871 |
+
"status": {
|
| 872 |
+
"id": 8,
|
| 873 |
+
"name": "To Be Confirmed",
|
| 874 |
+
"abbrev": "TBC",
|
| 875 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 876 |
+
},
|
| 877 |
+
"last_updated": "2024-06-01T07:19:07Z",
|
| 878 |
+
"net": "2024-06-07T22:58:00Z",
|
| 879 |
+
"window_end": "2024-06-08T02:21:00Z",
|
| 880 |
+
"window_start": "2024-06-07T22:58:00Z",
|
| 881 |
+
"net_precision": {
|
| 882 |
+
"id": 2,
|
| 883 |
+
"name": "Hour",
|
| 884 |
+
"abbrev": "HR",
|
| 885 |
+
"description": "The T-0 is accurate to the hour."
|
| 886 |
+
},
|
| 887 |
+
"probability": null,
|
| 888 |
+
"weather_concerns": null,
|
| 889 |
+
"holdreason": "",
|
| 890 |
+
"failreason": "",
|
| 891 |
+
"hashtag": null,
|
| 892 |
+
"launch_service_provider": {
|
| 893 |
+
"id": 121,
|
| 894 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 895 |
+
"name": "SpaceX",
|
| 896 |
+
"type": "Commercial"
|
| 897 |
+
},
|
| 898 |
+
"rocket": {
|
| 899 |
+
"id": 8256,
|
| 900 |
+
"configuration": {
|
| 901 |
+
"id": 164,
|
| 902 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/164/",
|
| 903 |
+
"name": "Falcon 9",
|
| 904 |
+
"family": "Falcon",
|
| 905 |
+
"full_name": "Falcon 9 Block 5",
|
| 906 |
+
"variant": "Block 5"
|
| 907 |
+
}
|
| 908 |
+
},
|
| 909 |
+
"mission": {
|
| 910 |
+
"id": 6837,
|
| 911 |
+
"name": "Starlink Group 10-1",
|
| 912 |
+
"description": "A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.",
|
| 913 |
+
"launch_designator": null,
|
| 914 |
+
"type": "Communications",
|
| 915 |
+
"orbit": {
|
| 916 |
+
"id": 8,
|
| 917 |
+
"name": "Low Earth Orbit",
|
| 918 |
+
"abbrev": "LEO"
|
| 919 |
+
},
|
| 920 |
+
"agencies": [
|
| 921 |
+
{
|
| 922 |
+
"id": 121,
|
| 923 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 924 |
+
"name": "SpaceX",
|
| 925 |
+
"featured": true,
|
| 926 |
+
"type": "Commercial",
|
| 927 |
+
"country_code": "USA",
|
| 928 |
+
"abbrev": "SpX",
|
| 929 |
+
"description": "Space Exploration Technologies Corp., known as SpaceX, is an American aerospace manufacturer and space transport services company headquartered in Hawthorne, California. It was founded in 2002 by entrepreneur Elon Musk with the goal of reducing space transportation costs and enabling the colonization of Mars. SpaceX operates from many pads, on the East Coast of the US they operate from SLC-40 at Cape Canaveral Space Force Station and historic LC-39A at Kennedy Space Center. They also operate from SLC-4E at Vandenberg Space Force Base, California, usually for polar launches. Another launch site is being developed at Boca Chica, Texas.",
|
| 930 |
+
"administrator": "CEO: Elon Musk",
|
| 931 |
+
"founding_year": "2002",
|
| 932 |
+
"launchers": "Falcon | Starship",
|
| 933 |
+
"spacecraft": "Dragon",
|
| 934 |
+
"launch_library_url": null,
|
| 935 |
+
"total_launch_count": 369,
|
| 936 |
+
"consecutive_successful_launches": 70,
|
| 937 |
+
"successful_launches": 358,
|
| 938 |
+
"failed_launches": 11,
|
| 939 |
+
"pending_launches": 131,
|
| 940 |
+
"consecutive_successful_landings": 32,
|
| 941 |
+
"successful_landings": 320,
|
| 942 |
+
"failed_landings": 24,
|
| 943 |
+
"attempted_landings": 343,
|
| 944 |
+
"info_url": "http://www.spacex.com/",
|
| 945 |
+
"wiki_url": "http://en.wikipedia.org/wiki/SpaceX",
|
| 946 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_logo_20220826094919.png",
|
| 947 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_image_20190207032501.jpeg",
|
| 948 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spacex_nation_20230531064544.jpg"
|
| 949 |
+
}
|
| 950 |
+
],
|
| 951 |
+
"info_urls": [],
|
| 952 |
+
"vid_urls": []
|
| 953 |
+
},
|
| 954 |
+
"pad": {
|
| 955 |
+
"id": 80,
|
| 956 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/80/",
|
| 957 |
+
"agency_id": 121,
|
| 958 |
+
"name": "Space Launch Complex 40",
|
| 959 |
+
"description": null,
|
| 960 |
+
"info_url": null,
|
| 961 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_40",
|
| 962 |
+
"map_url": "https://www.google.com/maps?q=28.56194122,-80.57735736",
|
| 963 |
+
"latitude": "28.56194122",
|
| 964 |
+
"longitude": "-80.57735736",
|
| 965 |
+
"location": {
|
| 966 |
+
"id": 12,
|
| 967 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/12/",
|
| 968 |
+
"name": "Cape Canaveral, FL, USA",
|
| 969 |
+
"country_code": "USA",
|
| 970 |
+
"description": "",
|
| 971 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg",
|
| 972 |
+
"timezone_name": "America/New_York",
|
| 973 |
+
"total_launch_count": 956,
|
| 974 |
+
"total_landing_count": 51
|
| 975 |
+
},
|
| 976 |
+
"country_code": "USA",
|
| 977 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_80_20200803143323.jpg",
|
| 978 |
+
"total_launch_count": 245,
|
| 979 |
+
"orbital_launch_attempt_count": 245
|
| 980 |
+
},
|
| 981 |
+
"webcast_live": false,
|
| 982 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon2520925_image_20221009234147.png",
|
| 983 |
+
"infographic": null,
|
| 984 |
+
"program": [
|
| 985 |
+
{
|
| 986 |
+
"id": 25,
|
| 987 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/program/25/",
|
| 988 |
+
"name": "Starlink",
|
| 989 |
+
"description": "Starlink is a satellite internet constellation operated by American aerospace company SpaceX",
|
| 990 |
+
"agencies": [
|
| 991 |
+
{
|
| 992 |
+
"id": 121,
|
| 993 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 994 |
+
"name": "SpaceX",
|
| 995 |
+
"type": "Commercial"
|
| 996 |
+
}
|
| 997 |
+
],
|
| 998 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/starlink_program_20231228154508.jpeg",
|
| 999 |
+
"start_date": "2018-02-22T14:17:00Z",
|
| 1000 |
+
"end_date": null,
|
| 1001 |
+
"info_url": "https://starlink.com",
|
| 1002 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Starlink",
|
| 1003 |
+
"mission_patches": [
|
| 1004 |
+
{
|
| 1005 |
+
"id": 7,
|
| 1006 |
+
"name": "Space X Starlink Mission Patch",
|
| 1007 |
+
"priority": 10,
|
| 1008 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/mission_patch_images/space2520x252_mission_patch_20221011205756.png",
|
| 1009 |
+
"agency": {
|
| 1010 |
+
"id": 121,
|
| 1011 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 1012 |
+
"name": "SpaceX",
|
| 1013 |
+
"type": "Commercial"
|
| 1014 |
+
}
|
| 1015 |
+
}
|
| 1016 |
+
],
|
| 1017 |
+
"type": {
|
| 1018 |
+
"id": 3,
|
| 1019 |
+
"name": "Communication Constellation"
|
| 1020 |
+
}
|
| 1021 |
+
}
|
| 1022 |
+
],
|
| 1023 |
+
"orbital_launch_attempt_count": 6691,
|
| 1024 |
+
"location_launch_attempt_count": 959,
|
| 1025 |
+
"pad_launch_attempt_count": 247,
|
| 1026 |
+
"agency_launch_attempt_count": 373,
|
| 1027 |
+
"orbital_launch_attempt_count_year": 113,
|
| 1028 |
+
"location_launch_attempt_count_year": 32,
|
| 1029 |
+
"pad_launch_attempt_count_year": 29,
|
| 1030 |
+
"agency_launch_attempt_count_year": 62,
|
| 1031 |
+
"type": "normal"
|
| 1032 |
+
},
|
| 1033 |
+
{
|
| 1034 |
+
"id": "c4a4f111-dd24-491a-bc44-8bcaf2e08351",
|
| 1035 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/c4a4f111-dd24-491a-bc44-8bcaf2e08351/",
|
| 1036 |
+
"slug": "spaceshiptwo-galactic-07",
|
| 1037 |
+
"name": "SpaceShipTwo | Galactic 07",
|
| 1038 |
+
"status": {
|
| 1039 |
+
"id": 2,
|
| 1040 |
+
"name": "To Be Determined",
|
| 1041 |
+
"abbrev": "TBD",
|
| 1042 |
+
"description": "Current date is a placeholder or rough estimation based on unreliable or interpreted sources."
|
| 1043 |
+
},
|
| 1044 |
+
"last_updated": "2024-05-01T23:25:01Z",
|
| 1045 |
+
"net": "2024-06-08T00:00:00Z",
|
| 1046 |
+
"window_end": "2024-06-08T00:00:00Z",
|
| 1047 |
+
"window_start": "2024-06-08T00:00:00Z",
|
| 1048 |
+
"net_precision": {
|
| 1049 |
+
"id": 5,
|
| 1050 |
+
"name": "Day",
|
| 1051 |
+
"abbrev": "DAY",
|
| 1052 |
+
"description": "The T-0 is expected on the given day."
|
| 1053 |
+
},
|
| 1054 |
+
"probability": null,
|
| 1055 |
+
"weather_concerns": null,
|
| 1056 |
+
"holdreason": "",
|
| 1057 |
+
"failreason": "",
|
| 1058 |
+
"hashtag": null,
|
| 1059 |
+
"launch_service_provider": {
|
| 1060 |
+
"id": 1024,
|
| 1061 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/1024/",
|
| 1062 |
+
"name": "Virgin Galactic",
|
| 1063 |
+
"type": "Private"
|
| 1064 |
+
},
|
| 1065 |
+
"rocket": {
|
| 1066 |
+
"id": 8092,
|
| 1067 |
+
"configuration": {
|
| 1068 |
+
"id": 465,
|
| 1069 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/465/",
|
| 1070 |
+
"name": "SpaceShipTwo",
|
| 1071 |
+
"family": "",
|
| 1072 |
+
"full_name": "SpaceShipTwo",
|
| 1073 |
+
"variant": ""
|
| 1074 |
+
}
|
| 1075 |
+
},
|
| 1076 |
+
"mission": {
|
| 1077 |
+
"id": 6646,
|
| 1078 |
+
"name": "Galactic 07",
|
| 1079 |
+
"description": "Seventh commercial Virgin Galactic mission.",
|
| 1080 |
+
"launch_designator": null,
|
| 1081 |
+
"type": "Tourism",
|
| 1082 |
+
"orbit": {
|
| 1083 |
+
"id": 15,
|
| 1084 |
+
"name": "Suborbital",
|
| 1085 |
+
"abbrev": "Sub"
|
| 1086 |
+
},
|
| 1087 |
+
"agencies": [
|
| 1088 |
+
{
|
| 1089 |
+
"id": 1024,
|
| 1090 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/1024/",
|
| 1091 |
+
"name": "Virgin Galactic",
|
| 1092 |
+
"featured": false,
|
| 1093 |
+
"type": "Private",
|
| 1094 |
+
"country_code": "USA",
|
| 1095 |
+
"abbrev": "VG",
|
| 1096 |
+
"description": "Virgin Galactic is an American spaceflight company within the Virgin Group. It is developing commercial spacecraft and aims to provide suborbital spaceflights to space tourists. Virgin Galactic's suborbital spacecraft are air launched from beneath a carrier airplane known as White Knight Two.",
|
| 1097 |
+
"administrator": "Founder: Richard Branson",
|
| 1098 |
+
"founding_year": "2004",
|
| 1099 |
+
"launchers": "VMS Eve",
|
| 1100 |
+
"spacecraft": "VSS Enterprise | VSS Unity",
|
| 1101 |
+
"launch_library_url": null,
|
| 1102 |
+
"total_launch_count": 66,
|
| 1103 |
+
"consecutive_successful_launches": 10,
|
| 1104 |
+
"successful_launches": 61,
|
| 1105 |
+
"failed_launches": 5,
|
| 1106 |
+
"pending_launches": 1,
|
| 1107 |
+
"consecutive_successful_landings": 0,
|
| 1108 |
+
"successful_landings": 0,
|
| 1109 |
+
"failed_landings": 0,
|
| 1110 |
+
"attempted_landings": 0,
|
| 1111 |
+
"info_url": "https://www.virgingalactic.com/",
|
| 1112 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Virgin_Galactic",
|
| 1113 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/virgin2520galactic_logo_20230509082346.png",
|
| 1114 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/virgin_galactic_image_20210522131723.jpeg",
|
| 1115 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/virgin2520galactic_nation_20230617045127.jpg"
|
| 1116 |
+
}
|
| 1117 |
+
],
|
| 1118 |
+
"info_urls": [],
|
| 1119 |
+
"vid_urls": []
|
| 1120 |
+
},
|
| 1121 |
+
"pad": {
|
| 1122 |
+
"id": 191,
|
| 1123 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/191/",
|
| 1124 |
+
"agency_id": 1024,
|
| 1125 |
+
"name": "Spaceport America",
|
| 1126 |
+
"description": null,
|
| 1127 |
+
"info_url": "https://www.spaceportamerica.com/",
|
| 1128 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Spaceport_America",
|
| 1129 |
+
"map_url": "https://www.google.com/maps?q=32.9902778,-106.9719162",
|
| 1130 |
+
"latitude": "32.9902778",
|
| 1131 |
+
"longitude": "-106.9719162",
|
| 1132 |
+
"location": {
|
| 1133 |
+
"id": 144,
|
| 1134 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/144/",
|
| 1135 |
+
"name": "Air launch to Suborbital flight",
|
| 1136 |
+
"country_code": "???",
|
| 1137 |
+
"description": "",
|
| 1138 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_144_20200803142439.jpg",
|
| 1139 |
+
"timezone_name": "",
|
| 1140 |
+
"total_launch_count": 85,
|
| 1141 |
+
"total_landing_count": 0
|
| 1142 |
+
},
|
| 1143 |
+
"country_code": "USA",
|
| 1144 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_spaceport_america_20210522162030.jpg",
|
| 1145 |
+
"total_launch_count": 13,
|
| 1146 |
+
"orbital_launch_attempt_count": 0
|
| 1147 |
+
},
|
| 1148 |
+
"webcast_live": false,
|
| 1149 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/spaceshiptwo_image_20210522140909.jpeg",
|
| 1150 |
+
"infographic": null,
|
| 1151 |
+
"program": [],
|
| 1152 |
+
"orbital_launch_attempt_count": null,
|
| 1153 |
+
"location_launch_attempt_count": 86,
|
| 1154 |
+
"pad_launch_attempt_count": 14,
|
| 1155 |
+
"agency_launch_attempt_count": 67,
|
| 1156 |
+
"orbital_launch_attempt_count_year": 0,
|
| 1157 |
+
"location_launch_attempt_count_year": 2,
|
| 1158 |
+
"pad_launch_attempt_count_year": 2,
|
| 1159 |
+
"agency_launch_attempt_count_year": 2,
|
| 1160 |
+
"type": "normal"
|
| 1161 |
+
},
|
| 1162 |
+
{
|
| 1163 |
+
"id": "e59f9e0b-fed2-4b12-a21b-ceda262bca5e",
|
| 1164 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/e59f9e0b-fed2-4b12-a21b-ceda262bca5e/",
|
| 1165 |
+
"slug": "falcon-9-block-5-astra-1pses-24",
|
| 1166 |
+
"name": "Falcon 9 Block 5 | Astra 1P/SES-24",
|
| 1167 |
+
"status": {
|
| 1168 |
+
"id": 2,
|
| 1169 |
+
"name": "To Be Determined",
|
| 1170 |
+
"abbrev": "TBD",
|
| 1171 |
+
"description": "Current date is a placeholder or rough estimation based on unreliable or interpreted sources."
|
| 1172 |
+
},
|
| 1173 |
+
"last_updated": "2024-05-28T02:36:44Z",
|
| 1174 |
+
"net": "2024-06-10T00:00:00Z",
|
| 1175 |
+
"window_end": "2024-06-10T00:00:00Z",
|
| 1176 |
+
"window_start": "2024-06-10T00:00:00Z",
|
| 1177 |
+
"net_precision": {
|
| 1178 |
+
"id": 5,
|
| 1179 |
+
"name": "Day",
|
| 1180 |
+
"abbrev": "DAY",
|
| 1181 |
+
"description": "The T-0 is expected on the given day."
|
| 1182 |
+
},
|
| 1183 |
+
"probability": null,
|
| 1184 |
+
"weather_concerns": null,
|
| 1185 |
+
"holdreason": "",
|
| 1186 |
+
"failreason": "",
|
| 1187 |
+
"hashtag": null,
|
| 1188 |
+
"launch_service_provider": {
|
| 1189 |
+
"id": 121,
|
| 1190 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 1191 |
+
"name": "SpaceX",
|
| 1192 |
+
"type": "Commercial"
|
| 1193 |
+
},
|
| 1194 |
+
"rocket": {
|
| 1195 |
+
"id": 8057,
|
| 1196 |
+
"configuration": {
|
| 1197 |
+
"id": 164,
|
| 1198 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/164/",
|
| 1199 |
+
"name": "Falcon 9",
|
| 1200 |
+
"family": "Falcon",
|
| 1201 |
+
"full_name": "Falcon 9 Block 5",
|
| 1202 |
+
"variant": "Block 5"
|
| 1203 |
+
}
|
| 1204 |
+
},
|
| 1205 |
+
"mission": {
|
| 1206 |
+
"id": 6610,
|
| 1207 |
+
"name": "Astra 1P/SES-24",
|
| 1208 |
+
"description": "ASTRA 1P, a classic wide-beam satellite, will support SES\u2019s prime TV neighbourhood and enable content owners, private and public broadcasters across Germany, France and Spain to continue broadcasting satellite TV channels in the highest-picture quality in the most cost-efficient manner. It will be based on the full electric and powerful Spacebus NEO platform developed by Thales Alenia Space and already flight proven in orbit.",
|
| 1209 |
+
"launch_designator": null,
|
| 1210 |
+
"type": "Communications",
|
| 1211 |
+
"orbit": {
|
| 1212 |
+
"id": 2,
|
| 1213 |
+
"name": "Geostationary Transfer Orbit",
|
| 1214 |
+
"abbrev": "GTO"
|
| 1215 |
+
},
|
| 1216 |
+
"agencies": [],
|
| 1217 |
+
"info_urls": [],
|
| 1218 |
+
"vid_urls": []
|
| 1219 |
+
},
|
| 1220 |
+
"pad": {
|
| 1221 |
+
"id": 80,
|
| 1222 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/80/",
|
| 1223 |
+
"agency_id": 121,
|
| 1224 |
+
"name": "Space Launch Complex 40",
|
| 1225 |
+
"description": null,
|
| 1226 |
+
"info_url": null,
|
| 1227 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_40",
|
| 1228 |
+
"map_url": "https://www.google.com/maps?q=28.56194122,-80.57735736",
|
| 1229 |
+
"latitude": "28.56194122",
|
| 1230 |
+
"longitude": "-80.57735736",
|
| 1231 |
+
"location": {
|
| 1232 |
+
"id": 12,
|
| 1233 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/12/",
|
| 1234 |
+
"name": "Cape Canaveral, FL, USA",
|
| 1235 |
+
"country_code": "USA",
|
| 1236 |
+
"description": "",
|
| 1237 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg",
|
| 1238 |
+
"timezone_name": "America/New_York",
|
| 1239 |
+
"total_launch_count": 956,
|
| 1240 |
+
"total_landing_count": 51
|
| 1241 |
+
},
|
| 1242 |
+
"country_code": "USA",
|
| 1243 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_80_20200803143323.jpg",
|
| 1244 |
+
"total_launch_count": 245,
|
| 1245 |
+
"orbital_launch_attempt_count": 245
|
| 1246 |
+
},
|
| 1247 |
+
"webcast_live": false,
|
| 1248 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon_9_image_20230807133459.jpeg",
|
| 1249 |
+
"infographic": null,
|
| 1250 |
+
"program": [],
|
| 1251 |
+
"orbital_launch_attempt_count": 6692,
|
| 1252 |
+
"location_launch_attempt_count": 960,
|
| 1253 |
+
"pad_launch_attempt_count": 248,
|
| 1254 |
+
"agency_launch_attempt_count": 374,
|
| 1255 |
+
"orbital_launch_attempt_count_year": 114,
|
| 1256 |
+
"location_launch_attempt_count_year": 33,
|
| 1257 |
+
"pad_launch_attempt_count_year": 30,
|
| 1258 |
+
"agency_launch_attempt_count_year": 63,
|
| 1259 |
+
"type": "normal"
|
| 1260 |
+
},
|
| 1261 |
+
{
|
| 1262 |
+
"id": "341c544e-d3b7-41fd-b5d4-7ffacc7ccaac",
|
| 1263 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/341c544e-d3b7-41fd-b5d4-7ffacc7ccaac/",
|
| 1264 |
+
"slug": "long-march-2c-space-variable-objects-monitor-svom",
|
| 1265 |
+
"name": "Long March 2C | Space Variable Objects Monitor (SVOM)",
|
| 1266 |
+
"status": {
|
| 1267 |
+
"id": 8,
|
| 1268 |
+
"name": "To Be Confirmed",
|
| 1269 |
+
"abbrev": "TBC",
|
| 1270 |
+
"description": "Awaiting official confirmation - current date is known with some certainty."
|
| 1271 |
+
},
|
| 1272 |
+
"last_updated": "2024-01-09T12:21:52Z",
|
| 1273 |
+
"net": "2024-06-24T10:00:00Z",
|
| 1274 |
+
"window_end": "2024-06-24T10:00:00Z",
|
| 1275 |
+
"window_start": "2024-06-24T10:00:00Z",
|
| 1276 |
+
"net_precision": {
|
| 1277 |
+
"id": 2,
|
| 1278 |
+
"name": "Hour",
|
| 1279 |
+
"abbrev": "HR",
|
| 1280 |
+
"description": "The T-0 is accurate to the hour."
|
| 1281 |
+
},
|
| 1282 |
+
"probability": null,
|
| 1283 |
+
"weather_concerns": null,
|
| 1284 |
+
"holdreason": "",
|
| 1285 |
+
"failreason": "",
|
| 1286 |
+
"hashtag": null,
|
| 1287 |
+
"launch_service_provider": {
|
| 1288 |
+
"id": 88,
|
| 1289 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/88/",
|
| 1290 |
+
"name": "China Aerospace Science and Technology Corporation",
|
| 1291 |
+
"type": "Government"
|
| 1292 |
+
},
|
| 1293 |
+
"rocket": {
|
| 1294 |
+
"id": 8159,
|
| 1295 |
+
"configuration": {
|
| 1296 |
+
"id": 61,
|
| 1297 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/61/",
|
| 1298 |
+
"name": "Long March 2",
|
| 1299 |
+
"family": "Long March",
|
| 1300 |
+
"full_name": "Long March 2C",
|
| 1301 |
+
"variant": "C"
|
| 1302 |
+
}
|
| 1303 |
+
},
|
| 1304 |
+
"mission": {
|
| 1305 |
+
"id": 6720,
|
| 1306 |
+
"name": "Space Variable Objects Monitor (SVOM)",
|
| 1307 |
+
"description": "The Space Variable Objects Monitor (SVOM) is a French/Chinese planned small X-ray telescope satellite under development by China National Space Administration (CNSA) and the Centre National d'\u00c9tudes Spatiales (CNES).\r\n\r\nSVOM will study the explosions of massive stars by analysing the resulting gamma-ray bursts. The lightweight X-ray mirror for SVOM weighs just 1 kg (2.2 lb). SVOM will add new capabilities to the work of finding gamma-ray bursts currently being done by the multinational satellite Swift.\r\n\r\nIts anti-solar pointing strategy makes the Earth cross the field of view of its payload every orbit.",
|
| 1308 |
+
"launch_designator": null,
|
| 1309 |
+
"type": "Astrophysics",
|
| 1310 |
+
"orbit": {
|
| 1311 |
+
"id": 8,
|
| 1312 |
+
"name": "Low Earth Orbit",
|
| 1313 |
+
"abbrev": "LEO"
|
| 1314 |
+
},
|
| 1315 |
+
"agencies": [],
|
| 1316 |
+
"info_urls": [],
|
| 1317 |
+
"vid_urls": []
|
| 1318 |
+
},
|
| 1319 |
+
"pad": {
|
| 1320 |
+
"id": 66,
|
| 1321 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/66/",
|
| 1322 |
+
"agency_id": 17,
|
| 1323 |
+
"name": "Launch Complex 3 (LC-3/LA-1)",
|
| 1324 |
+
"description": null,
|
| 1325 |
+
"info_url": null,
|
| 1326 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Xichang_Satellite_Launch_Center",
|
| 1327 |
+
"map_url": "https://www.google.com/maps?q=28.247209,102.02917",
|
| 1328 |
+
"latitude": "28.247209",
|
| 1329 |
+
"longitude": "102.02917",
|
| 1330 |
+
"location": {
|
| 1331 |
+
"id": 16,
|
| 1332 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/16/",
|
| 1333 |
+
"name": "Xichang Satellite Launch Center, People's Republic of China",
|
| 1334 |
+
"country_code": "CHN",
|
| 1335 |
+
"description": "",
|
| 1336 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_16_20200803142513.jpg",
|
| 1337 |
+
"timezone_name": "Asia/Shanghai",
|
| 1338 |
+
"total_launch_count": 206,
|
| 1339 |
+
"total_landing_count": 0
|
| 1340 |
+
},
|
| 1341 |
+
"country_code": "CHN",
|
| 1342 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_66_20200803143611.jpg",
|
| 1343 |
+
"total_launch_count": 91,
|
| 1344 |
+
"orbital_launch_attempt_count": 91
|
| 1345 |
+
},
|
| 1346 |
+
"webcast_live": false,
|
| 1347 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/long_march_2_image_20230803100234.jpeg",
|
| 1348 |
+
"infographic": null,
|
| 1349 |
+
"program": [],
|
| 1350 |
+
"orbital_launch_attempt_count": 6693,
|
| 1351 |
+
"location_launch_attempt_count": 207,
|
| 1352 |
+
"pad_launch_attempt_count": 92,
|
| 1353 |
+
"agency_launch_attempt_count": 475,
|
| 1354 |
+
"orbital_launch_attempt_count_year": 115,
|
| 1355 |
+
"location_launch_attempt_count_year": 9,
|
| 1356 |
+
"pad_launch_attempt_count_year": 6,
|
| 1357 |
+
"agency_launch_attempt_count_year": 21,
|
| 1358 |
+
"type": "normal"
|
| 1359 |
+
},
|
| 1360 |
+
{
|
| 1361 |
+
"id": "ad53f165-a118-43a6-ad46-6021accdaabd",
|
| 1362 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/launch/ad53f165-a118-43a6-ad46-6021accdaabd/",
|
| 1363 |
+
"slug": "falcon-heavy-goes-u",
|
| 1364 |
+
"name": "Falcon Heavy | GOES-U",
|
| 1365 |
+
"status": {
|
| 1366 |
+
"id": 1,
|
| 1367 |
+
"name": "Go for Launch",
|
| 1368 |
+
"abbrev": "Go",
|
| 1369 |
+
"description": "Current T-0 confirmed by official or reliable sources."
|
| 1370 |
+
},
|
| 1371 |
+
"last_updated": "2024-05-09T23:48:30Z",
|
| 1372 |
+
"net": "2024-06-25T21:16:00Z",
|
| 1373 |
+
"window_end": "2024-06-25T23:16:00Z",
|
| 1374 |
+
"window_start": "2024-06-25T21:16:00Z",
|
| 1375 |
+
"net_precision": {
|
| 1376 |
+
"id": 1,
|
| 1377 |
+
"name": "Minute",
|
| 1378 |
+
"abbrev": "MIN",
|
| 1379 |
+
"description": "The T-0 is accurate to the minute."
|
| 1380 |
+
},
|
| 1381 |
+
"probability": null,
|
| 1382 |
+
"weather_concerns": null,
|
| 1383 |
+
"holdreason": "",
|
| 1384 |
+
"failreason": "",
|
| 1385 |
+
"hashtag": null,
|
| 1386 |
+
"launch_service_provider": {
|
| 1387 |
+
"id": 121,
|
| 1388 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/121/",
|
| 1389 |
+
"name": "SpaceX",
|
| 1390 |
+
"type": "Commercial"
|
| 1391 |
+
},
|
| 1392 |
+
"rocket": {
|
| 1393 |
+
"id": 7449,
|
| 1394 |
+
"configuration": {
|
| 1395 |
+
"id": 161,
|
| 1396 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/config/launcher/161/",
|
| 1397 |
+
"name": "Falcon Heavy",
|
| 1398 |
+
"family": "Falcon",
|
| 1399 |
+
"full_name": "Falcon Heavy",
|
| 1400 |
+
"variant": "Heavy"
|
| 1401 |
+
}
|
| 1402 |
+
},
|
| 1403 |
+
"mission": {
|
| 1404 |
+
"id": 5841,
|
| 1405 |
+
"name": "GOES-U",
|
| 1406 |
+
"description": "The Geostationary Operational Environmental Satellite-S Series (GOES-S) is the second of the next generation of geostationary weather satellites. The four satellites of the series will provide advanced imaging with increased spatial resolution and faster coverage for more accurate forecasts, real-time mapping of lightning activity, and improved monitoring of solar activity.",
|
| 1407 |
+
"launch_designator": null,
|
| 1408 |
+
"type": "Earth Science",
|
| 1409 |
+
"orbit": {
|
| 1410 |
+
"id": 2,
|
| 1411 |
+
"name": "Geostationary Transfer Orbit",
|
| 1412 |
+
"abbrev": "GTO"
|
| 1413 |
+
},
|
| 1414 |
+
"agencies": [
|
| 1415 |
+
{
|
| 1416 |
+
"id": 44,
|
| 1417 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/agencies/44/",
|
| 1418 |
+
"name": "National Aeronautics and Space Administration",
|
| 1419 |
+
"featured": true,
|
| 1420 |
+
"type": "Government",
|
| 1421 |
+
"country_code": "USA",
|
| 1422 |
+
"abbrev": "NASA",
|
| 1423 |
+
"description": "The National Aeronautics and Space Administration is an independent agency of the executive branch of the United States federal government responsible for the civilian space program, as well as aeronautics and aerospace research. NASA have many launch facilities but most are inactive. The most commonly used pad will be LC-39B at Kennedy Space Center in Florida.",
|
| 1424 |
+
"administrator": "Administrator: Bill Nelson",
|
| 1425 |
+
"founding_year": "1958",
|
| 1426 |
+
"launchers": "Space Shuttle | SLS",
|
| 1427 |
+
"spacecraft": "Orion",
|
| 1428 |
+
"launch_library_url": null,
|
| 1429 |
+
"total_launch_count": 135,
|
| 1430 |
+
"consecutive_successful_launches": 11,
|
| 1431 |
+
"successful_launches": 115,
|
| 1432 |
+
"failed_launches": 20,
|
| 1433 |
+
"pending_launches": 6,
|
| 1434 |
+
"consecutive_successful_landings": 0,
|
| 1435 |
+
"successful_landings": 0,
|
| 1436 |
+
"failed_landings": 0,
|
| 1437 |
+
"attempted_landings": 0,
|
| 1438 |
+
"info_url": "http://www.nasa.gov",
|
| 1439 |
+
"wiki_url": "http://en.wikipedia.org/wiki/National_Aeronautics_and_Space_Administration",
|
| 1440 |
+
"logo_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_logo_20190207032448.png",
|
| 1441 |
+
"image_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_image_20190207032448.jpeg",
|
| 1442 |
+
"nation_url": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/national2520aeronautics2520and2520space2520administration_nation_20230803040809.jpg"
|
| 1443 |
+
}
|
| 1444 |
+
],
|
| 1445 |
+
"info_urls": [],
|
| 1446 |
+
"vid_urls": []
|
| 1447 |
+
},
|
| 1448 |
+
"pad": {
|
| 1449 |
+
"id": 87,
|
| 1450 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/pad/87/",
|
| 1451 |
+
"agency_id": 121,
|
| 1452 |
+
"name": "Launch Complex 39A",
|
| 1453 |
+
"description": null,
|
| 1454 |
+
"info_url": null,
|
| 1455 |
+
"wiki_url": "https://en.wikipedia.org/wiki/Kennedy_Space_Center_Launch_Complex_39#Launch_Pad_39A",
|
| 1456 |
+
"map_url": "https://www.google.com/maps?q=28.60822681,-80.60428186",
|
| 1457 |
+
"latitude": "28.60822681",
|
| 1458 |
+
"longitude": "-80.60428186",
|
| 1459 |
+
"location": {
|
| 1460 |
+
"id": 27,
|
| 1461 |
+
"url": "https://lldev.thespacedevs.com/2.2.0/location/27/",
|
| 1462 |
+
"name": "Kennedy Space Center, FL, USA",
|
| 1463 |
+
"country_code": "USA",
|
| 1464 |
+
"description": "",
|
| 1465 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_27_20200803142447.jpg",
|
| 1466 |
+
"timezone_name": "America/New_York",
|
| 1467 |
+
"total_launch_count": 238,
|
| 1468 |
+
"total_landing_count": 0
|
| 1469 |
+
},
|
| 1470 |
+
"country_code": "USA",
|
| 1471 |
+
"map_image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/pad_87_20200803143537.jpg",
|
| 1472 |
+
"total_launch_count": 180,
|
| 1473 |
+
"orbital_launch_attempt_count": 179
|
| 1474 |
+
},
|
| 1475 |
+
"webcast_live": false,
|
| 1476 |
+
"image": "https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/images/falcon_heavy_image_20220129192819.jpeg",
|
| 1477 |
+
"infographic": null,
|
| 1478 |
+
"program": [],
|
| 1479 |
+
"orbital_launch_attempt_count": 6694,
|
| 1480 |
+
"location_launch_attempt_count": 239,
|
| 1481 |
+
"pad_launch_attempt_count": 181,
|
| 1482 |
+
"agency_launch_attempt_count": 375,
|
| 1483 |
+
"orbital_launch_attempt_count_year": 116,
|
| 1484 |
+
"location_launch_attempt_count_year": 13,
|
| 1485 |
+
"pad_launch_attempt_count_year": 13,
|
| 1486 |
+
"agency_launch_attempt_count_year": 64,
|
| 1487 |
+
"type": "normal"
|
| 1488 |
+
}
|
| 1489 |
+
]
|
| 1490 |
+
}
|
tools/data/launch_schedule.csv
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Status Name,Status Description,Last Updated,Provider Name,Provider Type,Provider Abbrev,Rocket Name,Rocket Active,Rocket Reusable,Rocket Description,Rocket Family,Rocket Full Name,Mission Name,Mission Description,Mission Type,Orbit Name,Orbit Abbrev,Window Start,Window End,Webcast Live,Pad Name,Pad Location,Rocket Launch Mass,Rocket Thrust,Mission Payload Mass,Mission Payload Type,Total Launch Count,Successful Launches,Previous Flight,Turn Around Time Days,Safety Measures,Regulatory Approval
|
| 2 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-06-02T16:04:54Z,SpaceX,Commercial,,,,,,,,Starlink Group 8-5,A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.,Communications,Low Earth Orbit,LEO,2024-06-05T00:04:00Z,2024-06-05T03:27:00Z,False,Space Launch Complex 40,"{""id"": 12, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/12/"", ""name"": ""Cape Canaveral, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 956, ""total_landing_count"": 51}",,,,,,,,,,
|
| 3 |
+
Go for Launch,Current T-0 confirmed by official or reliable sources.,2024-06-02T16:38:52Z,Rocket Lab,Commercial,,,,,,,,PREFIRE And Ice (PREFIRE 2),"Second 6U Cubesat carrying a miniaturized IR spectrometer, covering 0- 45 μm at 0.84 μm spectral resolution, operating for one seasonal cycle for NASAs PREFIRE (Polar Radiant Energy in the Far-InfraRed Experiment) mission.",Earth Science,Polar Orbit,PO,2024-06-05T03:00:00Z,2024-06-05T03:00:00Z,False,Rocket Lab Launch Complex 1B,"{""id"": 10, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/10/"", ""name"": ""Onenui Station, Mahia Peninsula, New Zealand"", ""country_code"": ""NZL"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_10_20200803142509.jpg"", ""timezone_name"": ""Pacific/Auckland"", ""total_launch_count"": 44, ""total_landing_count"": 17}",,,,,,,,,,
|
| 4 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-05-31T00:43:06Z,SpaceX,Commercial,,,,,,,,Starlink Group 8-8,A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.,Communications,Low Earth Orbit,LEO,2024-06-05T05:12:00Z,2024-06-05T09:12:00Z,False,Space Launch Complex 4E,"{""id"": 11, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/11/"", ""name"": ""Vandenberg SFB, CA, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_11_20200803142416.jpg"", ""timezone_name"": ""America/Los_Angeles"", ""total_launch_count"": 757, ""total_landing_count"": 19}",,,,,,,,,,
|
| 5 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-06-02T16:42:58Z,United Launch Alliance,Commercial,,,,,,,,CST-100 Starliner Crewed Flight Test,"This is the first crewed test flight of Starliner spacecraft. It will carry NASA astronauts Barry Wilmore and
|
| 6 |
+
Suni Williams to the International Space Station.",Test Flight,Low Earth Orbit,LEO,2024-06-05T14:52:00Z,2024-06-05T14:52:00Z,False,Space Launch Complex 41,"{""id"": 12, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/12/"", ""name"": ""Cape Canaveral, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 956, ""total_landing_count"": 51}",,,,,,,,,,
|
| 7 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-06-01T15:41:13Z,SpaceX,Commercial,,,,,,,,Integrated Flight Test 4,Fourth test flight of the two-stage Starship launch vehicle.,Test Flight,Suborbital,Sub,2024-06-06T12:00:00Z,2024-06-06T16:00:00Z,False,Orbital Launch Mount A,"{""id"": 143, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/143/"", ""name"": ""SpaceX Starbase, TX, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_143_20200803142438.jpg"", ""timezone_name"": ""America/Chicago"", ""total_launch_count"": 12, ""total_landing_count"": 9}",,,,,,,,,,
|
| 8 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-06-01T07:19:07Z,SpaceX,Commercial,,,,,,,,Starlink Group 10-1,A batch of satellites for the Starlink mega-constellation - SpaceX's project for space-based Internet communication system.,Communications,Low Earth Orbit,LEO,2024-06-07T22:58:00Z,2024-06-08T02:21:00Z,False,Space Launch Complex 40,"{""id"": 12, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/12/"", ""name"": ""Cape Canaveral, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 956, ""total_landing_count"": 51}",,,,,,,,,,
|
| 9 |
+
To Be Determined,Current date is a placeholder or rough estimation based on unreliable or interpreted sources.,2024-05-01T23:25:01Z,Virgin Galactic,Private,,,,,,,,Galactic 07,Seventh commercial Virgin Galactic mission.,Tourism,Suborbital,Sub,2024-06-08T00:00:00Z,2024-06-08T00:00:00Z,False,Spaceport America,"{""id"": 144, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/144/"", ""name"": ""Air launch to Suborbital flight"", ""country_code"": ""???"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_144_20200803142439.jpg"", ""timezone_name"": """", ""total_launch_count"": 85, ""total_landing_count"": 0}",,,,,,,,,,
|
| 10 |
+
To Be Determined,Current date is a placeholder or rough estimation based on unreliable or interpreted sources.,2024-05-28T02:36:44Z,SpaceX,Commercial,,,,,,,,Astra 1P/SES-24,"ASTRA 1P, a classic wide-beam satellite, will support SES’s prime TV neighbourhood and enable content owners, private and public broadcasters across Germany, France and Spain to continue broadcasting satellite TV channels in the highest-picture quality in the most cost-efficient manner. It will be based on the full electric and powerful Spacebus NEO platform developed by Thales Alenia Space and already flight proven in orbit.",Communications,Geostationary Transfer Orbit,GTO,2024-06-10T00:00:00Z,2024-06-10T00:00:00Z,False,Space Launch Complex 40,"{""id"": 12, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/12/"", ""name"": ""Cape Canaveral, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_12_20200803142519.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 956, ""total_landing_count"": 51}",,,,,,,,,,
|
| 11 |
+
To Be Confirmed,Awaiting official confirmation - current date is known with some certainty.,2024-01-09T12:21:52Z,China Aerospace Science and Technology Corporation,Government,,,,,,,,Space Variable Objects Monitor (SVOM),"The Space Variable Objects Monitor (SVOM) is a French/Chinese planned small X-ray telescope satellite under development by China National Space Administration (CNSA) and the Centre National d'Études Spatiales (CNES).
|
| 12 |
+
|
| 13 |
+
SVOM will study the explosions of massive stars by analysing the resulting gamma-ray bursts. The lightweight X-ray mirror for SVOM weighs just 1 kg (2.2 lb). SVOM will add new capabilities to the work of finding gamma-ray bursts currently being done by the multinational satellite Swift.
|
| 14 |
+
|
| 15 |
+
Its anti-solar pointing strategy makes the Earth cross the field of view of its payload every orbit.",Astrophysics,Low Earth Orbit,LEO,2024-06-24T10:00:00Z,2024-06-24T10:00:00Z,False,Launch Complex 3 (LC-3/LA-1),"{""id"": 16, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/16/"", ""name"": ""Xichang Satellite Launch Center, People's Republic of China"", ""country_code"": ""CHN"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_16_20200803142513.jpg"", ""timezone_name"": ""Asia/Shanghai"", ""total_launch_count"": 206, ""total_landing_count"": 0}",,,,,,,,,,
|
| 16 |
+
Go for Launch,Current T-0 confirmed by official or reliable sources.,2024-05-09T23:48:30Z,SpaceX,Commercial,,,,,,,,GOES-U,"The Geostationary Operational Environmental Satellite-S Series (GOES-S) is the second of the next generation of geostationary weather satellites. The four satellites of the series will provide advanced imaging with increased spatial resolution and faster coverage for more accurate forecasts, real-time mapping of lightning activity, and improved monitoring of solar activity.",Earth Science,Geostationary Transfer Orbit,GTO,2024-06-25T21:16:00Z,2024-06-25T23:16:00Z,False,Launch Complex 39A,"{""id"": 27, ""url"": ""https://lldev.thespacedevs.com/2.2.0/location/27/"", ""name"": ""Kennedy Space Center, FL, USA"", ""country_code"": ""USA"", ""description"": """", ""map_image"": ""https://spacelaunchnow-prod-east.nyc3.digitaloceanspaces.com/media/launch_images/location_27_20200803142447.jpg"", ""timezone_name"": ""America/New_York"", ""total_launch_count"": 238, ""total_landing_count"": 0}",,,,,,,,,,
|
tools/jira_tools.py
ADDED
|
@@ -0,0 +1,493 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from atlassian import Jira
|
| 2 |
+
from dotenv import load_dotenv
|
| 3 |
+
load_dotenv()
|
| 4 |
+
import os
|
| 5 |
+
import json
|
| 6 |
+
from typing import Optional
|
| 7 |
+
from langchain.tools import BaseTool, StructuredTool, tool
|
| 8 |
+
from langchain_openai import ChatOpenAI
|
| 9 |
+
from langchain_core.prompts import ChatPromptTemplate
|
| 10 |
+
from langchain_core.output_parsers import StrOutputParser
|
| 11 |
+
from langchain_core.runnables import RunnablePassthrough
|
| 12 |
+
from langchain.tools import tool
|
| 13 |
+
import re
|
| 14 |
+
from html import unescape
|
| 15 |
+
|
| 16 |
+
JIRA_API_TOKEN = os.getenv("JIRA_API_TOKEN")
|
| 17 |
+
JIRA_USERNAME = os.getenv("JIRA_USERNAME")
|
| 18 |
+
JIRA_INSTANCE_URL = os.getenv("JIRA_INSTANCE_URL")
|
| 19 |
+
|
| 20 |
+
jira = Jira(url=JIRA_INSTANCE_URL,
|
| 21 |
+
username=JIRA_USERNAME,
|
| 22 |
+
token=JIRA_API_TOKEN)
|
| 23 |
+
|
| 24 |
+
def parse_tool_input(input_string: str) -> str:
|
| 25 |
+
"""Removes backtick symbols from the input string."""
|
| 26 |
+
return input_string.replace('```', '')
|
| 27 |
+
|
| 28 |
+
def strip_html(text: str):
|
| 29 |
+
""" Remove HTML tags and unescape HTML entities. """
|
| 30 |
+
text = parse_tool_input(text)
|
| 31 |
+
try:
|
| 32 |
+
text = re.sub('<[^<]+?>', '', text) # Remove HTML tags
|
| 33 |
+
except Exception as e:
|
| 34 |
+
return f"An error occurred while stripping HTML: {str(e)}"
|
| 35 |
+
return unescape(text)
|
| 36 |
+
|
| 37 |
+
@tool
|
| 38 |
+
def get_all_projects(max_projects: str):
|
| 39 |
+
"""Tool that fetches all projects from Jira. The input parameter is the number of projects to be returned.
|
| 40 |
+
This tool is useful for locating a projectid based on a project name or description in the user's query.
|
| 41 |
+
If you can't find a project that the user mentions, try using this tool.
|
| 42 |
+
This tool does not retrieve Teams, Timelines, Boards, or Issues. It is simply a directory of the projects."""
|
| 43 |
+
|
| 44 |
+
try:
|
| 45 |
+
projects = jira.projects()
|
| 46 |
+
print(projects)
|
| 47 |
+
except Exception as e:
|
| 48 |
+
print(e)
|
| 49 |
+
return f"An error occurred while fetching projects: {str(e)}"
|
| 50 |
+
|
| 51 |
+
project_details = []
|
| 52 |
+
for project in projects:
|
| 53 |
+
project_info = {}
|
| 54 |
+
if project.get('key') != 'N/A':
|
| 55 |
+
project_info['key'] = project.get('key')
|
| 56 |
+
if project.get('name') != 'N/A':
|
| 57 |
+
project_info['name'] = project.get('name')
|
| 58 |
+
lead_display_name = project.get('lead', {}).get('displayName')
|
| 59 |
+
if lead_display_name != 'N/A':
|
| 60 |
+
project_info['lead'] = lead_display_name
|
| 61 |
+
category_name = project.get('projectCategory', {}).get('name')
|
| 62 |
+
if category_name != 'N/A':
|
| 63 |
+
project_info['category'] = category_name
|
| 64 |
+
|
| 65 |
+
project_details.append(project_info)
|
| 66 |
+
|
| 67 |
+
return project_details
|
| 68 |
+
|
| 69 |
+
@tool
|
| 70 |
+
def get_project(projectId: str):
|
| 71 |
+
"""Tool that fetches all information from a specfic project in Jira using its projectId (same as project key).
|
| 72 |
+
Useful when you're looking for things like project timelines, milestones, sprint detailes, resources, status, lead, or scrum info."""
|
| 73 |
+
|
| 74 |
+
#projectId = parse_tool_input(projectId)
|
| 75 |
+
|
| 76 |
+
try:
|
| 77 |
+
project = jira.project(projectId)
|
| 78 |
+
|
| 79 |
+
# Basic project details
|
| 80 |
+
project_details = {}
|
| 81 |
+
|
| 82 |
+
name = project.get('name')
|
| 83 |
+
if name:
|
| 84 |
+
project_details['name'] = name
|
| 85 |
+
|
| 86 |
+
key = project.get('key')
|
| 87 |
+
if key:
|
| 88 |
+
project_details['key'] = key
|
| 89 |
+
|
| 90 |
+
lead = project.get('lead', {}).get('displayName')
|
| 91 |
+
if lead:
|
| 92 |
+
project_details['lead'] = lead
|
| 93 |
+
|
| 94 |
+
status = project.get('fields', {}).get('status', {}).get('name')
|
| 95 |
+
if status:
|
| 96 |
+
project_details['status'] = status
|
| 97 |
+
|
| 98 |
+
timeline = project.get('fields', {}).get('timeline')
|
| 99 |
+
if timeline:
|
| 100 |
+
project_details['timeline'] = timeline
|
| 101 |
+
|
| 102 |
+
risks = project.get('fields', {}).get('risks')
|
| 103 |
+
if risks:
|
| 104 |
+
project_details['risks'] = risks
|
| 105 |
+
|
| 106 |
+
milestones = project.get('fields', {}).get('milestones')
|
| 107 |
+
if milestones:
|
| 108 |
+
project_details['milestones'] = milestones
|
| 109 |
+
|
| 110 |
+
sprint_details = project.get('fields', {}).get('customfield_sprintDetails')
|
| 111 |
+
if sprint_details:
|
| 112 |
+
project_details['sprint_details'] = sprint_details
|
| 113 |
+
|
| 114 |
+
resources = project.get('fields', {}).get('customfield_resources')
|
| 115 |
+
if resources:
|
| 116 |
+
project_details['resources'] = resources
|
| 117 |
+
|
| 118 |
+
scrum_info = project.get('fields', {}).get('customfield_scrumInfo')
|
| 119 |
+
if scrum_info:
|
| 120 |
+
project_details['scrum_info'] = scrum_info
|
| 121 |
+
|
| 122 |
+
return project_details
|
| 123 |
+
|
| 124 |
+
except Exception as e:
|
| 125 |
+
return f"An error occurred while fetching project: {str(e)}"
|
| 126 |
+
|
| 127 |
+
@tool
|
| 128 |
+
def get_issue(issueId: str):
|
| 129 |
+
"""Tool that fetches a specific issue from Jira using its issueId."""
|
| 130 |
+
|
| 131 |
+
exclude_irrelevant = True
|
| 132 |
+
|
| 133 |
+
#issueId = parse_tool_input(issueId)
|
| 134 |
+
try:
|
| 135 |
+
issue = jira.issue(issueId)
|
| 136 |
+
|
| 137 |
+
# Access fields as dictionary keys
|
| 138 |
+
fields = issue.get('fields', {})
|
| 139 |
+
summary = fields.get('summary')
|
| 140 |
+
description = fields.get('description')
|
| 141 |
+
status_name = fields.get('status', {}).get('name')
|
| 142 |
+
priority_name = fields.get('priority', {}).get('name')
|
| 143 |
+
|
| 144 |
+
# Check if assignee is not None before getting displayName
|
| 145 |
+
assignee_field = fields.get('assignee')
|
| 146 |
+
assignee_name = assignee_field.get('displayName') if assignee_field else None
|
| 147 |
+
|
| 148 |
+
details = {}
|
| 149 |
+
if summary:
|
| 150 |
+
details['title'] = summary
|
| 151 |
+
if description:
|
| 152 |
+
details['description'] = strip_html(description)
|
| 153 |
+
if status_name:
|
| 154 |
+
details['status'] = status_name
|
| 155 |
+
if priority_name:
|
| 156 |
+
details['priority'] = priority_name
|
| 157 |
+
if assignee_name:
|
| 158 |
+
details['assignee'] = assignee_name
|
| 159 |
+
|
| 160 |
+
if exclude_irrelevant:
|
| 161 |
+
# Remove irrelevant fields
|
| 162 |
+
irrelevant_keys = ['self', 'id', 'issuetype', 'hierarchyLevel', 'creator.self', 'assignee.self', 'iconUrl', 'timeZone', 'avatarUrls', 'accountId', 'statusCategory', 'subtask', 'avatarId']
|
| 163 |
+
for key in list(details.keys()):
|
| 164 |
+
if any(irrelevant_key in key for irrelevant_key in irrelevant_keys):
|
| 165 |
+
del details[key]
|
| 166 |
+
|
| 167 |
+
return str(details)
|
| 168 |
+
|
| 169 |
+
except Exception as e:
|
| 170 |
+
return f"An error occurred while fetching issue: {str(e)}"
|
| 171 |
+
|
| 172 |
+
@tool
|
| 173 |
+
def get_all_issues_for_project(projectId: str):
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId.
|
| 177 |
+
Use this tool to get real-time updates on all issues for a specific project"""
|
| 178 |
+
|
| 179 |
+
#status = "ALL"
|
| 180 |
+
write_file = False
|
| 181 |
+
|
| 182 |
+
#projectId = parse_tool_input(projectId)
|
| 183 |
+
#status = parse_tool_input(status)
|
| 184 |
+
try:
|
| 185 |
+
project = jira.project(projectId)
|
| 186 |
+
|
| 187 |
+
jql_query = f'project = {projectId}'
|
| 188 |
+
|
| 189 |
+
issues = jira.jql(jql_query)
|
| 190 |
+
|
| 191 |
+
if not issues:
|
| 192 |
+
return "No issues found for the specified project and status."
|
| 193 |
+
issues = issues['issues']
|
| 194 |
+
|
| 195 |
+
if write_file:
|
| 196 |
+
with open('issues.json', 'w') as f:
|
| 197 |
+
json.dump(issues, f, indent=4)
|
| 198 |
+
|
| 199 |
+
parsed_issues = []
|
| 200 |
+
for issue in issues:
|
| 201 |
+
if 'fields' in issue:
|
| 202 |
+
def parse_issue_fields(fields):
|
| 203 |
+
keys_to_remove = ['iconUrl', 'timeZone', 'avatarUrls', 'accountId', 'statusCategory', 'subtask', 'avatarId', 'issuetype']
|
| 204 |
+
parsed_fields = {}
|
| 205 |
+
for key in fields:
|
| 206 |
+
if isinstance(fields[key], dict):
|
| 207 |
+
if key == 'priority':
|
| 208 |
+
parsed_fields[key] = {k: v for k, v in fields[key].items() if k == 'name'}
|
| 209 |
+
# elif key == 'issuetype':
|
| 210 |
+
# parsed_fields[key] = {k: v for k, v in fields[key].items() if k == 'name' or k == 'description'}
|
| 211 |
+
elif key == 'status':
|
| 212 |
+
parsed_fields[key] = {k: v for k, v in fields[key].items() if k == 'name' or k == 'description'}
|
| 213 |
+
elif key in ['creator', 'assignee']:
|
| 214 |
+
parsed_fields[key] = {k: v for k, v in fields[key].items() if k == 'displayName' or k == 'emailAddress'}
|
| 215 |
+
else:
|
| 216 |
+
parsed_fields[key] = fields[key]
|
| 217 |
+
else:
|
| 218 |
+
parsed_fields[key] = fields[key]
|
| 219 |
+
return parsed_fields
|
| 220 |
+
|
| 221 |
+
fields = issue['fields']
|
| 222 |
+
parsed_fields = parse_issue_fields(fields)
|
| 223 |
+
issue_details = {}
|
| 224 |
+
|
| 225 |
+
if (description := parsed_fields.get('description')) is not None:
|
| 226 |
+
issue_details['description'] = description
|
| 227 |
+
if (priority := parsed_fields.get('priority')) is not None:
|
| 228 |
+
issue_details['priority'] = priority
|
| 229 |
+
if (issue_status := parsed_fields.get('status')) is not None:
|
| 230 |
+
issue_details['status'] = issue_status
|
| 231 |
+
if (assignee := parsed_fields.get('assignee')) is not None:
|
| 232 |
+
issue_details['assignee'] = assignee
|
| 233 |
+
if (summary := parsed_fields.get('summary')) is not None:
|
| 234 |
+
issue_details['summary'] = summary
|
| 235 |
+
parsed_issues.append(issue_details)
|
| 236 |
+
|
| 237 |
+
if write_file:
|
| 238 |
+
with open('parsed_issues.json', 'w') as f:
|
| 239 |
+
json.dump(parsed_issues, f, indent=4)
|
| 240 |
+
|
| 241 |
+
except Exception as e:
|
| 242 |
+
return f"An error occurred while writing parsed issues to file: {str(e)}"
|
| 243 |
+
|
| 244 |
+
return str(parsed_issues)
|
| 245 |
+
|
| 246 |
+
def get_issues_for_project_with_status(projectId: str, status: str):
|
| 247 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId and a status.
|
| 248 |
+
Use this tool to get real-time updates on all issues for a specific project.
|
| 249 |
+
Available statuses: BACKLOG, IN PROGRESS, OPEN, DONE
|
| 250 |
+
example input:
|
| 251 |
+
"""
|
| 252 |
+
|
| 253 |
+
write_file = False
|
| 254 |
+
#projectId = parse_tool_input(projectId)
|
| 255 |
+
#status = parse_tool_input(status)
|
| 256 |
+
try:
|
| 257 |
+
project = jira.project(projectId)
|
| 258 |
+
|
| 259 |
+
jql_query = f"project = {projectId} AND status IN ('{status}') ORDER BY issuekey"
|
| 260 |
+
|
| 261 |
+
issues = jira.jql(jql_query)
|
| 262 |
+
|
| 263 |
+
if not issues:
|
| 264 |
+
return "No issues found for the specified project and status."
|
| 265 |
+
issues = issues['issues']
|
| 266 |
+
|
| 267 |
+
if write_file:
|
| 268 |
+
with open('issues.json', 'w') as f:
|
| 269 |
+
json.dump(issues, f, indent=4)
|
| 270 |
+
|
| 271 |
+
parsed_issues = []
|
| 272 |
+
for issue in issues:
|
| 273 |
+
if 'fields' in issue:
|
| 274 |
+
def parse_issue_fields(fields):
|
| 275 |
+
keys_to_remove = ['iconUrl', 'timeZone', 'avatarUrls', 'accountId', 'statusCategory', 'subtask', 'avatarId', 'issuetype']
|
| 276 |
+
parsed_fields = {}
|
| 277 |
+
for key in fields:
|
| 278 |
+
if isinstance(fields[key], dict):
|
| 279 |
+
if key == 'priority':
|
| 280 |
+
parsed_fields[key] = {k: v for k, v in fields[key].items() if k == 'name'}
|
| 281 |
+
elif key == 'issuetype':
|
| 282 |
+
parsed_fields[key] = {k: v for k, v in fields[key].items() if k == 'name' or k == 'description'}
|
| 283 |
+
elif key == 'status':
|
| 284 |
+
parsed_fields[key] = {k: v for k, v in fields[key].items() if k == 'name' or k == 'description'}
|
| 285 |
+
elif key in ['creator', 'assignee']:
|
| 286 |
+
parsed_fields[key] = {k: v for k, v in fields[key].items() if k == 'displayName' or k == 'emailAddress'}
|
| 287 |
+
else:
|
| 288 |
+
parsed_fields[key] = fields[key]
|
| 289 |
+
else:
|
| 290 |
+
parsed_fields[key] = fields[key]
|
| 291 |
+
return parsed_fields
|
| 292 |
+
|
| 293 |
+
fields = issue['fields']
|
| 294 |
+
parsed_fields = parse_issue_fields(fields)
|
| 295 |
+
issue_details = {}
|
| 296 |
+
|
| 297 |
+
if parsed_fields.get('description') is not None:
|
| 298 |
+
issue_details['description'] = parsed_fields.get('description')
|
| 299 |
+
if parsed_fields.get('priority') is not None:
|
| 300 |
+
issue_details['priority'] = parsed_fields.get('priority')
|
| 301 |
+
if parsed_fields.get('status') is not None:
|
| 302 |
+
issue_details['status'] = parsed_fields.get('status')
|
| 303 |
+
if parsed_fields.get('assignee') is not None:
|
| 304 |
+
issue_details['assignee'] = parsed_fields.get('assignee')
|
| 305 |
+
if parsed_fields.get('comments') is not None:
|
| 306 |
+
issue_details['comments'] = parsed_fields.get('comments')
|
| 307 |
+
if parsed_fields.get('summary') is not None:
|
| 308 |
+
issue_details['summary'] = parsed_fields.get('summary')
|
| 309 |
+
|
| 310 |
+
parsed_issues.append(issue_details)
|
| 311 |
+
|
| 312 |
+
if write_file:
|
| 313 |
+
with open('parsed_issues.json', 'w') as f:
|
| 314 |
+
json.dump(parsed_issues, f, indent=4)
|
| 315 |
+
|
| 316 |
+
except Exception as e:
|
| 317 |
+
return f"An error occurred while writing parsed issues to file: {str(e)}"
|
| 318 |
+
|
| 319 |
+
return str(parsed_issues)
|
| 320 |
+
|
| 321 |
+
@tool
|
| 322 |
+
def get_open_issues_for_project(projectId: str):
|
| 323 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId and a status.
|
| 324 |
+
Use this tool to get info on all OPEN issues for a specific project"""
|
| 325 |
+
try:
|
| 326 |
+
return get_issues_for_project_with_status(projectId, "OPEN")
|
| 327 |
+
except Exception as e:
|
| 328 |
+
return f"An error occurred while fetching OPEN issues: {str(e)}"
|
| 329 |
+
|
| 330 |
+
@tool
|
| 331 |
+
def get_closed_issues_for_project(projectId: str):
|
| 332 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId and a status.
|
| 333 |
+
Use this tool to get info on all CLOSED issues for a specific project"""
|
| 334 |
+
try:
|
| 335 |
+
return get_issues_for_project_with_status(projectId, "CLOSED")
|
| 336 |
+
except Exception as e:
|
| 337 |
+
return f"An error occurred while fetching CLOSED issues: {str(e)}"
|
| 338 |
+
|
| 339 |
+
@tool
|
| 340 |
+
def get_done_issues_for_project(projectId: str):
|
| 341 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId and a status.
|
| 342 |
+
Use this tool to get info on all DONE issues for a specific project"""
|
| 343 |
+
try:
|
| 344 |
+
return get_issues_for_project_with_status(projectId, "DONE")
|
| 345 |
+
except Exception as e:
|
| 346 |
+
return f"An error occurred while fetching DONE issues: {str(e)}"
|
| 347 |
+
|
| 348 |
+
@tool
|
| 349 |
+
def get_in_progress_issues_for_project(projectId: str):
|
| 350 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId and a status.
|
| 351 |
+
Use this tool to get info on all IN PROGRESS issues for a specific project"""
|
| 352 |
+
try:
|
| 353 |
+
return get_issues_for_project_with_status(projectId, "IN PROGRESS")
|
| 354 |
+
except Exception as e:
|
| 355 |
+
return f"An error occurred while fetching IN PROGRESS issues: {str(e)}"
|
| 356 |
+
|
| 357 |
+
|
| 358 |
+
@tool
|
| 359 |
+
def get_planned_issues_for_project(projectId: str):
|
| 360 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId and a status.
|
| 361 |
+
Use this tool to get info on all PLANNED issues for a specific project"""
|
| 362 |
+
try:
|
| 363 |
+
return get_issues_for_project_with_status(projectId, "PLANNED")
|
| 364 |
+
except Exception as e:
|
| 365 |
+
return f"An error occurred while fetching PLANNED issues: {str(e)}"
|
| 366 |
+
|
| 367 |
+
@tool
|
| 368 |
+
def get_canceled_issues_for_project(projectId: str):
|
| 369 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId and a status.
|
| 370 |
+
Use this tool to get info on all CANCELED issues for a specific project"""
|
| 371 |
+
try:
|
| 372 |
+
return get_issues_for_project_with_status(projectId, "CANCELED")
|
| 373 |
+
except Exception as e:
|
| 374 |
+
return f"An error occurred while fetching CANCELED issues: {str(e)}"
|
| 375 |
+
|
| 376 |
+
@tool
|
| 377 |
+
def get_blocked_issues_for_project(projectId: str):
|
| 378 |
+
"""Tool that fetches all issues for a specific project in Jira using its projectId and a status.
|
| 379 |
+
Use this tool to get info on all BLOCKED issues for a specific project"""
|
| 380 |
+
try:
|
| 381 |
+
return get_issues_for_project_with_status(projectId, "BLOCKED")
|
| 382 |
+
except Exception as e:
|
| 383 |
+
return f"An error occurred while fetching BLOCKED issues: {str(e)}"
|
| 384 |
+
|
| 385 |
+
|
| 386 |
+
|
| 387 |
+
@tool
|
| 388 |
+
def get_sprint(boardId: str):
|
| 389 |
+
"""Get sprint details based on sprint boardId"""
|
| 390 |
+
|
| 391 |
+
boardId = parse_tool_input(boardId)
|
| 392 |
+
try:
|
| 393 |
+
sprints = jira.sprints(boardId)
|
| 394 |
+
except Exception as e:
|
| 395 |
+
return f"An error occurred while fetching sprints: {str(e)}"
|
| 396 |
+
return sprints
|
| 397 |
+
|
| 398 |
+
def get_users_from_group(groupId: str):
|
| 399 |
+
#groupId = parse_tool_input(groupId)
|
| 400 |
+
try:
|
| 401 |
+
users = jira.get_all_users_from_group(groupId)
|
| 402 |
+
except Exception as e:
|
| 403 |
+
return f"An error occurred while fetching users from group: {str(e)}"
|
| 404 |
+
return users
|
| 405 |
+
|
| 406 |
+
|
| 407 |
+
@tool
|
| 408 |
+
def create_issue(projectId: str, summary: str, description: str, issue_type: str = "Task"):
|
| 409 |
+
"""Tool that creates a new issue in a Jira project.
|
| 410 |
+
|
| 411 |
+
Args:
|
| 412 |
+
projectId (str): The ID of the project where the issue will be created.
|
| 413 |
+
summary (str): The summary or title of the issue.
|
| 414 |
+
description (str): A detailed description of the issue.
|
| 415 |
+
issue_type (str): The type of issue to create, defaults to 'Task'.
|
| 416 |
+
|
| 417 |
+
Returns:
|
| 418 |
+
str: A message indicating the success or failure of the issue creation.
|
| 419 |
+
"""
|
| 420 |
+
try:
|
| 421 |
+
issue_dict = {
|
| 422 |
+
'project': {'id': projectId},
|
| 423 |
+
'summary': summary,
|
| 424 |
+
'description': description,
|
| 425 |
+
'issuetype': {'name': issue_type},
|
| 426 |
+
}
|
| 427 |
+
new_issue = jira.create_issue(fields=issue_dict)
|
| 428 |
+
return f"Issue created successfully: {new_issue.key}"
|
| 429 |
+
except Exception as e:
|
| 430 |
+
return f"An error occurred while creating the issue: {str(e)}"
|
| 431 |
+
|
| 432 |
+
|
| 433 |
+
@tool
|
| 434 |
+
def update_issue_status(issue_key: str, new_status: str):
|
| 435 |
+
"""Tool that updates the status of an existing issue in Jira.
|
| 436 |
+
|
| 437 |
+
Args:
|
| 438 |
+
issue_key (str): The key of the issue to update.
|
| 439 |
+
new_status (str): The new status to set for the issue.
|
| 440 |
+
|
| 441 |
+
Returns:
|
| 442 |
+
str: A message indicating the success or failure of the status update.
|
| 443 |
+
"""
|
| 444 |
+
try:
|
| 445 |
+
issue = jira.issue(issue_key)
|
| 446 |
+
transitions = jira.transitions(issue)
|
| 447 |
+
transition_id = [t['id'] for t in transitions if t['name'].lower() == new_status.lower()]
|
| 448 |
+
|
| 449 |
+
if not transition_id:
|
| 450 |
+
return f"No transition found for the status '{new_status}'"
|
| 451 |
+
|
| 452 |
+
jira.transition_issue(issue, transition_id[0])
|
| 453 |
+
return f"Status of issue {issue_key} updated to {new_status}"
|
| 454 |
+
except Exception as e:
|
| 455 |
+
return f"An error occurred while updating the issue status: {str(e)}"
|
| 456 |
+
|
| 457 |
+
@tool
|
| 458 |
+
def assign_issue_to_user(issue_key: str, account_id: str):
|
| 459 |
+
"""Tool that assigns an existing issue in Jira to a specified user.
|
| 460 |
+
|
| 461 |
+
Args:
|
| 462 |
+
issue_key (str): The key of the issue to assign.
|
| 463 |
+
account_id (str): The account ID of the user to whom the issue will be assigned.
|
| 464 |
+
|
| 465 |
+
Returns:
|
| 466 |
+
str: A message indicating the success or failure of the assignment.
|
| 467 |
+
"""
|
| 468 |
+
try:
|
| 469 |
+
issue = jira.issue(issue_key)
|
| 470 |
+
jira.assign_issue(issue, account_id)
|
| 471 |
+
return f"Issue {issue_key} assigned successfully to user with account ID {account_id}"
|
| 472 |
+
except Exception as e:
|
| 473 |
+
return f"An error occurred while assigning the issue: {str(e)}"
|
| 474 |
+
|
| 475 |
+
|
| 476 |
+
|
| 477 |
+
if __name__ == "__main__":
|
| 478 |
+
|
| 479 |
+
try:
|
| 480 |
+
all_projects = get_all_projects.run(tool_input={"max_projects": 100})
|
| 481 |
+
print("All Projects:")
|
| 482 |
+
for project in all_projects:
|
| 483 |
+
print(project)
|
| 484 |
+
except Exception as e:
|
| 485 |
+
print(f"An error occurred while retrieving all projects: {str(e)}")
|
| 486 |
+
|
| 487 |
+
project_id = "VE"
|
| 488 |
+
try:
|
| 489 |
+
open_issues = get_all_issues_for_project.run(tool_input={"projectId": project_id})
|
| 490 |
+
|
| 491 |
+
print(json.dumps(open_issues, indent=4))
|
| 492 |
+
except Exception as e:
|
| 493 |
+
print(f"An error occurred while fetching open issues for project {project_id}: {str(e)}")
|
tools/jql_prompt.py
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
jql_prompt = """
|
| 2 |
+
|
| 3 |
+
Use Jira Query Language (jql) to a query over the Jira Database.
|
| 4 |
+
|
| 5 |
+
Usage:
|
| 6 |
+
|
| 7 |
+
Select all issues that are unscheduled or in an unreleased fix version
|
| 8 |
+
project = JSW AND (fixVersion in unreleasedVersions() or fixVersion is empty
|
| 9 |
+
|
| 10 |
+
Select all issues you are interested in
|
| 11 |
+
(assignee = currentUser() or reporter = currentUser()) AND (fixVersion in unreleasedVersions() or fixVersion is empty)
|
| 12 |
+
|
| 13 |
+
Select all issues for a team (using a label custom field named “team”)
|
| 14 |
+
(team = ateam or team = dreamteam or team = engineroom) AND (fixVersion in unreleasedVersions() or fixVersion is empty)
|
| 15 |
+
|
| 16 |
+
Only select my bugs for a bug fix team
|
| 17 |
+
project = JSW AND team = bugfix AND issuetype = bug AND (fixVersion in unreleasedVersions() or fixVersion is empty)
|
| 18 |
+
Show all issues in the next fix version to be released
|
| 19 |
+
fixVersion = earliestUnreleasedVersion(PROJECT KEY)
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
JQL Fields:
|
| 23 |
+
Assignee: assignee = "username"
|
| 24 |
+
Epic Link: Epic Link = "Epic-123"
|
| 25 |
+
Resolved: resolved >= "-2w"
|
| 26 |
+
Affected Version: affectedVersion = "1.0"
|
| 27 |
+
Filter: filter = "MySavedFilter"
|
| 28 |
+
Sprint: Sprint = 23
|
| 29 |
+
Attachments: attachments is EMPTY
|
| 30 |
+
Fix Version: fixVersion in ("v1.0", "v2.0")
|
| 31 |
+
Status: status = "In Progress"
|
| 32 |
+
Comment: comment ~ "urgent"
|
| 33 |
+
Issue Key: issueKey = "PROJ-123"
|
| 34 |
+
Summary: summary ~ "release"
|
| 35 |
+
Component: component = "Backend"
|
| 36 |
+
Labels: labels in ("bugfix", "frontend")
|
| 37 |
+
Text: text ~ "critical"
|
| 38 |
+
Created: created >= -1w
|
| 39 |
+
Last Viewed: lastViewed < -1d
|
| 40 |
+
Time Spent: timeSpent > "4h"
|
| 41 |
+
Creator: creator = currentUser()
|
| 42 |
+
Priority: priority = Highest
|
| 43 |
+
Voter: voter = currentUser()
|
| 44 |
+
Description: description ~ "login issue"
|
| 45 |
+
Project: project = "PROJ"
|
| 46 |
+
Reporter: reporter in membersOf("team")
|
| 47 |
+
Custom Field: customfield_10010 = "value"
|
| 48 |
+
ScriptRunner Functions:
|
| 49 |
+
EpicsOf: issueFunction in epicsOf("status = 'Open'")
|
| 50 |
+
issuesInEpics: issueFunction in issuesInEpics("status = 'In Progress'")
|
| 51 |
+
linkedIssuesOf: issueFunction in linkedIssuesOf("status = 'Open'", "blocks")
|
| 52 |
+
linkedIssuesOfRecursive: issueFunction in linkedIssuesOfRecursive("issue = Jira-1")
|
| 53 |
+
subtasksOf: issueFunction in subtasksOf("status != Closed")
|
| 54 |
+
parentsOf: issueFunction in parentsOf("assignee = currentUser()")
|
| 55 |
+
expression: issueFunction in expression("", "timespent > originalestimate")
|
| 56 |
+
commented: issueFunction in commented("after -3w")
|
| 57 |
+
lastComment: issueFunction in lastComment("by currentUser()")
|
| 58 |
+
|
| 59 |
+
JQL Operators:
|
| 60 |
+
=, != (Equal, Not Equal)
|
| 61 |
+
>, <, >=, <= (Greater, Less)
|
| 62 |
+
IN, NOT IN (In List, Not In List)
|
| 63 |
+
~, !~ (Contains, Does Not Contain)
|
| 64 |
+
IS, IS NOT (Is, Is Not)
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
You MUST wrap each output with <jql> </jql> tags
|
| 68 |
+
Examples:
|
| 69 |
+
Find high-priority bugs created last week: <jql>project = "PROJ" AND issuetype = "Bug" AND priority = "High" AND created >= startOfWeek()</jql>
|
| 70 |
+
Search for unresolved issues reported by team members: <jql>reporter in membersOf("team") AND resolution = Unresolved</jql>
|
| 71 |
+
Combine ScriptRunner function with operators: <jql>issueFunction in linkedIssuesOf("status = 'Open'", "blocks") AND priority = Highest</jql>
|
| 72 |
+
Search for high priority issues in open sprints not assigned to current user: <jql>priority = High AND Sprint in openSprints() AND assignee != currentUser()</jql>
|
| 73 |
+
Issues linked to a specific issue with a custom field value: <jql>issueFunction in linkedIssuesOf("key = PROJ-123") AND customfield_10010 = "value"</jql>
|
| 74 |
+
Find stories without sub-tasks in a specific sprint: <jql>issuetype = Story AND Sprint = 23 AND issueFunction not in subtasksOf("")</jql>
|
| 75 |
+
Retrieve issues with specific text in comments made this week: <jql>issueFunction in commented("text ~ 'urgent' AND after startOfWeek()")</jql>
|
| 76 |
+
Issues in a specific component updated by a specific user: <jql>component = "Backend" AND updatedBy = "username"</jql>
|
| 77 |
+
Check Project Status: <jql>project = "Alpha" AND status IN (Open, "In Progress", Resolved) ORDER BY status</jql>
|
| 78 |
+
Team's Monthly Progress: <jql>project = "Gamma" AND created >= startOfMonth() AND created <= endOfMonth()</jql>
|
| 79 |
+
Specific Ticket Status: <jql>issueKey = XYZ-123</jql>
|
| 80 |
+
Current Projects Overview: <jql>project IN (Alpha, Beta, Gamma, Delta, Epsilon) AND statusCategory != Done ORDER BY project</jql>
|
| 81 |
+
Identify Project Risks: <jql>project = X AND issuetype = Risk ORDER BY priority DESC</jql>
|
| 82 |
+
Track Feature Progress in a Project: <jql>project = Y AND summary ~ "chat feature" AND status = "Testing"</jql>
|
| 83 |
+
Upcoming Deadlines for a Project: <jql>project = X AND dueDate <= endOfWeek()</jql>
|
| 84 |
+
Communication Issues in a Team: <jql>project = Web AND issuetype = "Communication Issue" ORDER BY created DESC</jql>
|
| 85 |
+
|
| 86 |
+
|
| 87 |
+
IMPORTANT NOTES:
|
| 88 |
+
DO NOT USE THIS TOOL UNLESS ABSOLUTELY NECESSARY, TRY USING OTHER TOOLS FIRST.
|
| 89 |
+
DO NOT USE BACKTICKS SYMBOLS TO INPUT THE JQL
|
| 90 |
+
DO NOT INCLUDE BACKTICK SYMBOLS IN YOUR RESPONSE!!!
|
| 91 |
+
This tool can return way too much text and break the program, so ensure that your queries target specific pieces of information that will narrow down results.
|
| 92 |
+
|
| 93 |
+
Given the following prompt, construct a JQL query that will look up the information. Use the syntax I provided to construct a comprehensive and reliable query.
|
| 94 |
+
Input: {prompt}
|
| 95 |
+
"""
|
tools/jql_tools.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import json
|
| 2 |
+
import os
|
| 3 |
+
import re
|
| 4 |
+
from dotenv import load_dotenv
|
| 5 |
+
from html import unescape
|
| 6 |
+
from typing import Optional
|
| 7 |
+
from atlassian import Jira
|
| 8 |
+
from langchain.tools import BaseTool, StructuredTool, tool
|
| 9 |
+
from langchain_core.output_parsers import StrOutputParser
|
| 10 |
+
from langchain_core.prompts import ChatPromptTemplate
|
| 11 |
+
from langchain_core.runnables import RunnablePassthrough
|
| 12 |
+
from langchain_openai import ChatOpenAI
|
| 13 |
+
|
| 14 |
+
load_dotenv()
|
| 15 |
+
|
| 16 |
+
def parse_jql(input_string: str) -> str:
|
| 17 |
+
"""Parses the input string and returns the string between <jql> and </jql>."""
|
| 18 |
+
start = input_string.find('<jql>') + len('<jql>')
|
| 19 |
+
end = input_string.find('</jql>', start)
|
| 20 |
+
return input_string[start:end]
|
| 21 |
+
|
| 22 |
+
def jql_chain(prompt: str):
|
| 23 |
+
from jql_prompt import jql_prompt
|
| 24 |
+
|
| 25 |
+
output_parser = StrOutputParser()
|
| 26 |
+
chat_prompt = ChatPromptTemplate.from_template(jql_prompt)
|
| 27 |
+
chain = (
|
| 28 |
+
{"prompt": RunnablePassthrough()}
|
| 29 |
+
| chat_prompt
|
| 30 |
+
| llm
|
| 31 |
+
| output_parser
|
| 32 |
+
)
|
| 33 |
+
|
| 34 |
+
try:
|
| 35 |
+
jql_query = parse_jql(chain.invoke(prompt))
|
| 36 |
+
except Exception as e:
|
| 37 |
+
jql_query = None
|
| 38 |
+
|
| 39 |
+
return jql_query
|
| 40 |
+
|
| 41 |
+
def jql_request(prompt: str):
|
| 42 |
+
|
| 43 |
+
jql_query = jql_chain(prompt)
|
| 44 |
+
if jql_query:
|
| 45 |
+
"""Use JQL to search Jira"""
|
| 46 |
+
#jql_request = parse_tool_input(jql_request)
|
| 47 |
+
try:
|
| 48 |
+
results = jira.jql(jql_query)
|
| 49 |
+
except Exception as e:
|
| 50 |
+
return f"An error occurred while making JQL request: {str(e)}"
|
| 51 |
+
|
| 52 |
+
# Filter fields from results
|
| 53 |
+
for issue in results['issues']:
|
| 54 |
+
fields = issue['fields']
|
| 55 |
+
filtered_fields = {}
|
| 56 |
+
keys_to_extract = ['key', 'summary', 'description', 'status', 'priority', 'issuetype', 'assignee', 'reporter', 'created', 'updated', 'duedate', 'labels']
|
| 57 |
+
for key in keys_to_extract:
|
| 58 |
+
if key in fields:
|
| 59 |
+
if isinstance(fields[key], dict) and 'name' in fields[key]:
|
| 60 |
+
filtered_fields[key] = fields[key].get('name')
|
| 61 |
+
elif isinstance(fields[key], dict) and 'displayName' in fields[key]:
|
| 62 |
+
filtered_fields[key] = fields[key].get('displayName')
|
| 63 |
+
else:
|
| 64 |
+
filtered_fields[key] = fields[key]
|
| 65 |
+
issue['fields'] = filtered_fields
|
| 66 |
+
|
| 67 |
+
return results
|
| 68 |
+
else:
|
| 69 |
+
return "Error using JQL tool"
|
tools/launch_api_tool.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import requests
|
| 3 |
+
import json
|
| 4 |
+
from langchain.tools import tool
|
| 5 |
+
import datetime
|
| 6 |
+
|
| 7 |
+
def ensure_directory_exists(path):
|
| 8 |
+
if not os.path.exists(path):
|
| 9 |
+
os.makedirs(path)
|
| 10 |
+
|
| 11 |
+
ensure_directory_exists('tmp')
|
| 12 |
+
|
| 13 |
+
def get_results(query_url: str) -> dict or None:
|
| 14 |
+
try:
|
| 15 |
+
# Requesting data
|
| 16 |
+
results = requests.get(query_url)
|
| 17 |
+
except Exception as e:
|
| 18 |
+
# Print exception when it occurs
|
| 19 |
+
print(f'Exception: {e}')
|
| 20 |
+
else:
|
| 21 |
+
# Checking status of the query
|
| 22 |
+
status = results.status_code
|
| 23 |
+
print(f'Status code: {status}')
|
| 24 |
+
|
| 25 |
+
# Return when the query status isn't 200 OK
|
| 26 |
+
if status != 200:
|
| 27 |
+
return
|
| 28 |
+
|
| 29 |
+
# Converting to JSON and returning
|
| 30 |
+
return results.json()
|
| 31 |
+
|
| 32 |
+
@tool
|
| 33 |
+
def launch_api_tool(timeframe_days: int = 7, lsp_name: str = None, include_suborbital: bool = True, status: int = None, limit: int = 10, location=12, ordering='net__gt') -> dict or None:
|
| 34 |
+
"""
|
| 35 |
+
Fetches space launch results based on optional filters.
|
| 36 |
+
|
| 37 |
+
Parameters
|
| 38 |
+
----------
|
| 39 |
+
timeframe_days : int
|
| 40 |
+
Number of days from now to include in the search window.
|
| 41 |
+
lsp_name : str
|
| 42 |
+
Name of the launch service provider. ex: SpaceX, ULA, Blue Origin
|
| 43 |
+
include_suborbital : bool
|
| 44 |
+
Whether to include suborbital launches.
|
| 45 |
+
status : int
|
| 46 |
+
Status code of the launches to include.
|
| 47 |
+
limit : int
|
| 48 |
+
Maximum number of results to return.
|
| 49 |
+
|
| 50 |
+
Returns
|
| 51 |
+
-------
|
| 52 |
+
results : dict or None
|
| 53 |
+
Results from the query.
|
| 54 |
+
"""
|
| 55 |
+
|
| 56 |
+
# URL
|
| 57 |
+
launch_base_url = 'https://lldev.thespacedevs.com/2.2.0/launch/upcoming'
|
| 58 |
+
|
| 59 |
+
# Time frame: now + timeframe_days ahead using datetime.timedelta
|
| 60 |
+
now = datetime.datetime.now()
|
| 61 |
+
future_timeframe = now + datetime.timedelta(days=timeframe_days)
|
| 62 |
+
# Constructing URL parameters
|
| 63 |
+
params = {
|
| 64 |
+
'net_lt': future_timeframe.isoformat(),
|
| 65 |
+
'mode': 'detailed',
|
| 66 |
+
'ordering': ordering,
|
| 67 |
+
'limit': limit
|
| 68 |
+
}
|
| 69 |
+
print(f"Parameters for the query: {params}")
|
| 70 |
+
|
| 71 |
+
if lsp_name is not None:
|
| 72 |
+
params['lsp__name'] = lsp_name
|
| 73 |
+
|
| 74 |
+
if not include_suborbital:
|
| 75 |
+
params['include_suborbital'] = 'false'
|
| 76 |
+
|
| 77 |
+
if status is not None:
|
| 78 |
+
params['status'] = status
|
| 79 |
+
|
| 80 |
+
# Assemble the query URL with parameters
|
| 81 |
+
query_url = f"{launch_base_url}?{'&'.join(f'{key}={value}' for key, value in params.items())}"
|
| 82 |
+
|
| 83 |
+
print(f'Query URL: {query_url}')
|
| 84 |
+
|
| 85 |
+
# Perform the query
|
| 86 |
+
results = get_results(query_url)
|
| 87 |
+
|
| 88 |
+
# Checking if it was successful
|
| 89 |
+
if not results:
|
| 90 |
+
return None # Return None if no results
|
| 91 |
+
|
| 92 |
+
# Filter out 'updates' from each dictionary in the list of results
|
| 93 |
+
for launch in results.get('results', []):
|
| 94 |
+
if 'updates' in launch:
|
| 95 |
+
del launch['updates']
|
| 96 |
+
|
| 97 |
+
return results # Return the complete results
|
| 98 |
+
|
tools/launch_tools.py
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import csv
|
| 3 |
+
import requests
|
| 4 |
+
import json
|
| 5 |
+
from langchain.tools import tool
|
| 6 |
+
import datetime
|
| 7 |
+
|
| 8 |
+
def ensure_directory_exists(path):
|
| 9 |
+
if not os.path.exists(path):
|
| 10 |
+
os.makedirs(path)
|
| 11 |
+
|
| 12 |
+
ensure_directory_exists('tools/data')
|
| 13 |
+
|
| 14 |
+
def get_results(query_url: str) -> dict or None:
|
| 15 |
+
try:
|
| 16 |
+
# Requesting data
|
| 17 |
+
results = requests.get(query_url)
|
| 18 |
+
except Exception as e:
|
| 19 |
+
# Print exception when it occurs
|
| 20 |
+
print(f'Exception: {e}')
|
| 21 |
+
else:
|
| 22 |
+
# Checking status of the query
|
| 23 |
+
status = results.status_code
|
| 24 |
+
print(f'Status code: {status}')
|
| 25 |
+
|
| 26 |
+
# Return when the query status isn't 200 OK
|
| 27 |
+
if status != 200:
|
| 28 |
+
return
|
| 29 |
+
|
| 30 |
+
# Converting to JSON and returning
|
| 31 |
+
return results.json()
|
| 32 |
+
|
| 33 |
+
def download_json_data(api_url):
|
| 34 |
+
response = requests.get(api_url)
|
| 35 |
+
if response.status_code == 200:
|
| 36 |
+
return response.json()
|
| 37 |
+
else:
|
| 38 |
+
raise Exception(f"Failed to download data: {response.status_code}")
|
| 39 |
+
|
| 40 |
+
def save_json_data(json_data, json_file_path='tools/data/launch_api.json'):
|
| 41 |
+
with open(json_file_path, 'w') as file:
|
| 42 |
+
json.dump(json_data, file, indent=4)
|
| 43 |
+
print("JSON data saved.")
|
| 44 |
+
|
| 45 |
+
def transform_json_to_csv(json_data, csv_file_path='tools/data/launch_schedule.csv'):
|
| 46 |
+
headers = [
|
| 47 |
+
'Status Name', 'Status Description', 'Last Updated', 'Provider Name', 'Provider Type', 'Provider Abbrev',
|
| 48 |
+
'Rocket Name', 'Rocket Active', 'Rocket Reusable', 'Rocket Description', 'Rocket Family', 'Rocket Full Name',
|
| 49 |
+
'Mission Name', 'Mission Description', 'Mission Type', 'Orbit Name', 'Orbit Abbrev', 'Window Start', 'Window End',
|
| 50 |
+
'Webcast Live', 'Pad Name', 'Pad Location', 'Rocket Launch Mass', 'Rocket Thrust', 'Mission Payload Mass',
|
| 51 |
+
'Mission Payload Type', 'Total Launch Count', 'Successful Launches', 'Previous Flight', 'Turn Around Time Days',
|
| 52 |
+
'Safety Measures', 'Regulatory Approval'
|
| 53 |
+
]
|
| 54 |
+
with open(csv_file_path, mode='w', newline='') as file:
|
| 55 |
+
writer = csv.writer(file)
|
| 56 |
+
writer.writerow(headers)
|
| 57 |
+
for launch in json_data.get('results', []):
|
| 58 |
+
print("Processing launch:", launch.get('mission', {}).get('name', 'Unknown')) # Debugging output
|
| 59 |
+
row = [
|
| 60 |
+
launch['status'].get('name', ''),
|
| 61 |
+
launch['status'].get('description', ''),
|
| 62 |
+
launch.get('last_updated', ''),
|
| 63 |
+
launch['launch_service_provider'].get('name', ''),
|
| 64 |
+
launch['launch_service_provider'].get('type', ''),
|
| 65 |
+
launch['launch_service_provider'].get('abbrev', ''),
|
| 66 |
+
launch['rocket'].get('name', ''),
|
| 67 |
+
launch['rocket'].get('active', ''),
|
| 68 |
+
launch['rocket'].get('reusable', ''),
|
| 69 |
+
launch['rocket'].get('description', ''),
|
| 70 |
+
launch['rocket'].get('family', ''),
|
| 71 |
+
launch['rocket'].get('full_name', ''),
|
| 72 |
+
launch['mission'].get('name', ''),
|
| 73 |
+
launch['mission'].get('description', ''),
|
| 74 |
+
launch['mission'].get('type', ''),
|
| 75 |
+
launch['mission']['orbit'].get('name', ''),
|
| 76 |
+
launch['mission']['orbit'].get('abbrev', ''),
|
| 77 |
+
launch.get('window_start', ''),
|
| 78 |
+
launch.get('window_end', ''),
|
| 79 |
+
launch.get('webcast_live', ''),
|
| 80 |
+
launch.get('pad', {}).get('name', ''),
|
| 81 |
+
json.dumps(launch.get('pad', {}).get('location', {})), # Ensure JSON structure is converted to string
|
| 82 |
+
launch['rocket'].get('configuration', {}).get('launch_mass', ''),
|
| 83 |
+
launch['rocket'].get('configuration', {}).get('thrust', ''),
|
| 84 |
+
launch['mission'].get('payload_mass', ''),
|
| 85 |
+
launch['mission'].get('payload_type', ''),
|
| 86 |
+
launch['launch_service_provider'].get('total_launch_count', ''),
|
| 87 |
+
launch['launch_service_provider'].get('successful_launches', ''),
|
| 88 |
+
launch.get('previous_flight', ''),
|
| 89 |
+
launch.get('turn_around_time_days', ''),
|
| 90 |
+
launch.get('safety_measures', ''),
|
| 91 |
+
launch.get('regulatory_approval', '')
|
| 92 |
+
]
|
| 93 |
+
writer.writerow(row)
|
| 94 |
+
print("CSV file has been written.")
|
| 95 |
+
|
| 96 |
+
@tool
|
| 97 |
+
def launch_csv_tool(csv_file_path='tools/data/launch_schedule.csv', api_url='https://lldev.thespacedevs.com/2.2.0/launch/upcoming'):
|
| 98 |
+
"""
|
| 99 |
+
get the launch data from the csv file
|
| 100 |
+
"""
|
| 101 |
+
if not os.path.exists(csv_file_path):
|
| 102 |
+
print("CSV file does not exist. Downloading and creating CSV file...")
|
| 103 |
+
json_data = download_json_data(api_url)
|
| 104 |
+
save_json_data(json_data)
|
| 105 |
+
transform_json_to_csv(json_data, csv_file_path)
|
| 106 |
+
else:
|
| 107 |
+
print("CSV file exists. Reading data...")
|
| 108 |
+
|
| 109 |
+
print_csv(csv_file_path)
|
| 110 |
+
|
| 111 |
+
def print_csv(csv_file_path):
|
| 112 |
+
with open(csv_file_path, 'r') as file:
|
| 113 |
+
reader = csv.reader(file)
|
| 114 |
+
for row in reader:
|
| 115 |
+
print(row)
|
| 116 |
+
|
| 117 |
+
if __name__ == "__main__":
|
| 118 |
+
ensure_directory_exists('tools/data')
|
| 119 |
+
api_url = 'https://lldev.thespacedevs.com/2.2.0/launch/upcoming' # Replace with the actual API URL
|
| 120 |
+
json_data = download_json_data(api_url)
|
| 121 |
+
save_json_data(json_data) # Optional: Save the JSON data for archival or debugging
|
| 122 |
+
transform_json_to_csv(json_data)
|
| 123 |
+
print_csv('tools/data/launch_schedule.csv')
|
| 124 |
+
|
tools/time_tools.py
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import datetime
|
| 2 |
+
import pytz
|
| 3 |
+
from langchain.tools import tool
|
| 4 |
+
|
| 5 |
+
@tool
|
| 6 |
+
def get_current_time(timezone='America/New_York', format='%Y-%m-%d %H:%M:%S'):
|
| 7 |
+
"""
|
| 8 |
+
Returns the current time and date in the specified format and timezone.
|
| 9 |
+
Default timezone is Eastern Time (ET).
|
| 10 |
+
|
| 11 |
+
Args:
|
| 12 |
+
timezone (str): The timezone for which the date and time should be calculated. Examples: 'America/New_York', 'Europe/London', 'Asia/Tokyo'.
|
| 13 |
+
format (str): The format in which the date and time should be returned.
|
| 14 |
+
|
| 15 |
+
Returns:
|
| 16 |
+
str: The formatted current date and time.
|
| 17 |
+
"""
|
| 18 |
+
tz = pytz.timezone(timezone)
|
| 19 |
+
now = datetime.datetime.now(tz)
|
| 20 |
+
return now.strftime(format)
|
| 21 |
+
|
| 22 |
+
@tool
|
| 23 |
+
def get_time_difference(start_time, end_time, format='%Y-%m-%d %H:%M:%S'):
|
| 24 |
+
"""
|
| 25 |
+
Calculates the difference between two times.
|
| 26 |
+
|
| 27 |
+
Args:
|
| 28 |
+
start_time (str): The start time in specified format.
|
| 29 |
+
end_time (str): The end time in specified format.
|
| 30 |
+
format (str): The format in which the times are provided.
|
| 31 |
+
|
| 32 |
+
Returns:
|
| 33 |
+
str: The difference in time in hours, minutes, and seconds.
|
| 34 |
+
"""
|
| 35 |
+
start_dt = datetime.datetime.strptime(start_time, format)
|
| 36 |
+
end_dt = datetime.datetime.strptime(end_time, format)
|
| 37 |
+
diff = end_dt - start_dt
|
| 38 |
+
return str(diff)
|
| 39 |
+
|
| 40 |
+
@tool
|
| 41 |
+
def convert_time_to_timezone(original_time, original_timezone, target_timezone, format='%Y-%m-%d %H:%M:%S'):
|
| 42 |
+
"""
|
| 43 |
+
Converts time from one timezone to another.
|
| 44 |
+
|
| 45 |
+
Args:
|
| 46 |
+
original_time (str): The original time string.
|
| 47 |
+
original_timezone (str): The timezone of the original time. Examples: 'America/Los_Angeles', 'UTC'.
|
| 48 |
+
target_timezone (str): The timezone to convert the time to. Examples: 'Asia/Kolkata', 'Australia/Sydney'.
|
| 49 |
+
format (str): The format in which the time is provided and should be returned.
|
| 50 |
+
|
| 51 |
+
Returns:
|
| 52 |
+
str: The converted time in the target timezone.
|
| 53 |
+
"""
|
| 54 |
+
original_tz = pytz.timezone(original_timezone)
|
| 55 |
+
target_tz = pytz.timezone(target_timezone)
|
| 56 |
+
original_dt = datetime.datetime.strptime(original_time, format)
|
| 57 |
+
original_dt = original_tz.localize(original_dt)
|
| 58 |
+
target_dt = original_dt.astimezone(target_tz)
|
| 59 |
+
return target_dt.strftime(format)
|
| 60 |
+
|
| 61 |
+
# Example usage:
|
| 62 |
+
# print(get_current_time(timezone='Europe/London', format='%Y-%m-%d %H:%M:%S'))
|
| 63 |
+
# print(get_time_difference('2023-01-01 12:00:00', '2023-01-01 15:30:00'))
|
| 64 |
+
# print(convert_time_to_timezone('2023-01-01 12:00:00', 'America/New_York', 'Asia/Tokyo'))
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
|
tools/weather_tools.py
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from langchain.tools import tool
|
| 2 |
+
import requests
|
| 3 |
+
from dotenv import load_dotenv
|
| 4 |
+
import os
|
| 5 |
+
|
| 6 |
+
# Load environment variables from .env file
|
| 7 |
+
load_dotenv()
|
| 8 |
+
|
| 9 |
+
# Get the OpenWeather API key from environment variables
|
| 10 |
+
OPEN_WEATHER_API_KEY = os.getenv("OPEN_WEATHER_API_KEY")
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
@tool
|
| 14 |
+
def get_weather(lat: float = 28.396837, lon: float = -80.605659, api_key: str = OPEN_WEATHER_API_KEY, units: str = "standard", lang: str = "en") -> dict:
|
| 15 |
+
"""
|
| 16 |
+
Get current weather data from OpenWeather API.
|
| 17 |
+
|
| 18 |
+
Parameters:
|
| 19 |
+
- lat (float): Latitude, decimal (-90; 90). Default is 28.396837 (Cape Canaveral, Florida).
|
| 20 |
+
- lon (float): Longitude, decimal (-180; 180). Default is -80.605659 (Cape Canaveral, Florida).
|
| 21 |
+
- api_key (str): Your unique API key.
|
| 22 |
+
- units (str): Optional. Units of measurement. standard, metric, and imperial units are available. Default is standard.
|
| 23 |
+
- lang (str): Optional. You can use the lang parameter to get the output in your language. Default is English.
|
| 24 |
+
|
| 25 |
+
Returns:
|
| 26 |
+
- dict: Weather data in JSON format.
|
| 27 |
+
"""
|
| 28 |
+
base_url = "https://api.openweathermap.org/data/2.5/weather"
|
| 29 |
+
params = {
|
| 30 |
+
"lat": lat,
|
| 31 |
+
"lon": lon,
|
| 32 |
+
"units": units,
|
| 33 |
+
"lang": lang,
|
| 34 |
+
"appid": api_key
|
| 35 |
+
}
|
| 36 |
+
response = requests.get(base_url, params=params)
|
| 37 |
+
if response.status_code == 200:
|
| 38 |
+
return response.json()
|
| 39 |
+
else:
|
| 40 |
+
raise Exception(f"Failed to get weather data: {response.status_code}, {response.text}")
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
if __name__ == "__main__":
|
| 44 |
+
try:
|
| 45 |
+
# Test case for get_weather function
|
| 46 |
+
test_lat = 28.396837 # Latitude for Cape Canaveral, Florida
|
| 47 |
+
test_lon = -80.605659 # Longitude for Cape Canaveral, Florida
|
| 48 |
+
test_api_key = OPEN_WEATHER_API_KEY # Use the API key loaded from environment variables
|
| 49 |
+
weather_data = get_weather(test_lat, test_lon, test_api_key)
|
| 50 |
+
print("Test Passed: Weather data retrieved successfully.")
|
| 51 |
+
print(weather_data)
|
| 52 |
+
except Exception as e:
|
| 53 |
+
print("Test Failed:", e)
|