mirror of
https://github.com/System-End/nephthys.git
synced 2026-04-19 16:28:16 +00:00
Add a /api/ticket endpoint for ticket info (#122)
* Add a /api/ticket endpoint! * Add some validation and user-friendly error msgs
This commit is contained in:
parent
df7ab83cb4
commit
5567cc7673
2 changed files with 40 additions and 0 deletions
38
nephthys/api/ticket.py
Normal file
38
nephthys/api/ticket.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
from starlette.requests import Request
|
||||
from starlette.responses import JSONResponse
|
||||
|
||||
from nephthys.utils.env import env
|
||||
|
||||
|
||||
async def ticket_info(req: Request):
|
||||
try:
|
||||
ticket_id = int(req.query_params["id"])
|
||||
except KeyError:
|
||||
return JSONResponse({"error": "missing_ticket_id"}, status_code=400)
|
||||
except ValueError:
|
||||
return JSONResponse({"error": "invalid_ticket_id"}, status_code=400)
|
||||
ticket = await env.db.ticket.find_unique(
|
||||
where={"id": ticket_id},
|
||||
include={"openedBy": True, "closedBy": True, "assignedTo": True},
|
||||
)
|
||||
|
||||
if not ticket:
|
||||
return JSONResponse({"error": "ticket_not_found"}, status_code=404)
|
||||
|
||||
return JSONResponse(
|
||||
{
|
||||
"title": ticket.title,
|
||||
"description": ticket.description,
|
||||
"status": ticket.status,
|
||||
"opened_by": {"slack_id": ticket.openedBy.slackId}
|
||||
if ticket.openedBy
|
||||
else None,
|
||||
"closed_by": {"slack_id": ticket.closedBy.slackId}
|
||||
if ticket.closedBy
|
||||
else None,
|
||||
"assigned_to": {"slack_id": ticket.assignedTo.slackId}
|
||||
if ticket.assignedTo
|
||||
else None,
|
||||
"created_at": ticket.createdAt.isoformat(),
|
||||
}
|
||||
)
|
||||
|
|
@ -11,6 +11,7 @@ from starlette_exporter import PrometheusMiddleware
|
|||
|
||||
from nephthys.__main__ import main
|
||||
from nephthys.api.stats import stats
|
||||
from nephthys.api.ticket import ticket_info
|
||||
from nephthys.api.user import user_stats
|
||||
from nephthys.utils.env import env
|
||||
from nephthys.utils.slack import app as slack_app
|
||||
|
|
@ -59,6 +60,7 @@ app = Starlette(
|
|||
Route(path="/slack/events", endpoint=endpoint, methods=["POST"]),
|
||||
Route(path="/api/stats", endpoint=stats, methods=["GET"]),
|
||||
Route(path="/api/user", endpoint=user_stats, methods=["GET"]),
|
||||
Route(path="/api/ticket", endpoint=ticket_info, methods=["GET"]),
|
||||
Route(path="/health", endpoint=health, methods=["GET"]),
|
||||
Route(path="/metrics", endpoint=metrics, methods=["GET"]),
|
||||
],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue