@aptly-as/types
Version:
Aptly types and enums
58 lines (57 loc) • 2.01 kB
TypeScript
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;
}