@vulog/aima-unavailability
v1.2.48
Published
Vehicle unavailability management — CRUD operations and cron expression generation.
Readme
@vulog/aima-unavailability
Vehicle unavailability management — CRUD operations and cron expression generation.
Installation
npm install @vulog/aima-unavailability @vulog/aima-client @vulog/aima-coreUsage
import { getUnavailabilities, createUnavailability, generateCronExpression } from '@vulog/aima-unavailability';
import { getClient } from '@vulog/aima-client';
const client = getClient({ ... });
const cron = generateCronExpression('2024-06-01T09:00:00', 'Europe/Paris');
const unavailability = await createUnavailability(client, {
cronExpression: cron,
duration: 3600,
maintenanceTitle: 'Scheduled service',
vehicleId: 'vehicle-uuid',
});API Reference
getUnavailabilitiesByVehicle
getUnavailabilitiesByVehicle(client: Client, vehicleId: string): Promise<Unavailability[]>Returns all unavailabilities for a specific vehicle.
| Param | Type | Description |
| ----------- | -------- | ------------------------- |
| client | Client | Authenticated AIMA client |
| vehicleId | string | Vehicle identifier |
getUnavailabilities
getUnavailabilities(client: Client, options: UnavailabilityOptions): Promise<Unavailability[]>Returns all unavailabilities in a time range. Auto-paginates up to 50 pages; throws if that limit is exceeded.
| Param | Type | Description |
| --------- | ---------------------- | ------------------------- |
| client | Client | Authenticated AIMA client |
| options | UnavailabilityOptions| Date range and page |
createUnavailability
createUnavailability(client: Client, body: CreateUnavailabilityBody): Promise<Unavailability>Creates a new unavailability entry.
| Param | Type | Description |
| -------- | ------------------------- | ------------------------- |
| client | Client | Authenticated AIMA client |
| body | CreateUnavailabilityBody| Creation payload |
updateUnavailability
updateUnavailability(client: Client, id: number, body: UpdateUnavailabilityBody): Promise<Unavailability>Updates an existing unavailability entry.
| Param | Type | Description |
| -------- | ------------------------- | ------------------------- |
| client | Client | Authenticated AIMA client |
| id | number | Unavailability ID |
| body | UpdateUnavailabilityBody| Update payload |
deleteUnavailability
deleteUnavailability(client: Client, id: number): Promise<void>Deletes an unavailability by ID. Idempotent — 404 responses are silently ignored.
| Param | Type | Description |
| -------- | -------- | ------------------------- |
| client | Client | Authenticated AIMA client |
| id | number | Unavailability ID |
deleteUnavailabilitiesByVehicle
deleteUnavailabilitiesByVehicle(client: Client, vehicleId: string): Promise<void>Deletes all unavailabilities for a vehicle. Idempotent — 404 responses are silently ignored.
| Param | Type | Description |
| ----------- | -------- | ------------------------- |
| client | Client | Authenticated AIMA client |
| vehicleId | string | Vehicle identifier |
generateCronExpression
generateCronExpression(date: Date | string, timezone?: string): stringPure utility — no Client required. Generates a Quartz cron expression in the format "second minute hour day month ? year". Without a timezone, local time is used. With a timezone (e.g. 'Europe/Paris'), the date is converted via Intl.DateTimeFormat.
| Param | Type | Description |
| ---------- | ----------------- | ------------------------------------- |
| date | Date \| string | The target date/time |
| timezone | string | IANA timezone name (optional) |
Returns a Quartz cron string.
Types
Unavailability
{
id: number;
cronExpression: string;
duration: number;
maintenanceTitle: string;
vehicleId: string;
}CreateUnavailabilityBody
{
cronExpression: string;
duration: number;
maintenanceTitle: string;
vehicleId: string;
}UpdateUnavailabilityBody
Alias for CreateUnavailabilityBody.
UnavailabilityOptions
{
from: string; // ISO datetime without timezone offset, e.g. '2024-01-01T00:00:00'
to: string; // ISO datetime without timezone offset
page?: number;
}