@tmlmobilidade/types
Version:
42 lines (41 loc) • 1.56 kB
JavaScript
/* * */
import { RawVehicleEventBaseSchema } from '../raw-vehicle-event-base.js';
import { GtfsDateSchema, GtfsTimeSchema } from '@tmlmobilidade/go-types-gtfs';
import { GtfsRtOccupancyStatusSchema, GtfsRtScheduleRelationshipSchema } from '@tmlmobilidade/go-types-gtfs-rt';
import { z } from 'zod';
/* * */
export const RawVehicleEventMobiV1PayloadSchema = z.object({
header: z.object({
feed_version: z.string().nullish(),
gtfs_realtime_version: z.string(),
incrementality: z.literal('FULL_DATASET'),
timestamp: z.number(),
}),
vehicle: z.object({
current_status: z.enum(['INCOMING_AT', 'STOPPED_AT', 'IN_TRANSIT_TO']).nullish(),
occupancy_status: GtfsRtOccupancyStatusSchema.nullish(),
position: z.object({
bearing: z.number().nullish(),
latitude: z.number(),
longitude: z.number(),
speed: z.number().nullish(),
}),
stop_id: z.string().nullish(),
timestamp: z.number().nullish(),
trip: z.object({
route_id: z.string(),
schedule_relationship: GtfsRtScheduleRelationshipSchema.nullish(),
start_date: GtfsDateSchema.nullish(),
start_time: GtfsTimeSchema.nullish(),
trip_id: z.string(),
}),
vehicle: z.object({
id: z.string(),
}),
}),
});
/* * */
export const RawVehicleEventMobiV1Schema = RawVehicleEventBaseSchema.extend({
payload: RawVehicleEventMobiV1PayloadSchema,
version: z.literal('mobi-v1'),
});