@devdash/bofrid-api-types 0.1.5

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.
Files changed (163) hide show
  1. package/README.md +24 -0
  2. package/dist/app.d.ts +23 -0
  3. package/dist/dev.d.ts +6 -0
  4. package/dist/export-openapi.d.ts +9 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/lib/auth.d.ts +20 -0
  7. package/dist/lib/criipto-bankid.d.ts +45 -0
  8. package/dist/lib/datalake.d.ts +7 -0
  9. package/dist/lib/docs-filter.d.ts +15 -0
  10. package/dist/lib/email-action-token.d.ts +26 -0
  11. package/dist/lib/email-utm.d.ts +42 -0
  12. package/dist/lib/email.d.ts +94 -0
  13. package/dist/lib/env.d.ts +18 -0
  14. package/dist/lib/errors.d.ts +6 -0
  15. package/dist/lib/helpers.d.ts +6 -0
  16. package/dist/lib/logger.d.ts +25 -0
  17. package/dist/lib/markets.d.ts +1 -0
  18. package/dist/lib/org-number.d.ts +5 -0
  19. package/dist/lib/ownership.d.ts +47 -0
  20. package/dist/lib/pdf-watermark.d.ts +25 -0
  21. package/dist/lib/personnummer.d.ts +14 -0
  22. package/dist/lib/posthog.d.ts +51 -0
  23. package/dist/lib/premium.d.ts +13 -0
  24. package/dist/lib/profile-resolver.d.ts +14 -0
  25. package/dist/lib/redirect-state.d.ts +40 -0
  26. package/dist/lib/revalidate.d.ts +23 -0
  27. package/dist/lib/schemas.d.ts +21 -0
  28. package/dist/lib/sentry.d.ts +31 -0
  29. package/dist/lib/slug.d.ts +5 -0
  30. package/dist/lib/sms.d.ts +22 -0
  31. package/dist/lib/system-log.d.ts +31 -0
  32. package/dist/lib/webhook-events.d.ts +26 -0
  33. package/dist/lib/webhooks.d.ts +28 -0
  34. package/dist/middleware/auth-debug.d.ts +17 -0
  35. package/dist/middleware/auth.d.ts +19 -0
  36. package/dist/middleware/bibi-logger.d.ts +6 -0
  37. package/dist/middleware/cors.d.ts +1 -0
  38. package/dist/middleware/request-id.d.ts +10 -0
  39. package/dist/middleware/sentry-context.d.ts +8 -0
  40. package/dist/routes/activity-feed.d.ts +64 -0
  41. package/dist/routes/admin-bevakningar.d.ts +200 -0
  42. package/dist/routes/admin-companies.d.ts +381 -0
  43. package/dist/routes/admin-email-jobs.d.ts +257 -0
  44. package/dist/routes/admin-email-logs.d.ts +9 -0
  45. package/dist/routes/admin-fb-leads.d.ts +32 -0
  46. package/dist/routes/admin-import.d.ts +188 -0
  47. package/dist/routes/admin-login-history.d.ts +9 -0
  48. package/dist/routes/admin-marketing.d.ts +15 -0
  49. package/dist/routes/admin-metabase.d.ts +9 -0
  50. package/dist/routes/admin-notifications.d.ts +7 -0
  51. package/dist/routes/admin-paying-customers.d.ts +74 -0
  52. package/dist/routes/admin-sessions.d.ts +10 -0
  53. package/dist/routes/admin-stats.d.ts +380 -0
  54. package/dist/routes/admin-system-logs.d.ts +10 -0
  55. package/dist/routes/admin-users.d.ts +299 -0
  56. package/dist/routes/admin-webhooks.d.ts +276 -0
  57. package/dist/routes/api-keys.d.ts +123 -0
  58. package/dist/routes/applications.d.ts +385 -0
  59. package/dist/routes/auth.d.ts +15 -0
  60. package/dist/routes/billing.d.ts +369 -0
  61. package/dist/routes/bostadsmerit.d.ts +51 -0
  62. package/dist/routes/companies.d.ts +842 -0
  63. package/dist/routes/contact-reveals.d.ts +102 -0
  64. package/dist/routes/conversations/handlers/conversation.d.ts +5 -0
  65. package/dist/routes/conversations/handlers/initiate.d.ts +4 -0
  66. package/dist/routes/conversations/handlers/messages.d.ts +5 -0
  67. package/dist/routes/conversations/handlers/state.d.ts +5 -0
  68. package/dist/routes/conversations/helpers/access.d.ts +11 -0
  69. package/dist/routes/conversations/helpers/enrich-conversation.d.ts +58 -0
  70. package/dist/routes/conversations/helpers/identity.d.ts +43 -0
  71. package/dist/routes/conversations/helpers/notify-recipient.d.ts +10 -0
  72. package/dist/routes/conversations/helpers/reconcile-reveal.d.ts +10 -0
  73. package/dist/routes/conversations/helpers/scrub-contact.d.ts +1 -0
  74. package/dist/routes/conversations/index.d.ts +422 -0
  75. package/dist/routes/conversations/routes.d.ts +924 -0
  76. package/dist/routes/conversations/schemas.d.ts +216 -0
  77. package/dist/routes/cron.d.ts +27 -0
  78. package/dist/routes/documents.d.ts +493 -0
  79. package/dist/routes/email-actions.d.ts +8 -0
  80. package/dist/routes/fastighetslista.d.ts +94 -0
  81. package/dist/routes/geo.d.ts +518 -0
  82. package/dist/routes/geocoding.d.ts +192 -0
  83. package/dist/routes/health.d.ts +43 -0
  84. package/dist/routes/housing-history.d.ts +381 -0
  85. package/dist/routes/index.d.ts +15321 -0
  86. package/dist/routes/leads.d.ts +281 -0
  87. package/dist/routes/listing-helpers.d.ts +33 -0
  88. package/dist/routes/listing-publications.d.ts +636 -0
  89. package/dist/routes/listings.d.ts +1846 -0
  90. package/dist/routes/location-interests.d.ts +754 -0
  91. package/dist/routes/lookup.d.ts +109 -0
  92. package/dist/routes/mejl.d.ts +377 -0
  93. package/dist/routes/profiles.d.ts +281 -0
  94. package/dist/routes/properties.d.ts +1266 -0
  95. package/dist/routes/public-listings.d.ts +1137 -0
  96. package/dist/routes/public-profiles.d.ts +293 -0
  97. package/dist/routes/references.d.ts +695 -0
  98. package/dist/routes/search-partners.d.ts +4 -0
  99. package/dist/routes/site-config.d.ts +103 -0
  100. package/dist/routes/storage.d.ts +367 -0
  101. package/dist/routes/tenant-boost.d.ts +229 -0
  102. package/dist/routes/tenants.d.ts +336 -0
  103. package/dist/routes/track.d.ts +19 -0
  104. package/dist/routes/translate.d.ts +51 -0
  105. package/dist/routes/users.d.ts +517 -0
  106. package/dist/routes/verification.d.ts +175 -0
  107. package/dist/routes/webhooks.d.ts +9 -0
  108. package/dist/rpc.d.ts +11 -0
  109. package/dist/serve.d.ts +5 -0
  110. package/dist/services/activity-feed/activity-feed.service.d.ts +26 -0
  111. package/dist/services/applications/approval.service.d.ts +17 -0
  112. package/dist/services/auth/bankid-login.service.d.ts +40 -0
  113. package/dist/services/billing/constants.d.ts +2 -0
  114. package/dist/services/billing/contact-billing.service.d.ts +59 -0
  115. package/dist/services/billing/customer.service.d.ts +14 -0
  116. package/dist/services/billing/invoice-item.service.d.ts +49 -0
  117. package/dist/services/billing/invoice.service.d.ts +21 -0
  118. package/dist/services/billing/listing-upgrade-checkout.service.d.ts +45 -0
  119. package/dist/services/billing/purchase-receipt-email.d.ts +23 -0
  120. package/dist/services/billing/reveal-allowance.service.d.ts +33 -0
  121. package/dist/services/billing/stripe.d.ts +6 -0
  122. package/dist/services/billing/subscription.service.d.ts +21 -0
  123. package/dist/services/billing/types.d.ts +64 -0
  124. package/dist/services/billing/verify-session.service.d.ts +17 -0
  125. package/dist/services/billing/webhook.service.d.ts +8 -0
  126. package/dist/services/bostadsmerit/calculator.d.ts +51 -0
  127. package/dist/services/bostadsmerit/couple-calculator.d.ts +46 -0
  128. package/dist/services/bostadsmerit/tracker.service.d.ts +45 -0
  129. package/dist/services/chat-access/unlock-chat.service.d.ts +62 -0
  130. package/dist/services/conversations/upsert-conversation.d.ts +11 -0
  131. package/dist/services/email-jobs/email-job-sender.d.ts +7 -0
  132. package/dist/services/email-jobs/email-job.service.d.ts +67 -0
  133. package/dist/services/geo/bevakning-matching.service.d.ts +67 -0
  134. package/dist/services/geo/geo-listings.service.d.ts +38 -0
  135. package/dist/services/geo/geo.service.d.ts +233 -0
  136. package/dist/services/geo/geocode.service.d.ts +16 -0
  137. package/dist/services/geo/market-insights-by-coords.service.d.ts +67 -0
  138. package/dist/services/geo/market-insights.service.d.ts +44 -0
  139. package/dist/services/geo/market-overview.service.d.ts +42 -0
  140. package/dist/services/homii/image.d.ts +24 -0
  141. package/dist/services/homii/index.d.ts +12 -0
  142. package/dist/services/homii/location.d.ts +32 -0
  143. package/dist/services/homii/mapper.d.ts +41 -0
  144. package/dist/services/homii/types.d.ts +91 -0
  145. package/dist/services/leads/constants.d.ts +32 -0
  146. package/dist/services/leads/generate-leads.service.d.ts +38 -0
  147. package/dist/services/leads/matching.service.d.ts +55 -0
  148. package/dist/services/leads/tier.service.d.ts +6 -0
  149. package/dist/services/leads/types.d.ts +27 -0
  150. package/dist/services/listings/seo.service.d.ts +57 -0
  151. package/dist/services/listings/status.d.ts +37 -0
  152. package/dist/services/mejl/client.d.ts +38 -0
  153. package/dist/services/mrkoll/client.d.ts +95 -0
  154. package/dist/services/mrkoll/import.d.ts +38 -0
  155. package/dist/services/mrkoll/match.d.ts +35 -0
  156. package/dist/services/notifications/bibi-projects.d.ts +43 -0
  157. package/dist/services/notifications/bibi.d.ts +229 -0
  158. package/dist/services/profiles/bankid-verify.d.ts +23 -0
  159. package/dist/services/realtime.d.ts +14 -0
  160. package/dist/services/references/history-linker.d.ts +19 -0
  161. package/dist/services/tenant-boost/constants.d.ts +120 -0
  162. package/dist/services/tenant-boost/tenant-boost.service.d.ts +59 -0
  163. package/package.json +29 -0
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Site config routes.
3
+ *
4
+ * GET /site-config — public, returns the singleton config (banner etc.)
5
+ * PATCH /admin/site-config — admin-only, updates the config
6
+ */
7
+ import { OpenAPIHono } from "@hono/zod-openapi";
8
+ import type { AppBindings } from "../app";
9
+ export declare const siteConfigApp: OpenAPIHono<AppBindings, {
10
+ "/site-config": {
11
+ $get: {
12
+ input: {};
13
+ output: {
14
+ id: string;
15
+ updatedAt: string;
16
+ banner: {
17
+ message: string;
18
+ isActive: boolean;
19
+ variant: "info" | "error" | "warning";
20
+ target: "all" | "tenants" | "landlords" | "admin";
21
+ isDismissable: boolean;
22
+ startsAt: string | null;
23
+ endsAt: string | null;
24
+ } | null;
25
+ updatedBy: string | null;
26
+ };
27
+ outputFormat: "json";
28
+ status: 200;
29
+ };
30
+ };
31
+ } & {
32
+ "/admin/site-config": {
33
+ $patch: {
34
+ input: {
35
+ json: {
36
+ banner?: {
37
+ message: string;
38
+ isActive: boolean;
39
+ variant: "info" | "error" | "warning";
40
+ target: "all" | "tenants" | "landlords" | "admin";
41
+ isDismissable: boolean;
42
+ startsAt: string | null;
43
+ endsAt: string | null;
44
+ } | undefined;
45
+ };
46
+ };
47
+ output: {
48
+ id: string;
49
+ updatedAt: string;
50
+ banner: {
51
+ message: string;
52
+ isActive: boolean;
53
+ variant: "info" | "error" | "warning";
54
+ target: "all" | "tenants" | "landlords" | "admin";
55
+ isDismissable: boolean;
56
+ startsAt: string | null;
57
+ endsAt: string | null;
58
+ } | null;
59
+ updatedBy: string | null;
60
+ };
61
+ outputFormat: "json";
62
+ status: 200;
63
+ } | {
64
+ input: {
65
+ json: {
66
+ banner?: {
67
+ message: string;
68
+ isActive: boolean;
69
+ variant: "info" | "error" | "warning";
70
+ target: "all" | "tenants" | "landlords" | "admin";
71
+ isDismissable: boolean;
72
+ startsAt: string | null;
73
+ endsAt: string | null;
74
+ } | undefined;
75
+ };
76
+ };
77
+ output: {
78
+ error: string;
79
+ };
80
+ outputFormat: "json";
81
+ status: 401;
82
+ } | {
83
+ input: {
84
+ json: {
85
+ banner?: {
86
+ message: string;
87
+ isActive: boolean;
88
+ variant: "info" | "error" | "warning";
89
+ target: "all" | "tenants" | "landlords" | "admin";
90
+ isDismissable: boolean;
91
+ startsAt: string | null;
92
+ endsAt: string | null;
93
+ } | undefined;
94
+ };
95
+ };
96
+ output: {
97
+ error: string;
98
+ };
99
+ outputFormat: "json";
100
+ status: 403;
101
+ };
102
+ };
103
+ }, "/">;
@@ -0,0 +1,367 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import type { AppBindings } from "../app";
3
+ export declare const storageApp: OpenAPIHono<AppBindings, {
4
+ "/storage/upload": {
5
+ $post: {
6
+ input: {
7
+ json: {
8
+ fileName: string;
9
+ file: string;
10
+ mimeType: string;
11
+ context: "company" | "property" | "listing" | "document" | "profile" | "planlosning";
12
+ order?: number | undefined;
13
+ entityId?: string | undefined;
14
+ };
15
+ };
16
+ output: {
17
+ url: string;
18
+ fileName: string;
19
+ context: "company" | "property" | "listing" | "document" | "profile" | "planlosning";
20
+ path?: string | undefined;
21
+ id?: string | undefined;
22
+ order?: number | undefined;
23
+ isPrimary?: boolean | undefined;
24
+ entityId?: string | undefined;
25
+ };
26
+ outputFormat: "json";
27
+ status: 200;
28
+ } | {
29
+ input: {
30
+ json: {
31
+ fileName: string;
32
+ file: string;
33
+ mimeType: string;
34
+ context: "company" | "property" | "listing" | "document" | "profile" | "planlosning";
35
+ order?: number | undefined;
36
+ entityId?: string | undefined;
37
+ };
38
+ };
39
+ output: {
40
+ error: string;
41
+ };
42
+ outputFormat: "json";
43
+ status: 400;
44
+ } | {
45
+ input: {
46
+ json: {
47
+ fileName: string;
48
+ file: string;
49
+ mimeType: string;
50
+ context: "company" | "property" | "listing" | "document" | "profile" | "planlosning";
51
+ order?: number | undefined;
52
+ entityId?: string | undefined;
53
+ };
54
+ };
55
+ output: {
56
+ error: string;
57
+ };
58
+ outputFormat: "json";
59
+ status: 403;
60
+ } | {
61
+ input: {
62
+ json: {
63
+ fileName: string;
64
+ file: string;
65
+ mimeType: string;
66
+ context: "company" | "property" | "listing" | "document" | "profile" | "planlosning";
67
+ order?: number | undefined;
68
+ entityId?: string | undefined;
69
+ };
70
+ };
71
+ output: {
72
+ error: string;
73
+ };
74
+ outputFormat: "json";
75
+ status: 404;
76
+ } | {
77
+ input: {
78
+ json: {
79
+ fileName: string;
80
+ file: string;
81
+ mimeType: string;
82
+ context: "company" | "property" | "listing" | "document" | "profile" | "planlosning";
83
+ order?: number | undefined;
84
+ entityId?: string | undefined;
85
+ };
86
+ };
87
+ output: {
88
+ error: string;
89
+ };
90
+ outputFormat: "json";
91
+ status: 500;
92
+ };
93
+ };
94
+ } & {
95
+ "/storage/presign": {
96
+ $post: {
97
+ input: {
98
+ json: {
99
+ fileName: string;
100
+ mimeType: string;
101
+ context: "property" | "listing" | "planlosning";
102
+ entityId: string;
103
+ };
104
+ };
105
+ output: {
106
+ error: string;
107
+ };
108
+ outputFormat: "json";
109
+ status: 400;
110
+ } | {
111
+ input: {
112
+ json: {
113
+ fileName: string;
114
+ mimeType: string;
115
+ context: "property" | "listing" | "planlosning";
116
+ entityId: string;
117
+ };
118
+ };
119
+ output: {
120
+ error: string;
121
+ };
122
+ outputFormat: "json";
123
+ status: 404;
124
+ } | {
125
+ input: {
126
+ json: {
127
+ fileName: string;
128
+ mimeType: string;
129
+ context: "property" | "listing" | "planlosning";
130
+ entityId: string;
131
+ };
132
+ };
133
+ output: {
134
+ error: string;
135
+ };
136
+ outputFormat: "json";
137
+ status: 500;
138
+ } | {
139
+ input: {
140
+ json: {
141
+ fileName: string;
142
+ mimeType: string;
143
+ context: "property" | "listing" | "planlosning";
144
+ entityId: string;
145
+ };
146
+ };
147
+ output: {
148
+ publicUrl: string;
149
+ presignedUrl: string;
150
+ r2Key: string;
151
+ };
152
+ outputFormat: "json";
153
+ status: 200;
154
+ };
155
+ };
156
+ } & {
157
+ "/storage/confirm": {
158
+ $post: {
159
+ input: {
160
+ json: {
161
+ publicUrl: string;
162
+ context: "property" | "listing" | "planlosning";
163
+ entityId: string;
164
+ };
165
+ };
166
+ output: {
167
+ error: string;
168
+ };
169
+ outputFormat: "json";
170
+ status: 400;
171
+ } | {
172
+ input: {
173
+ json: {
174
+ publicUrl: string;
175
+ context: "property" | "listing" | "planlosning";
176
+ entityId: string;
177
+ };
178
+ };
179
+ output: {
180
+ error: string;
181
+ };
182
+ outputFormat: "json";
183
+ status: 404;
184
+ } | {
185
+ input: {
186
+ json: {
187
+ publicUrl: string;
188
+ context: "property" | "listing" | "planlosning";
189
+ entityId: string;
190
+ };
191
+ };
192
+ output: {
193
+ error: string;
194
+ };
195
+ outputFormat: "json";
196
+ status: 500;
197
+ } | {
198
+ input: {
199
+ json: {
200
+ publicUrl: string;
201
+ context: "property" | "listing" | "planlosning";
202
+ entityId: string;
203
+ };
204
+ };
205
+ output: {
206
+ url: string;
207
+ id: string;
208
+ order: number;
209
+ isPrimary: boolean;
210
+ };
211
+ outputFormat: "json";
212
+ status: 200;
213
+ };
214
+ };
215
+ } & {
216
+ "/storage/from-url": {
217
+ $post: {
218
+ input: {
219
+ json: {
220
+ propertyId: string;
221
+ sourceUrl: string;
222
+ };
223
+ };
224
+ output: {
225
+ error: string;
226
+ };
227
+ outputFormat: "json";
228
+ status: 400;
229
+ } | {
230
+ input: {
231
+ json: {
232
+ propertyId: string;
233
+ sourceUrl: string;
234
+ };
235
+ };
236
+ output: {
237
+ error: string;
238
+ };
239
+ outputFormat: "json";
240
+ status: 404;
241
+ } | {
242
+ input: {
243
+ json: {
244
+ propertyId: string;
245
+ sourceUrl: string;
246
+ };
247
+ };
248
+ output: {
249
+ error: string;
250
+ };
251
+ outputFormat: "json";
252
+ status: 500;
253
+ } | {
254
+ input: {
255
+ json: {
256
+ propertyId: string;
257
+ sourceUrl: string;
258
+ };
259
+ };
260
+ output: {
261
+ url: string;
262
+ id: string;
263
+ order: number;
264
+ isPrimary: boolean;
265
+ };
266
+ outputFormat: "json";
267
+ status: 200;
268
+ };
269
+ };
270
+ } & {
271
+ "/storage/assets": {
272
+ $post: {
273
+ input: {
274
+ json: {
275
+ fileName: string;
276
+ file: string;
277
+ mimeType: string;
278
+ folder?: string | undefined;
279
+ };
280
+ };
281
+ output: {
282
+ error: string;
283
+ };
284
+ outputFormat: "json";
285
+ status: 400;
286
+ } | {
287
+ input: {
288
+ json: {
289
+ fileName: string;
290
+ file: string;
291
+ mimeType: string;
292
+ folder?: string | undefined;
293
+ };
294
+ };
295
+ output: {
296
+ error: string;
297
+ };
298
+ outputFormat: "json";
299
+ status: 500;
300
+ } | {
301
+ input: {
302
+ json: {
303
+ fileName: string;
304
+ file: string;
305
+ mimeType: string;
306
+ folder?: string | undefined;
307
+ };
308
+ };
309
+ output: {
310
+ key: string;
311
+ url: string;
312
+ size: number;
313
+ fileName: string;
314
+ mimeType: string;
315
+ };
316
+ outputFormat: "json";
317
+ status: 200;
318
+ };
319
+ };
320
+ } & {
321
+ "/storage/delete": {
322
+ $post: {
323
+ input: {
324
+ json: {
325
+ path: string;
326
+ imageId?: string | undefined;
327
+ context?: "company" | "property" | "listing" | "document" | "profile" | "planlosning" | undefined;
328
+ entityId?: string | undefined;
329
+ };
330
+ };
331
+ output: {
332
+ error: string;
333
+ };
334
+ outputFormat: "json";
335
+ status: 403;
336
+ } | {
337
+ input: {
338
+ json: {
339
+ path: string;
340
+ imageId?: string | undefined;
341
+ context?: "company" | "property" | "listing" | "document" | "profile" | "planlosning" | undefined;
342
+ entityId?: string | undefined;
343
+ };
344
+ };
345
+ output: {
346
+ error: string;
347
+ };
348
+ outputFormat: "json";
349
+ status: 500;
350
+ } | {
351
+ input: {
352
+ json: {
353
+ path: string;
354
+ imageId?: string | undefined;
355
+ context?: "company" | "property" | "listing" | "document" | "profile" | "planlosning" | undefined;
356
+ entityId?: string | undefined;
357
+ };
358
+ };
359
+ output: {
360
+ path: string;
361
+ deleted: boolean;
362
+ };
363
+ outputFormat: "json";
364
+ status: 200;
365
+ };
366
+ };
367
+ }, "/">;
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Tenant Boost Routes — Subscription checkout, status, and management.
3
+ */
4
+ import { OpenAPIHono } from "@hono/zod-openapi";
5
+ import type { AppBindings } from "../app";
6
+ export declare const tenantBoostApp: OpenAPIHono<AppBindings, {
7
+ "/tenant-boost/checkout": {
8
+ $post: {
9
+ input: {
10
+ json: {
11
+ returnUrl: string;
12
+ plan?: "monthly" | "quarterly" | "halfyear" | undefined;
13
+ };
14
+ };
15
+ output: {
16
+ error: string;
17
+ };
18
+ outputFormat: "json";
19
+ status: 401;
20
+ } | {
21
+ input: {
22
+ json: {
23
+ returnUrl: string;
24
+ plan?: "monthly" | "quarterly" | "halfyear" | undefined;
25
+ };
26
+ };
27
+ output: {
28
+ error: string;
29
+ };
30
+ outputFormat: "json";
31
+ status: 500;
32
+ } | {
33
+ input: {
34
+ json: {
35
+ returnUrl: string;
36
+ plan?: "monthly" | "quarterly" | "halfyear" | undefined;
37
+ };
38
+ };
39
+ output: {
40
+ boostExpiresAt: string;
41
+ alreadySubscribed: true;
42
+ } | {
43
+ checkoutUrl: string;
44
+ };
45
+ outputFormat: "json";
46
+ status: 200;
47
+ };
48
+ };
49
+ } & {
50
+ "/tenant-boost/status": {
51
+ $get: {
52
+ input: {};
53
+ output: {
54
+ error: string;
55
+ };
56
+ outputFormat: "json";
57
+ status: 401;
58
+ } | {
59
+ input: {};
60
+ output: {
61
+ status: "active" | "inactive" | "trialing";
62
+ active: boolean;
63
+ expiresAt: string | null;
64
+ subscriptionId: string | null;
65
+ cancelAtPeriodEnd: boolean;
66
+ trialEnd: string | null;
67
+ };
68
+ outputFormat: "json";
69
+ status: 200;
70
+ };
71
+ };
72
+ } & {
73
+ "/tenant-boost/price": {
74
+ $get: {
75
+ input: {};
76
+ output: {
77
+ currency: string;
78
+ plans: {
79
+ id: string;
80
+ totalOre: number;
81
+ pricePerMonthOre: number;
82
+ label: {
83
+ sv: string;
84
+ en: string;
85
+ };
86
+ priceLabel: {
87
+ sv: string;
88
+ en: string;
89
+ };
90
+ totalLabel: {
91
+ sv: string;
92
+ en: string;
93
+ };
94
+ savingsPercent: number;
95
+ }[];
96
+ features: string[];
97
+ tagline: {
98
+ sv: string;
99
+ en: string;
100
+ };
101
+ pitch: {
102
+ sv: string;
103
+ en: string;
104
+ };
105
+ };
106
+ outputFormat: "json";
107
+ status: 200;
108
+ };
109
+ };
110
+ } & {
111
+ "/tenant-boost/cancel": {
112
+ $post: {
113
+ input: {
114
+ json: {
115
+ returnUrl: string;
116
+ };
117
+ };
118
+ output: {
119
+ error: string;
120
+ };
121
+ outputFormat: "json";
122
+ status: 401;
123
+ } | {
124
+ input: {
125
+ json: {
126
+ returnUrl: string;
127
+ };
128
+ };
129
+ output: {
130
+ error: string;
131
+ };
132
+ outputFormat: "json";
133
+ status: 500;
134
+ } | {
135
+ input: {
136
+ json: {
137
+ returnUrl: string;
138
+ };
139
+ };
140
+ output: {
141
+ portalUrl: string;
142
+ };
143
+ outputFormat: "json";
144
+ status: 200;
145
+ };
146
+ };
147
+ } & {
148
+ "/tenant-boost/admin/:userId/gift": {
149
+ $post: {
150
+ input: {
151
+ param: {
152
+ userId: string;
153
+ };
154
+ } & {
155
+ json: {
156
+ days?: number | undefined;
157
+ };
158
+ };
159
+ output: {
160
+ error: string;
161
+ };
162
+ outputFormat: "json";
163
+ status: 401;
164
+ } | {
165
+ input: {
166
+ param: {
167
+ userId: string;
168
+ };
169
+ } & {
170
+ json: {
171
+ days?: number | undefined;
172
+ };
173
+ };
174
+ output: {
175
+ error: string;
176
+ };
177
+ outputFormat: "json";
178
+ status: 404;
179
+ } | {
180
+ input: {
181
+ param: {
182
+ userId: string;
183
+ };
184
+ } & {
185
+ json: {
186
+ days?: number | undefined;
187
+ };
188
+ };
189
+ output: {
190
+ error: string;
191
+ };
192
+ outputFormat: "json";
193
+ status: 403;
194
+ } | {
195
+ input: {
196
+ param: {
197
+ userId: string;
198
+ };
199
+ } & {
200
+ json: {
201
+ days?: number | undefined;
202
+ };
203
+ };
204
+ output: {
205
+ error: string;
206
+ };
207
+ outputFormat: "json";
208
+ status: 500;
209
+ } | {
210
+ input: {
211
+ param: {
212
+ userId: string;
213
+ };
214
+ } & {
215
+ json: {
216
+ days?: number | undefined;
217
+ };
218
+ };
219
+ output: {
220
+ success: boolean;
221
+ boostExpiresAt: string;
222
+ alreadyBoosted: boolean;
223
+ conversationsUnlocked: number;
224
+ };
225
+ outputFormat: "json";
226
+ status: 200;
227
+ };
228
+ };
229
+ }, "/">;