@middlewr/contracts 0.0.41 → 0.0.42

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/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/index.ts
2
2
  import { oc } from "@orpc/contract";
3
- import { z as z11 } from "zod";
3
+ import { z as z12 } from "zod";
4
4
 
5
5
  // src/analytics.schema.ts
6
6
  import { z } from "zod";
@@ -160,6 +160,10 @@ var WorkspaceApiKeyIdParamSchema = z4.object({
160
160
  workspace_id: z4.string().uuid(),
161
161
  api_key_id: z4.string().uuid()
162
162
  });
163
+ var LinkTemplateIdParamSchema = z4.object({
164
+ workspace_id: z4.string().uuid(),
165
+ link_template_id: z4.string().uuid()
166
+ });
163
167
  var TokenParamSchema = z4.object({
164
168
  token: z4.string()
165
169
  });
@@ -194,8 +198,8 @@ var UpdateDomainInputSchema = z5.object({
194
198
  }).optional()
195
199
  });
196
200
 
197
- // src/links.schema.ts
198
- import { z as z8 } from "zod";
201
+ // src/link-templates.schema.ts
202
+ import { z as z7 } from "zod";
199
203
 
200
204
  // src/rules.schema.ts
201
205
  import { z as z6 } from "zod";
@@ -283,251 +287,287 @@ var RuleGraphSchema = z6.object({
283
287
  path: ["entry"]
284
288
  }).nullable();
285
289
 
286
- // src/tags.schema.ts
287
- import { z as z7 } from "zod";
288
- var TagSchema = z7.object({
290
+ // src/link-templates.schema.ts
291
+ var LinkTemplateSchema = z7.object({
289
292
  id: z7.string().uuid(),
290
293
  workspace_id: z7.string().uuid(),
291
- name: z7.string(),
292
- color: z7.string().nullable(),
294
+ title: z7.string(),
295
+ description: z7.string().nullable(),
296
+ rule_graph: RuleGraphSchema,
293
297
  created_at: z7.coerce.date(),
294
298
  updated_at: z7.coerce.date().nullable()
295
299
  });
296
- var CreateTagInputSchema = z7.object({
297
- name: z7.string().min(1).max(50),
298
- color: z7.string().regex(/^#[0-9A-Fa-f]{6}$/).optional()
300
+ var CreateLinkTemplateInputSchema = z7.object({
301
+ title: z7.string().min(1).max(255),
302
+ description: z7.string().max(2e3).optional(),
303
+ rule_graph: RuleGraphSchema
299
304
  });
300
- var UpdateTagInputSchema = z7.object({
301
- name: z7.string().min(1).max(50).optional(),
302
- color: z7.string().regex(/^#[0-9A-Fa-f]{6}$/).nullable().optional()
305
+ var UpdateLinkTemplateInputSchema = z7.object({
306
+ title: z7.string().min(1).max(255).optional(),
307
+ description: z7.string().max(2e3).nullable().optional(),
308
+ rule_graph: RuleGraphSchema.optional()
309
+ });
310
+ var LinkTemplateFiltersSchema = z7.object({
311
+ search: z7.string().optional(),
312
+ page: z7.coerce.number().int().min(1).default(1),
313
+ per_page: z7.coerce.number().int().min(1).max(100).default(20)
314
+ });
315
+ var PaginatedLinkTemplatesSchema = z7.object({
316
+ link_templates: z7.array(LinkTemplateSchema),
317
+ total: z7.number().int(),
318
+ page: z7.number().int(),
319
+ per_page: z7.number().int(),
320
+ total_pages: z7.number().int()
303
321
  });
304
322
 
305
323
  // src/links.schema.ts
306
- var DotStyleSchema = z8.enum(["square", "dots", "rounded", "classy", "classy-rounded", "extra-rounded"]);
307
- var EyeOuterStyleSchema = z8.enum(["square", "dot", "extra-rounded"]);
308
- var EyeInnerStyleSchema = z8.enum(["square", "dot"]);
309
- var QrCodeSettingsSchema = z8.object({
310
- fg_color: z8.string().max(20),
311
- bg_color: z8.string().max(20),
324
+ import { z as z9 } from "zod";
325
+
326
+ // src/tags.schema.ts
327
+ import { z as z8 } from "zod";
328
+ var TagSchema = z8.object({
329
+ id: z8.string().uuid(),
330
+ workspace_id: z8.string().uuid(),
331
+ name: z8.string(),
332
+ color: z8.string().nullable(),
333
+ created_at: z8.coerce.date(),
334
+ updated_at: z8.coerce.date().nullable()
335
+ });
336
+ var CreateTagInputSchema = z8.object({
337
+ name: z8.string().min(1).max(50),
338
+ color: z8.string().regex(/^#[0-9A-Fa-f]{6}$/).optional()
339
+ });
340
+ var UpdateTagInputSchema = z8.object({
341
+ name: z8.string().min(1).max(50).optional(),
342
+ color: z8.string().regex(/^#[0-9A-Fa-f]{6}$/).nullable().optional()
343
+ });
344
+
345
+ // src/links.schema.ts
346
+ var DotStyleSchema = z9.enum(["square", "dots", "rounded", "classy", "classy-rounded", "extra-rounded"]);
347
+ var EyeOuterStyleSchema = z9.enum(["square", "dot", "extra-rounded"]);
348
+ var EyeInnerStyleSchema = z9.enum(["square", "dot"]);
349
+ var QrCodeSettingsSchema = z9.object({
350
+ fg_color: z9.string().max(20),
351
+ bg_color: z9.string().max(20),
312
352
  dot_style: DotStyleSchema,
313
353
  eye_outer_style: EyeOuterStyleSchema,
314
354
  eye_inner_style: EyeInnerStyleSchema,
315
- frame_enabled: z8.boolean(),
316
- frame_text: z8.string().max(255),
317
- frame_color: z8.string().max(20),
318
- frame_text_color: z8.string().max(20),
319
- logo_size: z8.number().int().min(1).nullable().optional()
355
+ frame_enabled: z9.boolean(),
356
+ frame_text: z9.string().max(255),
357
+ frame_color: z9.string().max(20),
358
+ frame_text_color: z9.string().max(20),
359
+ logo_size: z9.number().int().min(1).nullable().optional()
320
360
  });
321
- var LinkSchema = z8.object({
322
- id: z8.string().uuid(),
323
- workspace_id: z8.string().uuid(),
324
- domain_id: z8.string().uuid(),
325
- created_by_id: z8.string().uuid(),
326
- original_url: z8.string().url(),
327
- short_code: z8.string(),
328
- title: z8.string().nullable(),
329
- description: z8.string().nullable(),
330
- utm_source: z8.string().nullable(),
331
- utm_medium: z8.string().nullable(),
332
- utm_campaign: z8.string().nullable(),
333
- utm_term: z8.string().nullable(),
334
- utm_content: z8.string().nullable(),
335
- password: z8.string().nullable(),
336
- starts_at: z8.coerce.date().nullable(),
337
- expires_at: z8.coerce.date().nullable(),
338
- fallback_url: z8.string().nullable(),
339
- is_active: z8.boolean(),
340
- redirect_type: z8.number().int(),
341
- click_count: z8.coerce.number().int(),
342
- click_count_updated_at: z8.coerce.date().nullable(),
343
- created_at: z8.coerce.date(),
344
- updated_at: z8.coerce.date().nullable(),
361
+ var LinkSchema = z9.object({
362
+ id: z9.string().uuid(),
363
+ workspace_id: z9.string().uuid(),
364
+ domain_id: z9.string().uuid(),
365
+ created_by_id: z9.string().uuid(),
366
+ original_url: z9.string().url(),
367
+ short_code: z9.string(),
368
+ title: z9.string().nullable(),
369
+ description: z9.string().nullable(),
370
+ utm_source: z9.string().nullable(),
371
+ utm_medium: z9.string().nullable(),
372
+ utm_campaign: z9.string().nullable(),
373
+ utm_term: z9.string().nullable(),
374
+ utm_content: z9.string().nullable(),
375
+ password: z9.string().nullable(),
376
+ starts_at: z9.coerce.date().nullable(),
377
+ expires_at: z9.coerce.date().nullable(),
378
+ fallback_url: z9.string().nullable(),
379
+ is_active: z9.boolean(),
380
+ redirect_type: z9.number().int(),
381
+ click_count: z9.coerce.number().int(),
382
+ click_count_updated_at: z9.coerce.date().nullable(),
383
+ created_at: z9.coerce.date(),
384
+ updated_at: z9.coerce.date().nullable(),
345
385
  qr_code_settings: QrCodeSettingsSchema.nullable(),
346
- qr_logo_key: z8.string().nullable(),
347
- logo_url: z8.string().nullable(),
348
- link_type: z8.enum(["redirect", "rules"]).default("redirect"),
386
+ qr_logo_key: z9.string().nullable(),
387
+ logo_url: z9.string().nullable(),
388
+ link_type: z9.enum(["redirect", "rules"]).default("redirect"),
349
389
  rule_graph: RuleGraphSchema.optional(),
350
- tags: z8.array(TagSchema)
351
- });
352
- var CreateLinkInputSchema = z8.object({
353
- original_url: z8.string().url().max(2048),
354
- domain_id: z8.string().uuid().optional(),
355
- short_code: z8.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
356
- title: z8.string().max(255).optional(),
357
- description: z8.string().max(2e3).optional(),
358
- utm_source: z8.string().max(255).optional(),
359
- utm_medium: z8.string().max(255).optional(),
360
- utm_campaign: z8.string().max(255).optional(),
361
- utm_term: z8.string().max(255).optional(),
362
- utm_content: z8.string().max(255).optional(),
363
- password: z8.string().min(4).max(100).optional(),
364
- starts_at: z8.coerce.date().optional(),
365
- expires_at: z8.coerce.date().optional(),
366
- fallback_url: z8.string().url().max(2048).optional(),
367
- redirect_type: z8.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
390
+ tags: z9.array(TagSchema)
391
+ });
392
+ var CreateLinkInputSchema = z9.object({
393
+ original_url: z9.string().url().max(2048),
394
+ domain_id: z9.string().uuid().optional(),
395
+ short_code: z9.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
396
+ title: z9.string().max(255).optional(),
397
+ description: z9.string().max(2e3).optional(),
398
+ utm_source: z9.string().max(255).optional(),
399
+ utm_medium: z9.string().max(255).optional(),
400
+ utm_campaign: z9.string().max(255).optional(),
401
+ utm_term: z9.string().max(255).optional(),
402
+ utm_content: z9.string().max(255).optional(),
403
+ password: z9.string().min(4).max(100).optional(),
404
+ starts_at: z9.coerce.date().optional(),
405
+ expires_at: z9.coerce.date().optional(),
406
+ fallback_url: z9.string().url().max(2048).optional(),
407
+ redirect_type: z9.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
368
408
  qr_code_settings: QrCodeSettingsSchema.nullable().optional(),
369
- tag_ids: z8.array(z8.string().uuid()).optional(),
370
- link_type: z8.enum(["redirect", "rules"]).optional(),
409
+ tag_ids: z9.array(z9.string().uuid()).optional(),
410
+ link_type: z9.enum(["redirect", "rules"]).optional(),
371
411
  rule_graph: RuleGraphSchema.optional()
372
412
  }).refine((data) => data.link_type !== "rules" || data.rule_graph != null, {
373
413
  message: 'rule_graph is required when link_type is "rules"',
374
414
  path: ["rule_graph"]
375
415
  });
376
- var UpdateLinkInputSchema = z8.object({
377
- original_url: z8.string().url().max(2048).optional(),
378
- domain_id: z8.string().uuid().optional(),
379
- short_code: z8.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
380
- title: z8.string().max(255).nullable().optional(),
381
- description: z8.string().max(2e3).nullable().optional(),
382
- utm_source: z8.string().max(255).nullable().optional(),
383
- utm_medium: z8.string().max(255).nullable().optional(),
384
- utm_campaign: z8.string().max(255).nullable().optional(),
385
- utm_term: z8.string().max(255).nullable().optional(),
386
- utm_content: z8.string().max(255).nullable().optional(),
387
- password: z8.string().min(4).max(100).nullable().optional(),
388
- starts_at: z8.coerce.date().nullable().optional(),
389
- expires_at: z8.coerce.date().nullable().optional(),
390
- fallback_url: z8.string().url().max(2048).nullable().optional(),
391
- is_active: z8.boolean().optional(),
392
- redirect_type: z8.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
416
+ var UpdateLinkInputSchema = z9.object({
417
+ original_url: z9.string().url().max(2048).optional(),
418
+ domain_id: z9.string().uuid().optional(),
419
+ short_code: z9.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
420
+ title: z9.string().max(255).nullable().optional(),
421
+ description: z9.string().max(2e3).nullable().optional(),
422
+ utm_source: z9.string().max(255).nullable().optional(),
423
+ utm_medium: z9.string().max(255).nullable().optional(),
424
+ utm_campaign: z9.string().max(255).nullable().optional(),
425
+ utm_term: z9.string().max(255).nullable().optional(),
426
+ utm_content: z9.string().max(255).nullable().optional(),
427
+ password: z9.string().min(4).max(100).nullable().optional(),
428
+ starts_at: z9.coerce.date().nullable().optional(),
429
+ expires_at: z9.coerce.date().nullable().optional(),
430
+ fallback_url: z9.string().url().max(2048).nullable().optional(),
431
+ is_active: z9.boolean().optional(),
432
+ redirect_type: z9.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
393
433
  qr_code_settings: QrCodeSettingsSchema.nullable().optional(),
394
- tag_ids: z8.array(z8.string().uuid()).optional(),
395
- link_type: z8.enum(["redirect", "rules"]).optional(),
434
+ tag_ids: z9.array(z9.string().uuid()).optional(),
435
+ link_type: z9.enum(["redirect", "rules"]).optional(),
396
436
  rule_graph: RuleGraphSchema.optional()
397
437
  }).refine((data) => data.link_type !== "rules" || data.rule_graph != null, {
398
438
  message: 'rule_graph is required when link_type is "rules"',
399
439
  path: ["rule_graph"]
400
440
  });
401
- var stringToBoolean = z8.union([z8.boolean(), z8.enum(["true", "false"])]).transform((val) => typeof val === "string" ? val === "true" : val);
402
- var LinkFiltersSchema = z8.object({
403
- search: z8.string().optional(),
404
- domain_ids: z8.array(z8.string().uuid()).optional(),
441
+ var stringToBoolean = z9.union([z9.boolean(), z9.enum(["true", "false"])]).transform((val) => typeof val === "string" ? val === "true" : val);
442
+ var LinkFiltersSchema = z9.object({
443
+ search: z9.string().optional(),
444
+ domain_ids: z9.array(z9.string().uuid()).optional(),
405
445
  is_active: stringToBoolean.optional(),
406
446
  has_expiration: stringToBoolean.optional(),
407
447
  expired: stringToBoolean.optional(),
408
- created_from: z8.coerce.date().optional(),
409
- created_to: z8.coerce.date().optional(),
410
- expires_from: z8.coerce.date().optional(),
411
- expires_to: z8.coerce.date().optional(),
412
- tag_ids: z8.array(z8.string().uuid()).optional(),
413
- sort_by: z8.enum(["created_at", "title", "click_count", "original_url"]).default("created_at"),
414
- sort_order: z8.enum(["asc", "desc"]).default("desc"),
415
- page: z8.coerce.number().int().min(1).default(1),
416
- per_page: z8.coerce.number().int().min(1).max(100).default(20)
448
+ created_from: z9.coerce.date().optional(),
449
+ created_to: z9.coerce.date().optional(),
450
+ expires_from: z9.coerce.date().optional(),
451
+ expires_to: z9.coerce.date().optional(),
452
+ tag_ids: z9.array(z9.string().uuid()).optional(),
453
+ sort_by: z9.enum(["created_at", "title", "click_count", "original_url"]).default("created_at"),
454
+ sort_order: z9.enum(["asc", "desc"]).default("desc"),
455
+ page: z9.coerce.number().int().min(1).default(1),
456
+ per_page: z9.coerce.number().int().min(1).max(100).default(20)
417
457
  });
418
458
  var ExportLinksFiltersSchema = LinkFiltersSchema.omit({ page: true, per_page: true });
419
- var PaginatedLinksSchema = z8.object({
420
- links: z8.array(LinkSchema),
421
- total: z8.number().int(),
422
- page: z8.number().int(),
423
- per_page: z8.number().int(),
424
- total_pages: z8.number().int()
425
- });
426
- var LinkJobSchema = z8.object({
427
- id: z8.string().uuid(),
428
- workspace_id: z8.string().uuid(),
429
- type: z8.string(),
430
- status: z8.enum(["pending", "processing", "completed", "failed"]),
431
- total_rows: z8.number().int(),
432
- succeeded_count: z8.number().int(),
433
- failed_count: z8.number().int(),
434
- error: z8.string().nullable(),
435
- created_by_id: z8.string().uuid(),
436
- created_at: z8.date(),
437
- completed_at: z8.date().nullable()
438
- });
439
- var LinkJobIdParamSchema = z8.object({
440
- workspace_id: z8.string().uuid(),
441
- job_id: z8.string().uuid()
442
- });
443
-
444
- // src/users.schema.ts
445
- import { z as z9 } from "zod";
446
- var UserSchema = z9.object({
459
+ var PaginatedLinksSchema = z9.object({
460
+ links: z9.array(LinkSchema),
461
+ total: z9.number().int(),
462
+ page: z9.number().int(),
463
+ per_page: z9.number().int(),
464
+ total_pages: z9.number().int()
465
+ });
466
+ var LinkJobSchema = z9.object({
447
467
  id: z9.string().uuid(),
448
- external_id: z9.string(),
449
- email: z9.string().email(),
450
- email_verified_at: z9.coerce.date().nullable(),
451
- first_name: z9.string().nullable(),
452
- last_name: z9.string().nullable(),
453
- created_at: z9.coerce.date(),
454
- updated_at: z9.coerce.date().nullable()
455
- });
456
- var SignInInputSchema = z9.object({
457
- first_name: z9.string().min(1).max(100).optional(),
458
- last_name: z9.string().min(1).max(100).optional()
459
- });
460
- var UpdateUserInputSchema = z9.object({
461
- first_name: z9.string().min(1).max(100).optional(),
462
- last_name: z9.string().min(1).max(100).optional()
468
+ workspace_id: z9.string().uuid(),
469
+ type: z9.string(),
470
+ status: z9.enum(["pending", "processing", "completed", "failed"]),
471
+ total_rows: z9.number().int(),
472
+ succeeded_count: z9.number().int(),
473
+ failed_count: z9.number().int(),
474
+ error: z9.string().nullable(),
475
+ created_by_id: z9.string().uuid(),
476
+ created_at: z9.date(),
477
+ completed_at: z9.date().nullable()
478
+ });
479
+ var LinkJobIdParamSchema = z9.object({
480
+ workspace_id: z9.string().uuid(),
481
+ job_id: z9.string().uuid()
463
482
  });
464
483
 
465
- // src/workspaces.schema.ts
484
+ // src/users.schema.ts
466
485
  import { z as z10 } from "zod";
467
- var WorkspaceSchema = z10.object({
486
+ var UserSchema = z10.object({
468
487
  id: z10.string().uuid(),
469
- name: z10.string(),
470
- billing_plan: z10.string(),
471
- billing_status: z10.string(),
472
- billing_email: z10.string().nullable(),
473
- billing_current_period_end: z10.coerce.date().nullable(),
474
- billing_cancel_at_period_end: z10.boolean(),
488
+ external_id: z10.string(),
489
+ email: z10.string().email(),
490
+ email_verified_at: z10.coerce.date().nullable(),
491
+ first_name: z10.string().nullable(),
492
+ last_name: z10.string().nullable(),
475
493
  created_at: z10.coerce.date(),
476
494
  updated_at: z10.coerce.date().nullable()
477
495
  });
478
- var WorkspaceWithCountSchema = WorkspaceSchema.extend({
479
- member_count: z10.number().int()
496
+ var SignInInputSchema = z10.object({
497
+ first_name: z10.string().min(1).max(100).optional(),
498
+ last_name: z10.string().min(1).max(100).optional()
480
499
  });
481
- var CreateWorkspaceInputSchema = z10.object({
482
- name: z10.string().min(1).max(100)
500
+ var UpdateUserInputSchema = z10.object({
501
+ first_name: z10.string().min(1).max(100).optional(),
502
+ last_name: z10.string().min(1).max(100).optional()
483
503
  });
484
- var UpdateWorkspaceInputSchema = z10.object({
485
- name: z10.string().min(1).max(100).optional(),
486
- billing_email: z10.string().email().nullish()
487
- });
488
- var TransferOwnershipInputSchema = z10.object({
489
- to_user_id: z10.string().uuid()
490
- });
491
- var WorkspaceMemberUserSchema = z10.object({
492
- id: z10.string().uuid(),
493
- email: z10.string().email(),
494
- first_name: z10.string().nullable(),
495
- last_name: z10.string().nullable()
504
+
505
+ // src/workspaces.schema.ts
506
+ import { z as z11 } from "zod";
507
+ var WorkspaceSchema = z11.object({
508
+ id: z11.string().uuid(),
509
+ name: z11.string(),
510
+ billing_plan: z11.string(),
511
+ billing_status: z11.string(),
512
+ billing_email: z11.string().nullable(),
513
+ billing_current_period_end: z11.coerce.date().nullable(),
514
+ billing_cancel_at_period_end: z11.boolean(),
515
+ created_at: z11.coerce.date(),
516
+ updated_at: z11.coerce.date().nullable()
496
517
  });
497
- var WorkspaceMemberSchema = z10.object({
498
- id: z10.string().uuid(),
499
- workspace_id: z10.string().uuid(),
500
- user_id: z10.string().uuid(),
501
- user: WorkspaceMemberUserSchema,
502
- permissions: z10.number().int(),
503
- joined_at: z10.coerce.date(),
504
- created_at: z10.coerce.date(),
505
- updated_at: z10.coerce.date().nullable()
518
+ var WorkspaceWithCountSchema = WorkspaceSchema.extend({
519
+ member_count: z11.number().int()
506
520
  });
507
- var UpdateMemberInputSchema = z10.object({
508
- permissions: z10.number().int().min(1)
521
+ var CreateWorkspaceInputSchema = z11.object({
522
+ name: z11.string().min(1).max(100)
509
523
  });
510
- var WorkspaceInvitationSchema = z10.object({
511
- id: z10.string().uuid(),
512
- workspace_id: z10.string().uuid(),
513
- email: z10.string().email(),
514
- token: z10.string(),
515
- permissions: z10.number().int(),
516
- invited_by_id: z10.string().uuid(),
517
- expires_at: z10.coerce.date(),
518
- created_at: z10.coerce.date()
524
+ var UpdateWorkspaceInputSchema = z11.object({
525
+ name: z11.string().min(1).max(100).optional(),
526
+ billing_email: z11.string().email().nullish()
519
527
  });
520
- var CreateInvitationInputSchema = z10.object({
521
- email: z10.string().email(),
522
- permissions: z10.number().int().min(1)
528
+ var TransferOwnershipInputSchema = z11.object({
529
+ to_user_id: z11.string().uuid()
523
530
  });
524
- var WorkspaceStatsSchema = z10.object({
525
- links_count: z10.number().int()
531
+ var WorkspaceMemberUserSchema = z11.object({
532
+ id: z11.string().uuid(),
533
+ email: z11.string().email(),
534
+ first_name: z11.string().nullable(),
535
+ last_name: z11.string().nullable()
526
536
  });
527
- var WorkspaceRoleSchema = z10.object({
528
- name: z10.string(),
529
- description: z10.string(),
530
- permissions: z10.number().int()
537
+ var WorkspaceMemberSchema = z11.object({
538
+ id: z11.string().uuid(),
539
+ workspace_id: z11.string().uuid(),
540
+ user_id: z11.string().uuid(),
541
+ user: WorkspaceMemberUserSchema,
542
+ permissions: z11.number().int(),
543
+ joined_at: z11.coerce.date(),
544
+ created_at: z11.coerce.date(),
545
+ updated_at: z11.coerce.date().nullable()
546
+ });
547
+ var UpdateMemberInputSchema = z11.object({
548
+ permissions: z11.number().int().min(1)
549
+ });
550
+ var WorkspaceInvitationSchema = z11.object({
551
+ id: z11.string().uuid(),
552
+ workspace_id: z11.string().uuid(),
553
+ email: z11.string().email(),
554
+ token: z11.string(),
555
+ permissions: z11.number().int(),
556
+ invited_by_id: z11.string().uuid(),
557
+ expires_at: z11.coerce.date(),
558
+ created_at: z11.coerce.date()
559
+ });
560
+ var CreateInvitationInputSchema = z11.object({
561
+ email: z11.string().email(),
562
+ permissions: z11.number().int().min(1)
563
+ });
564
+ var WorkspaceStatsSchema = z11.object({
565
+ links_count: z11.number().int()
566
+ });
567
+ var WorkspaceRoleSchema = z11.object({
568
+ name: z11.string(),
569
+ description: z11.string(),
570
+ permissions: z11.number().int()
531
571
  });
532
572
 
533
573
  // src/index.ts
@@ -536,70 +576,77 @@ var analyticsContract = {
536
576
  link: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}/analytics" }).input(LinkIdParamSchema.merge(AnalyticsQuerySchema)).output(AnalyticsOutputSchema)
537
577
  };
538
578
  var usersContract = {
539
- me: oc.route({ method: "GET", path: "/api/users/me" }).output(z11.object({ user: UserSchema })),
540
- signIn: oc.route({ method: "POST", path: "/api/users" }).input(SignInInputSchema).output(z11.object({ user: UserSchema, status: z11.enum(["created", "existing"]) })),
541
- update: oc.route({ method: "PATCH", path: "/api/users/me" }).input(UpdateUserInputSchema).output(z11.object({ user: UserSchema }))
579
+ me: oc.route({ method: "GET", path: "/api/users/me" }).output(z12.object({ user: UserSchema })),
580
+ signIn: oc.route({ method: "POST", path: "/api/users" }).input(SignInInputSchema).output(z12.object({ user: UserSchema, status: z12.enum(["created", "existing"]) })),
581
+ update: oc.route({ method: "PATCH", path: "/api/users/me" }).input(UpdateUserInputSchema).output(z12.object({ user: UserSchema }))
542
582
  };
543
583
  var apiKeysContract = {
544
584
  create: oc.route({ method: "POST", path: "/api/api-keys" }).input(CreateApiKeyInputSchema).output(CreateApiKeyResponseSchema),
545
- list: oc.route({ method: "GET", path: "/api/api-keys" }).output(z11.array(ApiKeySchema)),
546
- delete: oc.route({ method: "DELETE", path: "/api/api-keys/{api_key_id}" }).input(ApiKeyIdParamSchema).output(z11.void())
585
+ list: oc.route({ method: "GET", path: "/api/api-keys" }).output(z12.array(ApiKeySchema)),
586
+ delete: oc.route({ method: "DELETE", path: "/api/api-keys/{api_key_id}" }).input(ApiKeyIdParamSchema).output(z12.void())
547
587
  };
548
588
  var workspaceApiKeysContract = {
549
589
  create: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/api-keys" }).input(WorkspaceIdParamSchema.merge(CreateWorkspaceApiKeyInputSchema)).output(CreateWorkspaceApiKeyResponseSchema),
550
- list: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/api-keys" }).input(WorkspaceIdParamSchema).output(z11.array(ApiKeySchema)),
551
- delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/api-keys/{api_key_id}" }).input(WorkspaceApiKeyIdParamSchema).output(z11.void())
590
+ list: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/api-keys" }).input(WorkspaceIdParamSchema).output(z12.array(ApiKeySchema)),
591
+ delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/api-keys/{api_key_id}" }).input(WorkspaceApiKeyIdParamSchema).output(z12.void())
552
592
  };
553
593
  var workspacesContract = {
554
594
  create: oc.route({ method: "POST", path: "/api/workspaces" }).input(CreateWorkspaceInputSchema).output(WorkspaceSchema),
555
- list: oc.route({ method: "GET", path: "/api/workspaces" }).output(z11.array(WorkspaceWithCountSchema)),
595
+ list: oc.route({ method: "GET", path: "/api/workspaces" }).output(z12.array(WorkspaceWithCountSchema)),
556
596
  get: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}" }).input(WorkspaceIdParamSchema).output(WorkspaceWithCountSchema),
557
597
  update: oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}" }).input(WorkspaceIdParamSchema.merge(UpdateWorkspaceInputSchema)).output(WorkspaceSchema),
558
- delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}" }).input(WorkspaceIdParamSchema).output(z11.void()),
559
- transfer: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/transfer" }).input(WorkspaceIdParamSchema.merge(TransferOwnershipInputSchema)).output(z11.void()),
598
+ delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}" }).input(WorkspaceIdParamSchema).output(z12.void()),
599
+ transfer: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/transfer" }).input(WorkspaceIdParamSchema.merge(TransferOwnershipInputSchema)).output(z12.void()),
560
600
  stats: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/stats" }).input(WorkspaceIdParamSchema).output(WorkspaceStatsSchema),
561
601
  // Roles
562
- listRoles: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/roles" }).input(WorkspaceIdParamSchema).output(z11.array(WorkspaceRoleSchema)),
602
+ listRoles: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/roles" }).input(WorkspaceIdParamSchema).output(z12.array(WorkspaceRoleSchema)),
563
603
  // Members
564
- listMembers: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/members" }).input(WorkspaceIdParamSchema).output(z11.array(WorkspaceMemberSchema)),
604
+ listMembers: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/members" }).input(WorkspaceIdParamSchema).output(z12.array(WorkspaceMemberSchema)),
565
605
  updateMember: oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/members/{user_id}" }).input(MemberIdParamSchema.merge(UpdateMemberInputSchema)).output(WorkspaceMemberSchema),
566
- removeMember: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/members/{user_id}" }).input(MemberIdParamSchema).output(z11.void()),
606
+ removeMember: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/members/{user_id}" }).input(MemberIdParamSchema).output(z12.void()),
567
607
  // Invitations
568
- listInvitations: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/invitations" }).input(WorkspaceIdParamSchema).output(z11.array(WorkspaceInvitationSchema)),
608
+ listInvitations: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/invitations" }).input(WorkspaceIdParamSchema).output(z12.array(WorkspaceInvitationSchema)),
569
609
  createInvitation: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/invitations" }).input(WorkspaceIdParamSchema.merge(CreateInvitationInputSchema)).output(WorkspaceInvitationSchema),
570
- revokeInvitation: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/invitations/{invitation_id}" }).input(InvitationIdParamSchema).output(z11.void())
610
+ revokeInvitation: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/invitations/{invitation_id}" }).input(InvitationIdParamSchema).output(z12.void())
571
611
  };
572
612
  var invitationsContract = {
573
613
  get: oc.route({ method: "GET", path: "/api/invitations/{token}" }).input(TokenParamSchema).output(WorkspaceInvitationSchema),
574
614
  accept: oc.route({ method: "POST", path: "/api/invitations/{token}/accept" }).input(TokenParamSchema).output(WorkspaceMemberSchema)
575
615
  };
616
+ var linkTemplatesContract = {
617
+ create: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/link-templates" }).input(WorkspaceIdParamSchema.merge(CreateLinkTemplateInputSchema)).output(LinkTemplateSchema),
618
+ list: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/link-templates" }).input(WorkspaceIdParamSchema.merge(LinkTemplateFiltersSchema)).output(PaginatedLinkTemplatesSchema),
619
+ get: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/link-templates/{link_template_id}" }).input(LinkTemplateIdParamSchema).output(LinkTemplateSchema),
620
+ update: oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/link-templates/{link_template_id}" }).input(LinkTemplateIdParamSchema.merge(UpdateLinkTemplateInputSchema)).output(LinkTemplateSchema),
621
+ delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/link-templates/{link_template_id}" }).input(LinkTemplateIdParamSchema).output(z12.void())
622
+ };
576
623
  var linksContract = {
577
624
  create: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/links" }).input(WorkspaceIdParamSchema.merge(CreateLinkInputSchema)).output(LinkSchema),
578
625
  list: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links" }).input(WorkspaceIdParamSchema.merge(LinkFiltersSchema)).output(PaginatedLinksSchema),
579
- exportCsv: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/export" }).input(WorkspaceIdParamSchema.merge(ExportLinksFiltersSchema)).output(z11.instanceof(File)),
626
+ exportCsv: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/export" }).input(WorkspaceIdParamSchema.merge(ExportLinksFiltersSchema)).output(z12.instanceof(File)),
580
627
  get: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}" }).input(LinkIdParamSchema).output(LinkSchema),
581
628
  update: oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/links/{link_id}" }).input(LinkIdParamSchema.merge(UpdateLinkInputSchema)).output(LinkSchema),
582
- delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/links/{link_id}" }).input(LinkIdParamSchema).output(z11.void()),
583
- edgeSync: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/links/{link_id}/edge/sync" }).input(LinkIdParamSchema).output(z11.void()),
584
- edgeStatus: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}/edge/status" }).input(LinkIdParamSchema).output(z11.object({ synced: z11.boolean() })),
585
- uploadLogo: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/links/{link_id}/logo" }).input(LinkIdParamSchema.merge(z11.object({ file: z11.file().mime(["image/png", "image/jpeg", "image/svg+xml", "image/webp"]) }))).output(LinkSchema),
629
+ delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/links/{link_id}" }).input(LinkIdParamSchema).output(z12.void()),
630
+ edgeSync: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/links/{link_id}/edge/sync" }).input(LinkIdParamSchema).output(z12.void()),
631
+ edgeStatus: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}/edge/status" }).input(LinkIdParamSchema).output(z12.object({ synced: z12.boolean() })),
632
+ uploadLogo: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/links/{link_id}/logo" }).input(LinkIdParamSchema.merge(z12.object({ file: z12.file().mime(["image/png", "image/jpeg", "image/svg+xml", "image/webp"]) }))).output(LinkSchema),
586
633
  deleteLogo: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/links/{link_id}/logo" }).input(LinkIdParamSchema).output(LinkSchema),
587
634
  getJob: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/jobs/{job_id}" }).input(LinkJobIdParamSchema).output(LinkJobSchema),
588
- jobResults: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/jobs/{job_id}/results" }).input(LinkJobIdParamSchema).output(z11.object({ url: z11.string() }))
635
+ jobResults: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/jobs/{job_id}/results" }).input(LinkJobIdParamSchema).output(z12.object({ url: z12.string() }))
589
636
  };
590
637
  var tagsContract = {
591
638
  create: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/tags" }).input(WorkspaceIdParamSchema.merge(CreateTagInputSchema)).output(TagSchema),
592
- list: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/tags" }).input(WorkspaceIdParamSchema).output(z11.array(TagSchema)),
639
+ list: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/tags" }).input(WorkspaceIdParamSchema).output(z12.array(TagSchema)),
593
640
  get: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/tags/{tag_id}" }).input(TagIdParamSchema).output(TagSchema),
594
641
  update: oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/tags/{tag_id}" }).input(TagIdParamSchema.merge(UpdateTagInputSchema)).output(TagSchema),
595
- delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/tags/{tag_id}" }).input(TagIdParamSchema).output(z11.void())
642
+ delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/tags/{tag_id}" }).input(TagIdParamSchema).output(z12.void())
596
643
  };
597
644
  var domainsContract = {
598
645
  create: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/domains" }).input(WorkspaceIdParamSchema.merge(CreateDomainInputSchema)).output(DomainSchema),
599
- list: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/domains" }).input(WorkspaceIdParamSchema).output(z11.array(DomainSchema)),
646
+ list: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/domains" }).input(WorkspaceIdParamSchema).output(z12.array(DomainSchema)),
600
647
  get: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/domains/{domain_id}" }).input(DomainIdParamSchema).output(DomainSchema),
601
648
  update: oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/domains/{domain_id}" }).input(DomainIdParamSchema.merge(UpdateDomainInputSchema)).output(DomainSchema),
602
- delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/domains/{domain_id}" }).input(DomainIdParamSchema).output(z11.void()),
649
+ delete: oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/domains/{domain_id}" }).input(DomainIdParamSchema).output(z12.void()),
603
650
  verify: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/domains/{domain_id}/verify" }).input(DomainIdParamSchema).output(DomainSchema)
604
651
  };
605
652
  var billingContract = {
@@ -615,6 +662,7 @@ var contract = {
615
662
  workspaceApiKeys: workspaceApiKeysContract,
616
663
  workspaces: workspacesContract,
617
664
  invitations: invitationsContract,
665
+ linkTemplates: linkTemplatesContract,
618
666
  links: linksContract,
619
667
  tags: tagsContract,
620
668
  domains: domainsContract,
@@ -635,6 +683,7 @@ export {
635
683
  CreateDomainInputSchema,
636
684
  CreateInvitationInputSchema,
637
685
  CreateLinkInputSchema,
686
+ CreateLinkTemplateInputSchema,
638
687
  CreateTagInputSchema,
639
688
  CreateWorkspaceApiKeyInputSchema,
640
689
  CreateWorkspaceApiKeyResponseSchema,
@@ -650,7 +699,11 @@ export {
650
699
  LinkJobIdParamSchema,
651
700
  LinkJobSchema,
652
701
  LinkSchema,
702
+ LinkTemplateFiltersSchema,
703
+ LinkTemplateIdParamSchema,
704
+ LinkTemplateSchema,
653
705
  MemberIdParamSchema,
706
+ PaginatedLinkTemplatesSchema,
654
707
  PaginatedLinksSchema,
655
708
  PlanSchema,
656
709
  PlansOutputSchema,
@@ -665,6 +718,7 @@ export {
665
718
  TransferOwnershipInputSchema,
666
719
  UpdateDomainInputSchema,
667
720
  UpdateLinkInputSchema,
721
+ UpdateLinkTemplateInputSchema,
668
722
  UpdateMemberInputSchema,
669
723
  UpdateTagInputSchema,
670
724
  UpdateUserInputSchema,
@@ -686,6 +740,7 @@ export {
686
740
  contract,
687
741
  domainsContract,
688
742
  invitationsContract,
743
+ linkTemplatesContract,
689
744
  linksContract,
690
745
  tagsContract,
691
746
  usersContract,