@middlewr/contracts 0.0.13 → 0.0.15

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
@@ -2,313 +2,343 @@
2
2
  import { oc } from "@orpc/contract";
3
3
  import { z as z10 } from "zod";
4
4
 
5
- // src/api-keys.schema.ts
5
+ // src/analytics.schema.ts
6
6
  import { z } from "zod";
7
- var ApiKeySchema = z.object({
8
- id: z.string().uuid(),
9
- user_id: z.string().uuid(),
7
+ var AnalyticsIntervalSchema = z.enum(["hour", "day", "week", "month"]);
8
+ var AnalyticsQuerySchema = z.object({
9
+ start_at: z.coerce.date(),
10
+ end_at: z.coerce.date(),
11
+ interval: AnalyticsIntervalSchema
12
+ });
13
+ var TimeSeriesPointSchema = z.object({
14
+ date: z.string(),
15
+ clicks: z.number().int(),
16
+ unique_visitors: z.number().int()
17
+ });
18
+ var CountByFieldSchema = z.object({
10
19
  name: z.string(),
11
- key_prefix: z.string(),
12
- last_used_at: z.coerce.date().nullable(),
13
- created_at: z.coerce.date(),
14
- updated_at: z.coerce.date().nullable()
20
+ count: z.number().int()
21
+ });
22
+ var AnalyticsOutputSchema = z.object({
23
+ total_clicks: z.number().int(),
24
+ total_unique_visitors: z.number().int(),
25
+ timeseries: z.array(TimeSeriesPointSchema),
26
+ referrers: z.array(CountByFieldSchema),
27
+ devices: z.array(CountByFieldSchema),
28
+ countries: z.array(CountByFieldSchema),
29
+ browsers: z.array(CountByFieldSchema),
30
+ os: z.array(CountByFieldSchema)
31
+ });
32
+ var LinkAnalyticsQuerySchema = z.object({
33
+ link_id: z.string().uuid(),
34
+ from: z.coerce.date(),
35
+ to: z.coerce.date()
15
36
  });
16
- var CreateApiKeyInputSchema = z.object({
17
- name: z.string().min(1).max(255)
37
+
38
+ // src/api-keys.schema.ts
39
+ import { z as z2 } from "zod";
40
+ var ApiKeySchema = z2.object({
41
+ id: z2.string().uuid(),
42
+ user_id: z2.string().uuid(),
43
+ name: z2.string(),
44
+ key_prefix: z2.string(),
45
+ last_used_at: z2.coerce.date().nullable(),
46
+ created_at: z2.coerce.date(),
47
+ updated_at: z2.coerce.date().nullable()
48
+ });
49
+ var CreateApiKeyInputSchema = z2.object({
50
+ name: z2.string().min(1).max(255)
18
51
  });
19
52
  var CreateApiKeyResponseSchema = ApiKeySchema.extend({
20
- key: z.string()
53
+ key: z2.string()
21
54
  });
22
55
 
23
56
  // src/billing.schema.ts
24
- import { z as z2 } from "zod";
25
- var BillingStatusSchema = z2.object({
26
- billing_plan: z2.string(),
27
- billing_status: z2.string(),
28
- billing_email: z2.string().nullable(),
29
- billing_current_period_end: z2.coerce.date().nullable(),
30
- billing_cancel_at_period_end: z2.boolean(),
31
- billing_customer_id: z2.string().nullable(),
32
- billing_subscription_id: z2.string().nullable()
33
- });
34
- var CreateCheckoutInputSchema = z2.object({
35
- plan: z2.enum(["pro", "business"]),
36
- success_url: z2.string().url().optional(),
37
- billing_email: z2.string().email().optional()
38
- });
39
- var CheckoutSessionSchema = z2.object({
40
- url: z2.string().url()
41
- });
42
- var CustomerPortalSchema = z2.object({
43
- url: z2.string().url()
57
+ import { z as z3 } from "zod";
58
+ var BillingStatusSchema = z3.object({
59
+ billing_plan: z3.string(),
60
+ billing_status: z3.string(),
61
+ billing_email: z3.string().nullable(),
62
+ billing_current_period_end: z3.coerce.date().nullable(),
63
+ billing_cancel_at_period_end: z3.boolean(),
64
+ billing_customer_id: z3.string().nullable(),
65
+ billing_subscription_id: z3.string().nullable()
66
+ });
67
+ var CreateCheckoutInputSchema = z3.object({
68
+ plan: z3.enum(["pro", "business"]),
69
+ success_url: z3.string().url().optional(),
70
+ billing_email: z3.string().email().optional()
71
+ });
72
+ var CheckoutSessionSchema = z3.object({
73
+ url: z3.string().url()
74
+ });
75
+ var CustomerPortalSchema = z3.object({
76
+ url: z3.string().url()
44
77
  });
45
78
 
46
79
  // src/common.schema.ts
47
- import { z as z3 } from "zod";
48
- var WorkspaceIdParamSchema = z3.object({
49
- workspace_id: z3.string().uuid()
80
+ import { z as z4 } from "zod";
81
+ var WorkspaceIdParamSchema = z4.object({
82
+ workspace_id: z4.string().uuid()
50
83
  });
51
- var LinkIdParamSchema = z3.object({
52
- workspace_id: z3.string().uuid(),
53
- link_id: z3.string().uuid()
84
+ var LinkIdParamSchema = z4.object({
85
+ workspace_id: z4.string().uuid(),
86
+ link_id: z4.string().uuid()
54
87
  });
55
- var TagIdParamSchema = z3.object({
56
- workspace_id: z3.string().uuid(),
57
- tag_id: z3.string().uuid()
88
+ var TagIdParamSchema = z4.object({
89
+ workspace_id: z4.string().uuid(),
90
+ tag_id: z4.string().uuid()
58
91
  });
59
- var MemberIdParamSchema = z3.object({
60
- workspace_id: z3.string().uuid(),
61
- user_id: z3.string().uuid()
92
+ var MemberIdParamSchema = z4.object({
93
+ workspace_id: z4.string().uuid(),
94
+ user_id: z4.string().uuid()
62
95
  });
63
- var InvitationIdParamSchema = z3.object({
64
- workspace_id: z3.string().uuid(),
65
- invitation_id: z3.string().uuid()
96
+ var InvitationIdParamSchema = z4.object({
97
+ workspace_id: z4.string().uuid(),
98
+ invitation_id: z4.string().uuid()
66
99
  });
67
- var DomainIdParamSchema = z3.object({
68
- workspace_id: z3.string().uuid(),
69
- domain_id: z3.string().uuid()
100
+ var DomainIdParamSchema = z4.object({
101
+ workspace_id: z4.string().uuid(),
102
+ domain_id: z4.string().uuid()
70
103
  });
71
- var UserIdParamSchema = z3.object({
72
- user_id: z3.string().uuid()
104
+ var UserIdParamSchema = z4.object({
105
+ user_id: z4.string().uuid()
73
106
  });
74
- var ApiKeyIdParamSchema = z3.object({
75
- api_key_id: z3.string().uuid()
107
+ var ApiKeyIdParamSchema = z4.object({
108
+ api_key_id: z4.string().uuid()
76
109
  });
77
- var TokenParamSchema = z3.object({
78
- token: z3.string()
110
+ var TokenParamSchema = z4.object({
111
+ token: z4.string()
79
112
  });
80
113
 
81
114
  // src/domains.schema.ts
82
- import { z as z4 } from "zod";
83
- var DomainSchema = z4.object({
84
- id: z4.string().uuid(),
85
- workspace_id: z4.string().uuid().nullable(),
86
- created_by_id: z4.string().uuid().nullable(),
87
- domain: z4.string(),
88
- is_verified: z4.boolean(),
89
- cf_hostname_id: z4.string().nullable(),
90
- cf_ssl_status: z4.string().nullable(),
91
- cf_ownership_status: z4.string().nullable(),
92
- cf_txt_name: z4.string().nullable(),
93
- cf_txt_value: z4.string().nullable(),
94
- cf_ssl_txt_name: z4.string().nullable(),
95
- cf_ssl_txt_value: z4.string().nullable(),
96
- cf_last_checked_at: z4.coerce.date().nullable(),
97
- created_at: z4.coerce.date(),
98
- updated_at: z4.coerce.date().nullable()
99
- });
100
- var CreateDomainInputSchema = z4.object({
101
- domain: z4.string().min(1).max(253).regex(/^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/, {
115
+ import { z as z5 } from "zod";
116
+ var DomainSchema = z5.object({
117
+ id: z5.string().uuid(),
118
+ workspace_id: z5.string().uuid().nullable(),
119
+ created_by_id: z5.string().uuid().nullable(),
120
+ domain: z5.string(),
121
+ is_verified: z5.boolean(),
122
+ cf_hostname_id: z5.string().nullable(),
123
+ cf_ssl_status: z5.string().nullable(),
124
+ cf_ownership_status: z5.string().nullable(),
125
+ cf_txt_name: z5.string().nullable(),
126
+ cf_txt_value: z5.string().nullable(),
127
+ cf_ssl_txt_name: z5.string().nullable(),
128
+ cf_ssl_txt_value: z5.string().nullable(),
129
+ cf_last_checked_at: z5.coerce.date().nullable(),
130
+ created_at: z5.coerce.date(),
131
+ updated_at: z5.coerce.date().nullable()
132
+ });
133
+ var CreateDomainInputSchema = z5.object({
134
+ domain: z5.string().min(1).max(253).regex(/^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/, {
102
135
  message: "Invalid domain format"
103
136
  })
104
137
  });
105
- var UpdateDomainInputSchema = z4.object({
106
- domain: z4.string().min(1).max(253).regex(/^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/, {
138
+ var UpdateDomainInputSchema = z5.object({
139
+ domain: z5.string().min(1).max(253).regex(/^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/, {
107
140
  message: "Invalid domain format"
108
141
  }).optional()
109
142
  });
110
143
 
111
144
  // src/links.schema.ts
112
- import { z as z6 } from "zod";
145
+ import { z as z7 } from "zod";
113
146
 
114
147
  // src/tags.schema.ts
115
- import { z as z5 } from "zod";
116
- var TagSchema = z5.object({
117
- id: z5.string().uuid(),
118
- workspace_id: z5.string().uuid(),
119
- name: z5.string(),
120
- color: z5.string().nullable(),
121
- created_at: z5.coerce.date(),
122
- updated_at: z5.coerce.date().nullable()
123
- });
124
- var CreateTagInputSchema = z5.object({
125
- name: z5.string().min(1).max(50),
126
- color: z5.string().regex(/^#[0-9A-Fa-f]{6}$/).optional()
127
- });
128
- var UpdateTagInputSchema = z5.object({
129
- name: z5.string().min(1).max(50).optional(),
130
- color: z5.string().regex(/^#[0-9A-Fa-f]{6}$/).nullable().optional()
131
- });
132
-
133
- // src/links.schema.ts
134
- var LinkSchema = z6.object({
148
+ import { z as z6 } from "zod";
149
+ var TagSchema = z6.object({
135
150
  id: z6.string().uuid(),
136
151
  workspace_id: z6.string().uuid(),
137
- domain_id: z6.string().uuid(),
138
- created_by_id: z6.string().uuid(),
139
- original_url: z6.string().url(),
140
- short_code: z6.string(),
141
- title: z6.string().nullable(),
142
- description: z6.string().nullable(),
143
- utm_source: z6.string().nullable(),
144
- utm_medium: z6.string().nullable(),
145
- utm_campaign: z6.string().nullable(),
146
- utm_term: z6.string().nullable(),
147
- utm_content: z6.string().nullable(),
148
- password: z6.string().nullable(),
149
- starts_at: z6.coerce.date().nullable(),
150
- expires_at: z6.coerce.date().nullable(),
151
- is_active: z6.boolean(),
152
- redirect_type: z6.number().int(),
153
- click_count: z6.coerce.number().int(),
154
- click_count_updated_at: z6.coerce.date().nullable(),
152
+ name: z6.string(),
153
+ color: z6.string().nullable(),
155
154
  created_at: z6.coerce.date(),
156
- updated_at: z6.coerce.date().nullable(),
157
- tags: z6.array(TagSchema)
158
- });
159
- var CreateLinkInputSchema = z6.object({
160
- original_url: z6.string().url().max(2048),
161
- domain_id: z6.string().uuid().optional(),
162
- short_code: z6.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
163
- title: z6.string().max(255).optional(),
164
- description: z6.string().max(2e3).optional(),
165
- utm_source: z6.string().max(255).optional(),
166
- utm_medium: z6.string().max(255).optional(),
167
- utm_campaign: z6.string().max(255).optional(),
168
- utm_term: z6.string().max(255).optional(),
169
- utm_content: z6.string().max(255).optional(),
170
- password: z6.string().min(4).max(100).optional(),
171
- starts_at: z6.coerce.date().optional(),
172
- expires_at: z6.coerce.date().optional(),
173
- redirect_type: z6.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
174
- tag_ids: z6.array(z6.string().uuid()).optional()
175
- });
176
- var UpdateLinkInputSchema = z6.object({
177
- original_url: z6.string().url().max(2048).optional(),
178
- domain_id: z6.string().uuid().optional(),
179
- short_code: z6.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
180
- title: z6.string().max(255).nullable().optional(),
181
- description: z6.string().max(2e3).nullable().optional(),
182
- utm_source: z6.string().max(255).nullable().optional(),
183
- utm_medium: z6.string().max(255).nullable().optional(),
184
- utm_campaign: z6.string().max(255).nullable().optional(),
185
- utm_term: z6.string().max(255).nullable().optional(),
186
- utm_content: z6.string().max(255).nullable().optional(),
187
- password: z6.string().min(4).max(100).nullable().optional(),
188
- starts_at: z6.coerce.date().nullable().optional(),
189
- expires_at: z6.coerce.date().nullable().optional(),
190
- is_active: z6.boolean().optional(),
191
- redirect_type: z6.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
192
- tag_ids: z6.array(z6.string().uuid()).optional()
193
- });
194
- var LinkFiltersSchema = z6.object({
195
- search: z6.string().optional(),
196
- domain_id: z6.string().uuid().optional(),
197
- is_active: z6.coerce.boolean().optional(),
198
- has_expiration: z6.coerce.boolean().optional(),
199
- expired: z6.coerce.boolean().optional(),
200
- created_from: z6.coerce.date().optional(),
201
- created_to: z6.coerce.date().optional(),
202
- expires_from: z6.coerce.date().optional(),
203
- expires_to: z6.coerce.date().optional(),
204
- tag_ids: z6.array(z6.string().uuid()).optional(),
205
- sort_by: z6.enum(["created_at", "title", "click_count"]).default("created_at"),
206
- sort_order: z6.enum(["asc", "desc"]).default("desc"),
207
- page: z6.coerce.number().int().min(1).default(1),
208
- per_page: z6.coerce.number().int().min(1).max(100).default(20)
209
- });
210
- var PaginatedLinksSchema = z6.object({
211
- links: z6.array(LinkSchema),
212
- total: z6.number().int(),
213
- page: z6.number().int(),
214
- per_page: z6.number().int(),
215
- total_pages: z6.number().int()
155
+ updated_at: z6.coerce.date().nullable()
156
+ });
157
+ var CreateTagInputSchema = z6.object({
158
+ name: z6.string().min(1).max(50),
159
+ color: z6.string().regex(/^#[0-9A-Fa-f]{6}$/).optional()
160
+ });
161
+ var UpdateTagInputSchema = z6.object({
162
+ name: z6.string().min(1).max(50).optional(),
163
+ color: z6.string().regex(/^#[0-9A-Fa-f]{6}$/).nullable().optional()
216
164
  });
217
165
 
218
- // src/users.schema.ts
219
- import { z as z7 } from "zod";
220
- var UserSchema = z7.object({
166
+ // src/links.schema.ts
167
+ var LinkSchema = z7.object({
221
168
  id: z7.string().uuid(),
222
- external_id: z7.string(),
223
- email: z7.string().email(),
224
- email_verified_at: z7.coerce.date().nullable(),
225
- first_name: z7.string().nullable(),
226
- last_name: z7.string().nullable(),
169
+ workspace_id: z7.string().uuid(),
170
+ domain_id: z7.string().uuid(),
171
+ created_by_id: z7.string().uuid(),
172
+ original_url: z7.string().url(),
173
+ short_code: z7.string(),
174
+ title: z7.string().nullable(),
175
+ description: z7.string().nullable(),
176
+ utm_source: z7.string().nullable(),
177
+ utm_medium: z7.string().nullable(),
178
+ utm_campaign: z7.string().nullable(),
179
+ utm_term: z7.string().nullable(),
180
+ utm_content: z7.string().nullable(),
181
+ password: z7.string().nullable(),
182
+ starts_at: z7.coerce.date().nullable(),
183
+ expires_at: z7.coerce.date().nullable(),
184
+ is_active: z7.boolean(),
185
+ redirect_type: z7.number().int(),
186
+ click_count: z7.coerce.number().int(),
187
+ click_count_updated_at: z7.coerce.date().nullable(),
227
188
  created_at: z7.coerce.date(),
228
- updated_at: z7.coerce.date().nullable()
229
- });
230
- var SignInInputSchema = z7.object({
231
- first_name: z7.string().min(1).max(100).optional(),
232
- last_name: z7.string().min(1).max(100).optional()
233
- });
234
- var UpdateUserInputSchema = z7.object({
235
- first_name: z7.string().min(1).max(100).optional(),
236
- last_name: z7.string().min(1).max(100).optional()
189
+ updated_at: z7.coerce.date().nullable(),
190
+ tags: z7.array(TagSchema)
191
+ });
192
+ var CreateLinkInputSchema = z7.object({
193
+ original_url: z7.string().url().max(2048),
194
+ domain_id: z7.string().uuid().optional(),
195
+ short_code: z7.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
196
+ title: z7.string().max(255).optional(),
197
+ description: z7.string().max(2e3).optional(),
198
+ utm_source: z7.string().max(255).optional(),
199
+ utm_medium: z7.string().max(255).optional(),
200
+ utm_campaign: z7.string().max(255).optional(),
201
+ utm_term: z7.string().max(255).optional(),
202
+ utm_content: z7.string().max(255).optional(),
203
+ password: z7.string().min(4).max(100).optional(),
204
+ starts_at: z7.coerce.date().optional(),
205
+ expires_at: z7.coerce.date().optional(),
206
+ redirect_type: z7.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
207
+ tag_ids: z7.array(z7.string().uuid()).optional()
208
+ });
209
+ var UpdateLinkInputSchema = z7.object({
210
+ original_url: z7.string().url().max(2048).optional(),
211
+ domain_id: z7.string().uuid().optional(),
212
+ short_code: z7.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
213
+ title: z7.string().max(255).nullable().optional(),
214
+ description: z7.string().max(2e3).nullable().optional(),
215
+ utm_source: z7.string().max(255).nullable().optional(),
216
+ utm_medium: z7.string().max(255).nullable().optional(),
217
+ utm_campaign: z7.string().max(255).nullable().optional(),
218
+ utm_term: z7.string().max(255).nullable().optional(),
219
+ utm_content: z7.string().max(255).nullable().optional(),
220
+ password: z7.string().min(4).max(100).nullable().optional(),
221
+ starts_at: z7.coerce.date().nullable().optional(),
222
+ expires_at: z7.coerce.date().nullable().optional(),
223
+ is_active: z7.boolean().optional(),
224
+ redirect_type: z7.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
225
+ tag_ids: z7.array(z7.string().uuid()).optional()
226
+ });
227
+ var LinkFiltersSchema = z7.object({
228
+ search: z7.string().optional(),
229
+ domain_id: z7.string().uuid().optional(),
230
+ is_active: z7.coerce.boolean().optional(),
231
+ has_expiration: z7.coerce.boolean().optional(),
232
+ expired: z7.coerce.boolean().optional(),
233
+ created_from: z7.coerce.date().optional(),
234
+ created_to: z7.coerce.date().optional(),
235
+ expires_from: z7.coerce.date().optional(),
236
+ expires_to: z7.coerce.date().optional(),
237
+ tag_ids: z7.array(z7.string().uuid()).optional(),
238
+ sort_by: z7.enum(["created_at", "title", "click_count"]).default("created_at"),
239
+ sort_order: z7.enum(["asc", "desc"]).default("desc"),
240
+ page: z7.coerce.number().int().min(1).default(1),
241
+ per_page: z7.coerce.number().int().min(1).max(100).default(20)
242
+ });
243
+ var PaginatedLinksSchema = z7.object({
244
+ links: z7.array(LinkSchema),
245
+ total: z7.number().int(),
246
+ page: z7.number().int(),
247
+ per_page: z7.number().int(),
248
+ total_pages: z7.number().int()
237
249
  });
238
250
 
239
- // src/workspaces.schema.ts
251
+ // src/users.schema.ts
240
252
  import { z as z8 } from "zod";
241
- var WorkspaceSchema = z8.object({
253
+ var UserSchema = z8.object({
242
254
  id: z8.string().uuid(),
243
- name: z8.string(),
244
- billing_plan: z8.string(),
245
- billing_status: z8.string(),
246
- billing_email: z8.string().nullable(),
247
- billing_current_period_end: z8.coerce.date().nullable(),
248
- billing_cancel_at_period_end: z8.boolean(),
255
+ external_id: z8.string(),
256
+ email: z8.string().email(),
257
+ email_verified_at: z8.coerce.date().nullable(),
258
+ first_name: z8.string().nullable(),
259
+ last_name: z8.string().nullable(),
249
260
  created_at: z8.coerce.date(),
250
261
  updated_at: z8.coerce.date().nullable()
251
262
  });
252
- var WorkspaceWithCountSchema = WorkspaceSchema.extend({
253
- member_count: z8.number().int()
254
- });
255
- var CreateWorkspaceInputSchema = z8.object({
256
- name: z8.string().min(1).max(100)
263
+ var SignInInputSchema = z8.object({
264
+ first_name: z8.string().min(1).max(100).optional(),
265
+ last_name: z8.string().min(1).max(100).optional()
257
266
  });
258
- var UpdateWorkspaceInputSchema = z8.object({
259
- name: z8.string().min(1).max(100).optional()
267
+ var UpdateUserInputSchema = z8.object({
268
+ first_name: z8.string().min(1).max(100).optional(),
269
+ last_name: z8.string().min(1).max(100).optional()
260
270
  });
261
- var TransferOwnershipInputSchema = z8.object({
262
- to_user_id: z8.string().uuid()
263
- });
264
- var WorkspaceMemberUserSchema = z8.object({
265
- id: z8.string().uuid(),
266
- email: z8.string().email(),
267
- first_name: z8.string().nullable(),
268
- last_name: z8.string().nullable()
271
+
272
+ // src/workspaces.schema.ts
273
+ import { z as z9 } from "zod";
274
+ var WorkspaceSchema = z9.object({
275
+ id: z9.string().uuid(),
276
+ name: z9.string(),
277
+ billing_plan: z9.string(),
278
+ billing_status: z9.string(),
279
+ billing_email: z9.string().nullable(),
280
+ billing_current_period_end: z9.coerce.date().nullable(),
281
+ billing_cancel_at_period_end: z9.boolean(),
282
+ created_at: z9.coerce.date(),
283
+ updated_at: z9.coerce.date().nullable()
269
284
  });
270
- var WorkspaceMemberSchema = z8.object({
271
- id: z8.string().uuid(),
272
- workspace_id: z8.string().uuid(),
273
- user_id: z8.string().uuid(),
274
- user: WorkspaceMemberUserSchema,
275
- permissions: z8.number().int(),
276
- joined_at: z8.coerce.date(),
277
- created_at: z8.coerce.date(),
278
- updated_at: z8.coerce.date().nullable()
285
+ var WorkspaceWithCountSchema = WorkspaceSchema.extend({
286
+ member_count: z9.number().int()
279
287
  });
280
- var UpdateMemberInputSchema = z8.object({
281
- permissions: z8.number().int().min(1)
288
+ var CreateWorkspaceInputSchema = z9.object({
289
+ name: z9.string().min(1).max(100)
282
290
  });
283
- var WorkspaceInvitationSchema = z8.object({
284
- id: z8.string().uuid(),
285
- workspace_id: z8.string().uuid(),
286
- email: z8.string().email(),
287
- token: z8.string(),
288
- permissions: z8.number().int(),
289
- invited_by_id: z8.string().uuid(),
290
- expires_at: z8.coerce.date(),
291
- created_at: z8.coerce.date()
291
+ var UpdateWorkspaceInputSchema = z9.object({
292
+ name: z9.string().min(1).max(100).optional(),
293
+ billing_email: z9.string().email().nullish()
292
294
  });
293
- var CreateInvitationInputSchema = z8.object({
294
- email: z8.string().email(),
295
- permissions: z8.number().int().min(1)
295
+ var TransferOwnershipInputSchema = z9.object({
296
+ to_user_id: z9.string().uuid()
296
297
  });
297
- var WorkspaceRoleSchema = z8.object({
298
- name: z8.string(),
299
- description: z8.string(),
300
- permissions: z8.number().int()
298
+ var WorkspaceMemberUserSchema = z9.object({
299
+ id: z9.string().uuid(),
300
+ email: z9.string().email(),
301
+ first_name: z9.string().nullable(),
302
+ last_name: z9.string().nullable()
301
303
  });
302
-
303
- // src/analytics.schema.ts
304
- import { z as z9 } from "zod";
305
- var LinkAnalyticsQuerySchema = z9.object({
306
- link_id: z9.string().uuid(),
307
- from: z9.coerce.date(),
308
- to: z9.coerce.date()
304
+ var WorkspaceMemberSchema = z9.object({
305
+ id: z9.string().uuid(),
306
+ workspace_id: z9.string().uuid(),
307
+ user_id: z9.string().uuid(),
308
+ user: WorkspaceMemberUserSchema,
309
+ permissions: z9.number().int(),
310
+ joined_at: z9.coerce.date(),
311
+ created_at: z9.coerce.date(),
312
+ updated_at: z9.coerce.date().nullable()
313
+ });
314
+ var UpdateMemberInputSchema = z9.object({
315
+ permissions: z9.number().int().min(1)
316
+ });
317
+ var WorkspaceInvitationSchema = z9.object({
318
+ id: z9.string().uuid(),
319
+ workspace_id: z9.string().uuid(),
320
+ email: z9.string().email(),
321
+ token: z9.string(),
322
+ permissions: z9.number().int(),
323
+ invited_by_id: z9.string().uuid(),
324
+ expires_at: z9.coerce.date(),
325
+ created_at: z9.coerce.date()
326
+ });
327
+ var CreateInvitationInputSchema = z9.object({
328
+ email: z9.string().email(),
329
+ permissions: z9.number().int().min(1)
330
+ });
331
+ var WorkspaceRoleSchema = z9.object({
332
+ name: z9.string(),
333
+ description: z9.string(),
334
+ permissions: z9.number().int()
309
335
  });
310
336
 
311
337
  // src/index.ts
338
+ var analyticsContract = {
339
+ workspace: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/analytics" }).input(WorkspaceIdParamSchema.merge(AnalyticsQuerySchema)).output(AnalyticsOutputSchema),
340
+ link: oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}/analytics" }).input(LinkIdParamSchema.merge(AnalyticsQuerySchema)).output(AnalyticsOutputSchema)
341
+ };
312
342
  var usersContract = {
313
343
  me: oc.route({ method: "GET", path: "/api/users/me" }).output(z10.object({ user: UserSchema })),
314
344
  signIn: oc.route({ method: "POST", path: "/api/users" }).input(SignInInputSchema).output(z10.object({ user: UserSchema, status: z10.enum(["created", "existing"]) })),
@@ -369,6 +399,7 @@ var billingContract = {
369
399
  portal: oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/billing/portal" }).input(WorkspaceIdParamSchema).output(CustomerPortalSchema)
370
400
  };
371
401
  var contract = {
402
+ analytics: analyticsContract,
372
403
  users: usersContract,
373
404
  apiKeys: apiKeysContract,
374
405
  workspaces: workspacesContract,
@@ -379,10 +410,14 @@ var contract = {
379
410
  billing: billingContract
380
411
  };
381
412
  export {
413
+ AnalyticsIntervalSchema,
414
+ AnalyticsOutputSchema,
415
+ AnalyticsQuerySchema,
382
416
  ApiKeyIdParamSchema,
383
417
  ApiKeySchema,
384
418
  BillingStatusSchema,
385
419
  CheckoutSessionSchema,
420
+ CountByFieldSchema,
386
421
  CreateApiKeyInputSchema,
387
422
  CreateApiKeyResponseSchema,
388
423
  CreateCheckoutInputSchema,
@@ -404,6 +439,7 @@ export {
404
439
  SignInInputSchema,
405
440
  TagIdParamSchema,
406
441
  TagSchema,
442
+ TimeSeriesPointSchema,
407
443
  TokenParamSchema,
408
444
  TransferOwnershipInputSchema,
409
445
  UpdateDomainInputSchema,
@@ -421,6 +457,7 @@ export {
421
457
  WorkspaceRoleSchema,
422
458
  WorkspaceSchema,
423
459
  WorkspaceWithCountSchema,
460
+ analyticsContract,
424
461
  apiKeysContract,
425
462
  billingContract,
426
463
  contract,
@@ -27,6 +27,7 @@ export declare const CreateWorkspaceInputSchema: z.ZodObject<{
27
27
  }, z.core.$strip>;
28
28
  export declare const UpdateWorkspaceInputSchema: z.ZodObject<{
29
29
  name: z.ZodOptional<z.ZodString>;
30
+ billing_email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
31
  }, z.core.$strip>;
31
32
  export declare const TransferOwnershipInputSchema: z.ZodObject<{
32
33
  to_user_id: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.schema.d.ts","sourceRoot":"","sources":["../../src/workspaces.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;iBAU1B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;iBAEnC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;iBAErC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;iBAErC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;iBAEvC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;iBAKpC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAShC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;iBAElC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;iBASpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;iBAGtC,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC"}
1
+ {"version":3,"file":"workspaces.schema.d.ts","sourceRoot":"","sources":["../../src/workspaces.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;iBAU1B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;iBAEnC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;iBAErC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;iBAGrC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;iBAEvC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;iBAKpC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAShC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;iBAElC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;iBASpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;iBAGtC,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@middlewr/contracts",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "type": "module",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",