Openstatus
www.openstatus.dev
1import { z } from "zod";
2
3import { monitorRegionSchema } from "@openstatus/db/src/schema/constants";
4
5export const tcpPayload = z.object({
6 workspaceId: z.string(),
7 monitorId: z.string(),
8 url: z.string(),
9 cronTimestamp: z.number(),
10 timeout: z.number().prefault(45000),
11 degradedAfter: z.number().nullable(),
12});
13
14export const TCPResponse = z.object({
15 type: z.literal("tcp").prefault("tcp"),
16 requestId: z.number().optional(),
17 workspaceId: z.number().optional(),
18 monitorId: z.number().optional(),
19 timestamp: z.number(),
20 timing: z.object({
21 tcpStart: z.number(),
22 tcpDone: z.number(),
23 }),
24 error: z.string().optional(),
25 region: monitorRegionSchema,
26 latency: z.number().optional(),
27});
28
29export const TCPResponseTest = TCPResponse.extend({
30 state: z.literal("success").prefault("success"),
31}).or(
32 z.object({
33 type: z.literal("tcp").prefault("tcp"),
34 state: z.literal("error").prefault("error"),
35 }),
36);
37export type tcpPayload = z.infer<typeof tcpPayload>;