-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
135 lines (109 loc) · 4.6 KB
/
Copy pathmain.py
File metadata and controls
135 lines (109 loc) · 4.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import os
from dotenv import load_dotenv
from fastapi import FastAPI, HTTPException, Query
from pydantic import BaseModel
from reloop_email import Reloop
# Load environment variables from .env
load_dotenv()
app = FastAPI(title="Alex's Python Reloop App")
# Initialize the official Reloop Python SDK
api_key = os.getenv("RELOOP_API_KEY")
if not api_key:
raise RuntimeError("RELOOP_API_KEY environment variable is missing!")
reloop = Reloop(api_key=api_key)
# Pydantic model for request validation
class CreateKeyRequest(BaseModel):
name: str
class UpdateKeyRequest(BaseModel):
name: str
@app.get("/")
def read_root():
return {"message": "Alex Python FastAPI App is online!"}
# ----------------------------------------------------
# 1. POST /api/api-keys - Create API Key
# ----------------------------------------------------
@app.post("/api/api-keys")
def create_api_key(req: CreateKeyRequest):
try:
# Call Reloop Python SDK: reloop.api_keys.create(...)
result = reloop.api_keys.create(name=req.name)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
# ----------------------------------------------------
# 2. GET /api/api-keys - List API Keys
# ----------------------------------------------------
@app.get("/api/api-keys")
def list_api_keys(limit: int = Query(10), page: int = Query(1)):
try:
# Call Reloop Python SDK: reloop.api_keys.list(...)
result = reloop.api_keys.list(limit=limit, page=page)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
# ----------------------------------------------------
# 3. GET /api/api-keys/{key_id} - Get API Key Details
# ----------------------------------------------------
@app.get("/api/api-keys/{key_id}")
def get_api_key(key_id: str):
try:
# Call Reloop Python SDK: reloop.api_keys.get(...)
result = reloop.api_keys.get(key_id)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=404, detail=str(e))
# ----------------------------------------------------
# 4. PATCH /api/api-keys/{key_id} - Update / Rename API Key
# ----------------------------------------------------
@app.patch("/api/api-keys/{key_id}")
def update_api_key(key_id: str, req: UpdateKeyRequest):
try:
# Call Reloop Python SDK: reloop.api_keys.update(...)
result = reloop.api_keys.update(key_id, name=req.name)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
# ----------------------------------------------------
# 5. POST /api/api-keys/{key_id}/disable - Disable API Key
# ----------------------------------------------------
@app.post("/api/api-keys/{key_id}/disable")
def disable_api_key(key_id: str):
try:
# Call Reloop Python SDK: reloop.api_keys.disable(...)
result = reloop.api_keys.disable(key_id)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
# ----------------------------------------------------
# 6. POST /api/api-keys/{key_id}/enable - Enable API Key
# ----------------------------------------------------
@app.post("/api/api-keys/{key_id}/enable")
def enable_api_key(key_id: str):
try:
# Call Reloop Python SDK: reloop.api_keys.enable(...)
result = reloop.api_keys.enable(key_id)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
# ----------------------------------------------------
# 7. POST /api/api-keys/{key_id}/rotate - Rotate API Key Secret
# ----------------------------------------------------
@app.post("/api/api-keys/{key_id}/rotate")
def rotate_api_key(key_id: str):
try:
# Call Reloop Python SDK: reloop.api_keys.rotate(...)
result = reloop.api_keys.rotate(key_id)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
# ----------------------------------------------------
# 8. DELETE /api/api-keys/{key_id} - Delete API Key
# ----------------------------------------------------
@app.delete("/api/api-keys/{key_id}")
def delete_api_key(key_id: str):
try:
# Call Reloop Python SDK: reloop.api_keys.delete(...)
result = reloop.api_keys.delete(key_id)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))