fleeta-api-lib
Version:
A comprehensive library for fleet management applications - API, Auth, Device management
175 lines • 5.87 kB
TypeScript
/**
* GPS WebSocket SDK Type Definitions
* Defines all types for GPS WebSocket communication
*
* Protocol Specification:
* - Data encoding: JSON
* - Transport: WebSocket client connection
* - Request format: wsClient.send(JSON.stringify(payload))
*/
export interface BaseRequest {
action: string;
sequenceId: number;
}
export type DeviceActive = "on" | "off";
export type ShareVideo = "on" | "off";
export type Mode = "0" | "1";
export interface DeviceGpsInfo {
psn: string;
active: DeviceActive;
dev_name?: string;
share_video: ShareVideo;
mode?: Mode;
speed?: number;
UseGpsInfo?: string;
dir_angle?: number | "undefined";
latitude: number;
longitude: number;
}
export interface WsMessage<T = any> {
resultcode: string;
message: string;
response: T;
}
export type GpsWsEvent = "open" | "close" | "error" | "message" | "deviceGps" | "raw";
export type GpsConnectionState = 'idle' | 'connecting' | 'connected' | 'reconnecting' | 'disconnected' | 'failed';
export type GpsWsEventHandler<T = any> = (data: T) => void;
export interface GpsWebSocketSDKOptions {
url: string;
token?: string;
email?: string;
authMethod?: 'query' | 'header' | 'message';
maxReconnectAttempts?: number;
reconnectDelay?: number;
requestTimeout?: number;
}
export interface GpsZoneNoAuthRequest {
action: "gpsZoneNoAuth";
sw: string;
ne: string;
sequenceId?: number;
}
export interface GpsZoneNoAuthData {
action: "gpsZoneNoAuth";
sequenceId: number;
device_list?: DeviceGpsInfo[];
zone?: any[];
}
export type GpsZoneNoAuthResponse = WsMessage<GpsZoneNoAuthData>;
export interface GpsZoneMyDevicesRequest {
action: "gpsZoneMyDevices";
email: string;
sw: string;
ne: string;
sequenceId?: number;
}
export interface GpsZoneMyDevicesData {
action: "gpsZoneMyDevices";
sequenceId: number;
device_list: DeviceGpsInfo[];
myzone?: any[];
}
export type GpsZoneMyDevicesResponse = WsMessage<GpsZoneMyDevicesData>;
export interface GpsZoneAllDevicesRequest {
action: "gpsZoneAllDevices";
email: string;
sw: string;
ne: string;
sequenceId?: number;
}
export interface GpsZoneAllDevicesData {
action: "gpsZoneAllDevices";
sequenceId: number;
device_list: DeviceGpsInfo[];
zone?: any[];
}
export type GpsZoneAllDevicesResponse = WsMessage<GpsZoneAllDevicesData>;
export interface GpsZoneGroupMyDevicesRequest {
action: "gpsZoneGroupMyDevices";
email: string;
sw: string;
ne: string;
groupIdList: string[];
sequenceId?: number;
}
export interface GpsZoneGroupMyDevicesData {
action: "gpsZoneGroupMyDevices";
sequenceId: number;
device_list: DeviceGpsInfo[];
myzone?: any[];
}
export type GpsZoneGroupMyDevicesResponse = WsMessage<GpsZoneGroupMyDevicesData>;
export interface GpsZoneGroupAllDevicesRequest {
action: "gpsZoneGroupAllDevices";
email: string;
sw: string;
ne: string;
groupIdList: string[];
sequenceId?: number;
}
export interface GpsZoneGroupAllDevicesData {
action: "gpsZoneGroupAllDevices";
sequenceId: number;
device_list: DeviceGpsInfo[];
zone?: any[];
}
export type GpsZoneGroupAllDevicesResponse = WsMessage<GpsZoneGroupAllDevicesData>;
export interface GpsPsnsMyDevicesRequest {
action: "gpsPsnsMyDevices";
email: string;
sequenceId?: number;
}
export interface GpsPsnsMyDevicesData {
action: "gpsPsnsMyDevices";
sequenceId: number;
device_list: DeviceGpsInfo[];
}
export type GpsPsnsMyDevicesResponse = WsMessage<GpsPsnsMyDevicesData>;
export interface GpsPsnsSpecificDeviceRequest {
action: "gpsPsnsSpecificDevice";
email: string;
psn: string;
sequenceId?: number;
}
export interface GpsPsnsSpecificDeviceData {
action: "gpsPsnsSpecificDevice";
sequenceId: number;
device: DeviceGpsInfo;
}
export type GpsPsnsSpecificDeviceResponse = WsMessage<GpsPsnsSpecificDeviceData>;
export interface GpsPsnsMultiLiveViewRequest {
action: "gpsPsnsMultiLiveView";
email: string;
psns: string[];
sequenceId?: number;
}
export interface GpsPsnsMultiLiveViewData {
action: "gpsPsnsMultiLiveView";
sequenceId: number;
device_list: DeviceGpsInfo[];
}
export type GpsPsnsMultiLiveViewResponse = WsMessage<GpsPsnsMultiLiveViewData>;
export type GpsWebSocketRequest = GpsZoneNoAuthRequest | GpsZoneMyDevicesRequest | GpsZoneAllDevicesRequest | GpsZoneGroupMyDevicesRequest | GpsZoneGroupAllDevicesRequest | GpsPsnsMyDevicesRequest | GpsPsnsSpecificDeviceRequest | GpsPsnsMultiLiveViewRequest;
export type GpsWebSocketResponse = GpsZoneNoAuthResponse | GpsZoneMyDevicesResponse | GpsZoneAllDevicesResponse | GpsZoneGroupMyDevicesResponse | GpsZoneGroupAllDevicesResponse | GpsPsnsMyDevicesResponse | GpsPsnsSpecificDeviceResponse | GpsPsnsMultiLiveViewResponse;
export type ActionRequestMap = {
gpsZoneNoAuth: GpsZoneNoAuthRequest;
gpsZoneMyDevices: GpsZoneMyDevicesRequest;
gpsZoneAllDevices: GpsZoneAllDevicesRequest;
gpsZoneGroupMyDevices: GpsZoneGroupMyDevicesRequest;
gpsZoneGroupAllDevices: GpsZoneGroupAllDevicesRequest;
gpsPsnsMyDevices: GpsPsnsMyDevicesRequest;
gpsPsnsSpecificDevice: GpsPsnsSpecificDeviceRequest;
gpsPsnsMultiLiveView: GpsPsnsMultiLiveViewRequest;
};
export type ActionResponseMap = {
gpsZoneNoAuth: GpsZoneNoAuthResponse;
gpsZoneMyDevices: GpsZoneMyDevicesResponse;
gpsZoneAllDevices: GpsZoneAllDevicesResponse;
gpsZoneGroupMyDevices: GpsZoneGroupMyDevicesResponse;
gpsZoneGroupAllDevices: GpsZoneGroupAllDevicesResponse;
gpsPsnsMyDevices: GpsPsnsMyDevicesResponse;
gpsPsnsSpecificDevice: GpsPsnsSpecificDeviceResponse;
gpsPsnsMultiLiveView: GpsPsnsMultiLiveViewResponse;
};
export type ActionKey = keyof ActionRequestMap;
//# sourceMappingURL=types.d.ts.map