@iveri/contracts 0.50.0 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/clinic/clinic-location.type.d.ts +11 -0
- package/dist/api/clinic/clinic-my-appointment.type.d.ts +5 -0
- package/dist/api/clinic/clinic-payment.type.d.ts +11 -0
- package/dist/api/clinic/clinic-profile.type.d.ts +11 -0
- package/dist/api/clinic/clinic-public.type.d.ts +15 -0
- package/dist/api/clinic/clinic-staff.type.d.ts +9 -0
- package/dist/api/clinic/clinic-treatment.type.d.ts +19 -0
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import type { IsoDateTime } from '../../type/iso-date-time.type.js';
|
|
|
2
2
|
import type { Nullable } from '../../type/nil.type.js';
|
|
3
3
|
import type { UUID } from '../../type/uuid.type.js';
|
|
4
4
|
import type { ClinicResourceStatus } from './clinic-resource-status.enum.js';
|
|
5
|
+
import type { ClinicWorkingPeriod } from './clinic-staff.type.js';
|
|
5
6
|
import type { LocalizedText } from './localized-text.type.js';
|
|
6
7
|
export interface ClinicLocation {
|
|
7
8
|
id: UUID;
|
|
@@ -14,6 +15,10 @@ export interface ClinicLocation {
|
|
|
14
15
|
/** The specialties this branch offers, which clients filter branches by. */
|
|
15
16
|
specialtyIds: UUID[];
|
|
16
17
|
status: ClinicResourceStatus;
|
|
18
|
+
/** When the doors are open, which a visitor reads. Bookable times come from the staff's hours. */
|
|
19
|
+
openingHours: ClinicWorkingPeriod[];
|
|
20
|
+
latitude: Nullable<number>;
|
|
21
|
+
longitude: Nullable<number>;
|
|
17
22
|
createdAt: IsoDateTime;
|
|
18
23
|
updatedAt: IsoDateTime;
|
|
19
24
|
}
|
|
@@ -24,6 +29,9 @@ export interface CreateClinicLocationRequest {
|
|
|
24
29
|
phone?: Nullable<string>;
|
|
25
30
|
timeZone: string;
|
|
26
31
|
specialtyIds?: UUID[];
|
|
32
|
+
openingHours?: ClinicWorkingPeriod[];
|
|
33
|
+
latitude?: Nullable<number>;
|
|
34
|
+
longitude?: Nullable<number>;
|
|
27
35
|
}
|
|
28
36
|
export interface UpdateClinicLocationRequest {
|
|
29
37
|
name?: LocalizedText;
|
|
@@ -33,4 +41,7 @@ export interface UpdateClinicLocationRequest {
|
|
|
33
41
|
timeZone?: string;
|
|
34
42
|
specialtyIds?: UUID[];
|
|
35
43
|
status?: ClinicResourceStatus;
|
|
44
|
+
openingHours?: ClinicWorkingPeriod[];
|
|
45
|
+
latitude?: Nullable<number>;
|
|
46
|
+
longitude?: Nullable<number>;
|
|
36
47
|
}
|
|
@@ -26,6 +26,11 @@ export interface MyClinicAppointment {
|
|
|
26
26
|
/** Whether this visit is over and has not been reviewed yet. */
|
|
27
27
|
canReview: boolean;
|
|
28
28
|
}
|
|
29
|
+
/** Another time for a visit already booked. Everything agreed for it stays as it was. */
|
|
30
|
+
export interface RescheduleMyClinicAppointmentRequest {
|
|
31
|
+
startsAt: IsoDateTime;
|
|
32
|
+
staffMemberId: UUID;
|
|
33
|
+
}
|
|
29
34
|
export interface BookMyClinicAppointmentRequest {
|
|
30
35
|
locationId: UUID;
|
|
31
36
|
treatmentId: UUID;
|
|
@@ -106,6 +106,17 @@ export interface ClinicDailyTakings {
|
|
|
106
106
|
unsettled: ClinicUnsettledVisit[];
|
|
107
107
|
}
|
|
108
108
|
/** What a client holds at this clinic. */
|
|
109
|
+
/** One line of what somebody has paid, as they see it. Nothing the desk wrote about it is here. */
|
|
110
|
+
export interface MyClinicPayment {
|
|
111
|
+
id: UUID;
|
|
112
|
+
method: ClinicPaymentMethod;
|
|
113
|
+
/** Negative for a refund. */
|
|
114
|
+
amountMinor: number;
|
|
115
|
+
currency: string;
|
|
116
|
+
/** The treatment or course this was for, or `null` where it can no longer be named. */
|
|
117
|
+
subject: Nullable<LocalizedText>;
|
|
118
|
+
createdAt: IsoDateTime;
|
|
119
|
+
}
|
|
109
120
|
export interface MyClinicWallet {
|
|
110
121
|
bonusBalances: ClinicBonusBalance[];
|
|
111
122
|
courses: MyClinicCourse[];
|
|
@@ -3,12 +3,21 @@ import type { Nullable } from '../../type/nil.type.js';
|
|
|
3
3
|
import type { UUID } from '../../type/uuid.type.js';
|
|
4
4
|
import type { LocalizedText } from './localized-text.type.js';
|
|
5
5
|
/** How a clinic presents itself to the public, and the rules for booking online. */
|
|
6
|
+
/** Where else a clinic can be found. WhatsApp is a phone number and the rest are addresses. */
|
|
7
|
+
export interface ClinicSocialLinks {
|
|
8
|
+
instagram: Nullable<string>;
|
|
9
|
+
facebook: Nullable<string>;
|
|
10
|
+
tiktok: Nullable<string>;
|
|
11
|
+
whatsapp: Nullable<string>;
|
|
12
|
+
}
|
|
6
13
|
export interface ClinicProfile {
|
|
7
14
|
id: UUID;
|
|
8
15
|
/** The name its public address and app build use. Unique across every clinic. */
|
|
9
16
|
slug: string;
|
|
10
17
|
name: LocalizedText;
|
|
11
18
|
tagline: Nullable<LocalizedText>;
|
|
19
|
+
about: Nullable<LocalizedText>;
|
|
20
|
+
socialLinks: Nullable<ClinicSocialLinks>;
|
|
12
21
|
phone: Nullable<string>;
|
|
13
22
|
email: Nullable<string>;
|
|
14
23
|
/** The clinic's public website, which the links in its emails point at. No path, no trailing slash. */
|
|
@@ -28,6 +37,8 @@ export interface SaveClinicProfileRequest {
|
|
|
28
37
|
slug: string;
|
|
29
38
|
name: LocalizedText;
|
|
30
39
|
tagline?: Nullable<LocalizedText>;
|
|
40
|
+
about?: Nullable<LocalizedText>;
|
|
41
|
+
socialLinks?: Nullable<ClinicSocialLinks>;
|
|
31
42
|
phone?: Nullable<string>;
|
|
32
43
|
email?: Nullable<string>;
|
|
33
44
|
siteUrl?: Nullable<string>;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { IsoDateTime } from '../../type/iso-date-time.type.js';
|
|
2
2
|
import type { Nullable } from '../../type/nil.type.js';
|
|
3
3
|
import type { UUID } from '../../type/uuid.type.js';
|
|
4
|
+
import type { ClinicMediaImage } from './clinic-media.type.js';
|
|
5
|
+
import type { ClinicSocialLinks } from './clinic-profile.type.js';
|
|
6
|
+
import type { ClinicWorkingPeriod } from './clinic-staff.type.js';
|
|
7
|
+
import type { ClinicTreatmentContent } from './clinic-treatment.type.js';
|
|
4
8
|
import type { LocalizedText } from './localized-text.type.js';
|
|
5
9
|
/**
|
|
6
10
|
* What anybody on the internet may read.
|
|
@@ -12,6 +16,8 @@ export interface PublicClinic {
|
|
|
12
16
|
slug: string;
|
|
13
17
|
name: LocalizedText;
|
|
14
18
|
tagline: Nullable<LocalizedText>;
|
|
19
|
+
about: Nullable<LocalizedText>;
|
|
20
|
+
socialLinks: Nullable<ClinicSocialLinks>;
|
|
15
21
|
phone: Nullable<string>;
|
|
16
22
|
email: Nullable<string>;
|
|
17
23
|
bookingHorizonDays: number;
|
|
@@ -29,6 +35,9 @@ export interface PublicBranch {
|
|
|
29
35
|
phone: Nullable<string>;
|
|
30
36
|
timeZone: string;
|
|
31
37
|
specialtyIds: UUID[];
|
|
38
|
+
openingHours: ClinicWorkingPeriod[];
|
|
39
|
+
latitude: Nullable<number>;
|
|
40
|
+
longitude: Nullable<number>;
|
|
32
41
|
}
|
|
33
42
|
export interface PublicTreatmentOption {
|
|
34
43
|
id: UUID;
|
|
@@ -57,12 +66,18 @@ export interface PublicTreatment {
|
|
|
57
66
|
isBookableOnline: boolean;
|
|
58
67
|
options: PublicTreatmentOption[];
|
|
59
68
|
promotion: Nullable<PublicTreatmentPromotion>;
|
|
69
|
+
content: ClinicTreatmentContent;
|
|
70
|
+
image: Nullable<ClinicMediaImage>;
|
|
60
71
|
}
|
|
61
72
|
export interface PublicSpecialist {
|
|
62
73
|
id: UUID;
|
|
63
74
|
displayName: string;
|
|
64
75
|
locationId: UUID;
|
|
65
76
|
treatmentIds: UUID[];
|
|
77
|
+
title: Nullable<LocalizedText>;
|
|
78
|
+
bio: Nullable<LocalizedText>;
|
|
79
|
+
experienceYears: Nullable<number>;
|
|
80
|
+
photo: Nullable<ClinicMediaImage>;
|
|
66
81
|
}
|
|
67
82
|
/** A promotion running today, biggest discount first. */
|
|
68
83
|
export interface PublicPromotion {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { IsoDateTime } from '../../type/iso-date-time.type.js';
|
|
2
2
|
import type { Nullable } from '../../type/nil.type.js';
|
|
3
3
|
import type { UUID } from '../../type/uuid.type.js';
|
|
4
|
+
import type { ClinicMediaImage } from './clinic-media.type.js';
|
|
4
5
|
import type { ClinicResourceStatus } from './clinic-resource-status.enum.js';
|
|
6
|
+
import type { LocalizedText } from './localized-text.type.js';
|
|
5
7
|
/** One stretch of a weekly schedule, read in the location's own time zone. */
|
|
6
8
|
export interface ClinicWorkingPeriod {
|
|
7
9
|
/** ISO weekday: 1 is Monday and 7 is Sunday. */
|
|
@@ -21,6 +23,10 @@ export interface ClinicStaffMember {
|
|
|
21
23
|
/** The treatments this person may perform. */
|
|
22
24
|
treatmentIds: UUID[];
|
|
23
25
|
workingHours: ClinicWorkingPeriod[];
|
|
26
|
+
title: Nullable<LocalizedText>;
|
|
27
|
+
bio: Nullable<LocalizedText>;
|
|
28
|
+
experienceYears: Nullable<number>;
|
|
29
|
+
photo: Nullable<ClinicMediaImage>;
|
|
24
30
|
createdAt: IsoDateTime;
|
|
25
31
|
updatedAt: IsoDateTime;
|
|
26
32
|
}
|
|
@@ -33,6 +39,9 @@ export interface UpdateClinicStaffMemberRequest {
|
|
|
33
39
|
locationId?: UUID;
|
|
34
40
|
displayName?: string;
|
|
35
41
|
status?: ClinicResourceStatus;
|
|
42
|
+
title?: Nullable<LocalizedText>;
|
|
43
|
+
bio?: Nullable<LocalizedText>;
|
|
44
|
+
experienceYears?: Nullable<number>;
|
|
36
45
|
}
|
|
37
46
|
export interface ReplaceClinicStaffTreatmentsRequest {
|
|
38
47
|
treatmentIds: UUID[];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IsoDateTime } from '../../type/iso-date-time.type.js';
|
|
2
2
|
import type { Nullable } from '../../type/nil.type.js';
|
|
3
3
|
import type { UUID } from '../../type/uuid.type.js';
|
|
4
|
+
import type { ClinicMediaImage } from './clinic-media.type.js';
|
|
4
5
|
import type { ClinicResourceStatus } from './clinic-resource-status.enum.js';
|
|
5
6
|
import type { LocalizedText } from './localized-text.type.js';
|
|
6
7
|
/** One way of buying a treatment. A laser zone is an option; a treatment that does not vary has one. */
|
|
@@ -12,6 +13,20 @@ export interface ClinicTreatmentOption {
|
|
|
12
13
|
priceMinor: number;
|
|
13
14
|
sortOrder: number;
|
|
14
15
|
}
|
|
16
|
+
export interface ClinicTreatmentFaq {
|
|
17
|
+
question: LocalizedText;
|
|
18
|
+
answer: LocalizedText;
|
|
19
|
+
}
|
|
20
|
+
/** What a treatment's page says about it. Every part may be left empty. */
|
|
21
|
+
export interface ClinicTreatmentContent {
|
|
22
|
+
benefits: LocalizedText[];
|
|
23
|
+
steps: LocalizedText[];
|
|
24
|
+
preparation: Nullable<LocalizedText>;
|
|
25
|
+
aftercare: Nullable<LocalizedText>;
|
|
26
|
+
faq: ClinicTreatmentFaq[];
|
|
27
|
+
/** How many sessions a course usually takes, which is advice and limits nothing. */
|
|
28
|
+
recommendedSessions: Nullable<number>;
|
|
29
|
+
}
|
|
15
30
|
export interface ClinicTreatment {
|
|
16
31
|
id: UUID;
|
|
17
32
|
specialtyId: UUID;
|
|
@@ -27,6 +42,8 @@ export interface ClinicTreatment {
|
|
|
27
42
|
isBookableOnline: boolean;
|
|
28
43
|
status: ClinicResourceStatus;
|
|
29
44
|
options: ClinicTreatmentOption[];
|
|
45
|
+
content: ClinicTreatmentContent;
|
|
46
|
+
image: Nullable<ClinicMediaImage>;
|
|
30
47
|
createdAt: IsoDateTime;
|
|
31
48
|
updatedAt: IsoDateTime;
|
|
32
49
|
}
|
|
@@ -51,6 +68,7 @@ export interface CreateClinicTreatmentRequest {
|
|
|
51
68
|
minDaysBetweenSessions?: Nullable<number>;
|
|
52
69
|
isBookableOnline?: boolean;
|
|
53
70
|
options: CreateClinicTreatmentOptionRequest[];
|
|
71
|
+
content?: ClinicTreatmentContent;
|
|
54
72
|
}
|
|
55
73
|
export interface UpdateClinicTreatmentRequest {
|
|
56
74
|
specialtyId?: UUID;
|
|
@@ -61,4 +79,5 @@ export interface UpdateClinicTreatmentRequest {
|
|
|
61
79
|
minDaysBetweenSessions?: Nullable<number>;
|
|
62
80
|
isBookableOnline?: boolean;
|
|
63
81
|
status?: ClinicResourceStatus;
|
|
82
|
+
content?: ClinicTreatmentContent;
|
|
64
83
|
}
|