nick1221 commited on
Commit
f79e170
·
verified ·
1 Parent(s): 37e648d

Upload folder using huggingface_hub

Browse files
.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: System1
3
- emoji: 👁
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)