UNPKG

@aptly-as/types

Version:
58 lines (57 loc) 2.01 kB
import { AptlyOrganizationSchema } from './organization.js'; import { AptlyProjectSchema } from './project.js'; import { AptlyUnitSchema } from './unit.js'; import { AptlyUserSchema } from './user.js'; export type AptlyBooking = AptlyBookingSchema<string, string>; export interface AptlyBookingSchema<ID, DATE> { _id: ID; organization: ID | AptlyOrganizationSchema<ID, DATE>; project: ID | AptlyProjectSchema<ID, DATE>; unit: ID | AptlyUnitSchema<ID, DATE>; user: ID | AptlyUserSchema<ID, DATE>; availability: ID | AptlyAvailabilitySchema<ID, DATE>; calendar: ID | AptlyAvailabilityCalendarSchema<ID, DATE>; availableTime: ID; from: DATE; to: DATE; archived?: boolean; } export type AptlyAvailability = AptlyAvailabilitySchema<string, string>; export interface AptlyAvailabilitySchema<ID, DATE> { _id: ID; organization?: ID | AptlyOrganizationSchema<ID, DATE>; project: ID | AptlyProjectSchema<ID, DATE>; archived?: boolean; calendars: AptlyAvailabilityCalendarSchema<ID, DATE>[]; } export type AptlyAvailabilityCalendar = AptlyAvailabilityCalendarSchema<string, string>; export interface AptlyAvailabilityCalendarSchema<ID, DATE> { _id: ID; name: string; description: string; fee?: number; location: { name: string; formatted_address?: string; geometry?: { location: { lat: number; lng: number; }; }; }; attendees: (ID | AptlyUserSchema<ID, DATE>)[]; availableTimes: AptlyAvailabilityCalendarAvailableTimeSchema<ID, DATE>[]; endAvailabilityAt?: DATE | null; userAvailability?: ID[]; } export type AptlyAvailabilityCalendarAvailableTime = AptlyAvailabilityCalendarAvailableTimeSchema<string, string>; export interface AptlyAvailabilityCalendarAvailableTimeSchema<ID, DATE> { _id: ID; from: DATE; to: DATE; booked: boolean; booking: ID; user?: ID | AptlyUserSchema<ID, DATE>; calendar?: ID; }