import { Z } from "./types"; export function exportGetSessionsSchema(z: Z) { const GetSessionsResponseSchema = z.object({ total: z.number().positive().openapi({ title: "Total logs", description: "The total number of logs satisfying the filters, regardless of pagination", example: 14, }), sessions: z .object({ id: z.string().openapi({ title: "Session GUID", description: "A unique identifier for the single play session", example: "11111111-2222-3333-4444-555555555555", }), save_id: z.string().openapi({ title: "Save GUID", description: "A unique identifier for a whole game, which can be part of a multi-session game", example: "11111111-2222-3333-4444-555555555555", }), game_name: z.string().openapi({ title: "Game name", description: "Name of the game that generated this log", example: "Asteroid", }), version: z.string().openapi({ title: "Version", description: "Version of the game that generated this log", example: "1.7.0", }), start_time: z.date().openapi({ title: "Start Time", description: "Time of the first log event for this session", example: "2025-01-06T14:46:38.000Z", }), end_time: z.date().openapi({ title: "Start Time", description: "Time of the last log event for this session", example: "2025-01-06T14:46:38.000Z", }), num_events: z.number().positive().openapi({ title: "# Events", description: "Number of events in this session", example: "48", }), }) .array(), }); const GetSessionsRequestQuerySchema = z.object({ skip: z.coerce.number().optional().openapi({ title: "Skip", default: "How many log events to skip from the beginning of this session (used for pagination)", example: "30", }), count: z.coerce.number().optional().openapi({ title: "Count", default: "How many log events to return at most (used for pagination)", example: "10", }), id: z.string().optional().openapi({ title: "Session GUID", description: "A filter for the session GUID", example: "11111111-2222-3333-4444-555555555555", }), }); return { GetSessionsResponseSchema, GetSessionsRequestQuerySchema }; }