core/apps/webapp/app/routes/api.v1.spaces.$spaceId.statements.ts

49 lines
1.3 KiB
TypeScript

import { z } from "zod";
import { createActionApiRoute } from "~/services/routeBuilders/apiBuilder.server";
import { SpaceService } from "~/services/space.server";
import { json } from "@remix-run/node";
const spaceService = new SpaceService();
// Schema for space ID parameter
const SpaceParamsSchema = z.object({
spaceId: z.string(),
});
const { loader } = createActionApiRoute(
{
params: SpaceParamsSchema,
allowJWT: true,
authorization: {
action: "search",
},
corsStrategy: "all",
},
async ({ authentication, params }) => {
const userId = authentication.userId;
const { spaceId } = params;
// Verify space exists and belongs to user
const space = await spaceService.getSpace(spaceId, userId);
if (!space) {
return json({ error: "Space not found" }, { status: 404 });
}
// Get statements in the space
const statements = await spaceService.getSpaceStatements(spaceId, userId);
return json({
deprecated: true,
deprecationMessage: "This endpoint is deprecated. Use /api/v1/spaces/{spaceId}/episodes instead. Spaces now work with episodes directly.",
newEndpoint: `/api/v1/spaces/${spaceId}/episodes`,
statements,
space: {
uuid: space.uuid,
name: space.name,
statementCount: statements.length
}
});
}
);
export { loader };