Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
1.3 kB ยท 51 lines
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import { Events } from "@openstatus/analytics";import { CreateApiKeyInput, createApiKey, listApiKeys, revokeApiKey,} from "@openstatus/services/api-key";import { z } from "zod";
import { toServiceCtx, toTRPCError } from "../service-adapter";import { createTRPCRouter, protectedProcedure } from "../trpc";
export const apiKeyRouter = createTRPCRouter({ create: protectedProcedure .meta({ track: Events.CreateAPI }) .input(CreateApiKeyInput) .mutation(async ({ ctx, input }) => { try { const { token, key } = await createApiKey({ ctx: toServiceCtx(ctx), input, }); // One-time plaintext display; caller's UI shows it once then drops it. return { token, key }; } catch (err) { toTRPCError(err); } }),
revoke: protectedProcedure .meta({ track: Events.RevokeAPI }) .input(z.object({ keyId: z.number() })) .mutation(async ({ ctx, input }) => { try { await revokeApiKey({ ctx: toServiceCtx(ctx), input: { id: input.keyId }, }); } catch (err) { toTRPCError(err); } }),
list: protectedProcedure.query(async ({ ctx }) => { try { return await listApiKeys({ ctx: toServiceCtx(ctx) }); } catch (err) { toTRPCError(err); } }),});