From 19c2d43ea41efdd8741007de0774e7e394f174b0 Mon Sep 17 00:00:00 2001
From: Ken Powers <ken@kenpowers.net>
Date: Mon, 3 Jul 2023 03:58:27 -0400
Subject: [PATCH] Make APIRoute generic like APIContext (#7521)

---
 .changeset/grumpy-readers-draw.md  | 5 +++++
 packages/astro/src/@types/astro.ts | 8 ++++----
 2 files changed, 9 insertions(+), 4 deletions(-)
 create mode 100644 .changeset/grumpy-readers-draw.md

diff --git a/.changeset/grumpy-readers-draw.md b/.changeset/grumpy-readers-draw.md
new file mode 100644
index 000000000000..32156bc8b81e
--- /dev/null
+++ b/.changeset/grumpy-readers-draw.md
@@ -0,0 +1,5 @@
+---
+"astro": patch
+---
+
+Add `Props` generic for `APIRoute` type
diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts
index ef958d2a89e1..69c0ffed585c 100644
--- a/packages/astro/src/@types/astro.ts
+++ b/packages/astro/src/@types/astro.ts
@@ -1764,21 +1764,21 @@ export interface APIContext<Props extends Record<string, any> = Record<string, a
 	locals: App.Locals;
 }
 
-export type Props = Record<string, unknown>;
-
 export interface EndpointOutput {
 	body: Body;
 	encoding?: BufferEncoding;
 }
 
-export type APIRoute = (
-	context: APIContext
+export type APIRoute<Props extends Record<string, any> = Record<string, any>> = (
+	context: APIContext<Props>
 ) => EndpointOutput | Response | Promise<EndpointOutput | Response>;
 
 export interface EndpointHandler {
 	[method: string]: APIRoute | ((params: Params, request: Request) => EndpointOutput | Response);
 }
 
+export type Props = Record<string, unknown>;
+
 export interface AstroRenderer {
 	/** Name of the renderer. */
 	name: string;