@buildinternet/releases-api-types 0.58.3 → 0.60.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.
Files changed (125) hide show
  1. package/README.md +14 -6
  2. package/dist/api-types.d.ts +1168 -0
  3. package/dist/api-types.d.ts.map +1 -0
  4. package/dist/api-types.js +134 -0
  5. package/dist/schemas/account-profile.d.ts +29 -0
  6. package/dist/schemas/account-profile.d.ts.map +1 -0
  7. package/dist/schemas/account-profile.js +24 -0
  8. package/dist/schemas/ai-models.d.ts +67 -0
  9. package/dist/schemas/ai-models.d.ts.map +1 -0
  10. package/{src/schemas/ai-models.ts → dist/schemas/ai-models.js} +25 -31
  11. package/dist/schemas/api-keys.d.ts +71 -0
  12. package/dist/schemas/api-keys.d.ts.map +1 -0
  13. package/dist/schemas/api-keys.js +32 -0
  14. package/dist/schemas/classifications.d.ts +134 -0
  15. package/dist/schemas/classifications.d.ts.map +1 -0
  16. package/dist/schemas/classifications.js +96 -0
  17. package/dist/schemas/collections.d.ts +605 -0
  18. package/dist/schemas/collections.d.ts.map +1 -0
  19. package/dist/schemas/collections.js +320 -0
  20. package/dist/schemas/datasets.d.ts +34 -0
  21. package/dist/schemas/datasets.d.ts.map +1 -0
  22. package/dist/schemas/datasets.js +11 -0
  23. package/dist/schemas/errors.d.ts +43 -0
  24. package/dist/schemas/errors.d.ts.map +1 -0
  25. package/dist/schemas/errors.js +61 -0
  26. package/dist/schemas/feedback.d.ts +134 -0
  27. package/dist/schemas/feedback.d.ts.map +1 -0
  28. package/dist/schemas/feedback.js +76 -0
  29. package/dist/schemas/follows.d.ts +154 -0
  30. package/dist/schemas/follows.d.ts.map +1 -0
  31. package/dist/schemas/follows.js +42 -0
  32. package/dist/schemas/listing.d.ts +374 -0
  33. package/dist/schemas/listing.d.ts.map +1 -0
  34. package/dist/schemas/listing.js +175 -0
  35. package/dist/schemas/lookups.d.ts +285 -0
  36. package/dist/schemas/lookups.d.ts.map +1 -0
  37. package/{src/schemas/lookups.ts → dist/schemas/lookups.js} +67 -80
  38. package/dist/schemas/marketing-classifier.d.ts +32 -0
  39. package/dist/schemas/marketing-classifier.d.ts.map +1 -0
  40. package/{src/schemas/marketing-classifier.ts → dist/schemas/marketing-classifier.js} +14 -18
  41. package/dist/schemas/orgs.d.ts +950 -0
  42. package/dist/schemas/orgs.d.ts.map +1 -0
  43. package/dist/schemas/orgs.js +473 -0
  44. package/dist/schemas/overviews.d.ts +205 -0
  45. package/dist/schemas/overviews.d.ts.map +1 -0
  46. package/{src/schemas/overviews.ts → dist/schemas/overviews.js} +41 -54
  47. package/dist/schemas/products.d.ts +595 -0
  48. package/dist/schemas/products.d.ts.map +1 -0
  49. package/{src/schemas/products.ts → dist/schemas/products.js} +113 -136
  50. package/dist/schemas/publish-tokens.d.ts +55 -0
  51. package/dist/schemas/publish-tokens.d.ts.map +1 -0
  52. package/{src/schemas/publish-tokens.ts → dist/schemas/publish-tokens.js} +18 -29
  53. package/dist/schemas/recommendations.d.ts +52 -0
  54. package/dist/schemas/recommendations.d.ts.map +1 -0
  55. package/dist/schemas/recommendations.js +58 -0
  56. package/dist/schemas/related.d.ts +331 -0
  57. package/dist/schemas/related.d.ts.map +1 -0
  58. package/dist/schemas/related.js +115 -0
  59. package/dist/schemas/releases.d.ts +623 -0
  60. package/dist/schemas/releases.d.ts.map +1 -0
  61. package/dist/schemas/releases.js +414 -0
  62. package/dist/schemas/resolve.d.ts +259 -0
  63. package/dist/schemas/resolve.d.ts.map +1 -0
  64. package/{src/schemas/resolve.ts → dist/schemas/resolve.js} +2 -5
  65. package/dist/schemas/search.d.ts +475 -0
  66. package/dist/schemas/search.d.ts.map +1 -0
  67. package/dist/schemas/search.js +258 -0
  68. package/dist/schemas/semantic-alert-summary.d.ts +54 -0
  69. package/dist/schemas/semantic-alert-summary.d.ts.map +1 -0
  70. package/dist/schemas/semantic-alert-summary.js +57 -0
  71. package/dist/schemas/semantic-alerts.d.ts +41 -0
  72. package/dist/schemas/semantic-alerts.d.ts.map +1 -0
  73. package/dist/schemas/semantic-alerts.js +42 -0
  74. package/dist/schemas/shared.d.ts +247 -0
  75. package/dist/schemas/shared.d.ts.map +1 -0
  76. package/dist/schemas/shared.js +248 -0
  77. package/dist/schemas/site-notice.d.ts +35 -0
  78. package/dist/schemas/site-notice.d.ts.map +1 -0
  79. package/{src/schemas/site-notice.ts → dist/schemas/site-notice.js} +14 -18
  80. package/dist/schemas/sitemap.d.ts +97 -0
  81. package/dist/schemas/sitemap.d.ts.map +1 -0
  82. package/dist/schemas/sitemap.js +107 -0
  83. package/dist/schemas/sources.d.ts +1145 -0
  84. package/dist/schemas/sources.d.ts.map +1 -0
  85. package/dist/schemas/sources.js +645 -0
  86. package/dist/schemas/stats.d.ts +82 -0
  87. package/dist/schemas/stats.d.ts.map +1 -0
  88. package/dist/schemas/stats.js +59 -0
  89. package/dist/schemas/taxonomy.d.ts +344 -0
  90. package/dist/schemas/taxonomy.d.ts.map +1 -0
  91. package/{src/schemas/taxonomy.ts → dist/schemas/taxonomy.js} +47 -58
  92. package/dist/schemas/webhooks.d.ts +618 -0
  93. package/dist/schemas/webhooks.d.ts.map +1 -0
  94. package/dist/schemas/webhooks.js +191 -0
  95. package/dist/schemas/well-known.d.ts +302 -0
  96. package/dist/schemas/well-known.d.ts.map +1 -0
  97. package/dist/schemas/well-known.js +192 -0
  98. package/dist/schemas/workspace-integrations.d.ts +27 -0
  99. package/dist/schemas/workspace-integrations.d.ts.map +1 -0
  100. package/dist/schemas/workspace-integrations.js +22 -0
  101. package/package.json +16 -4
  102. package/src/api-types.ts +0 -2223
  103. package/src/schemas/account-profile.ts +0 -28
  104. package/src/schemas/ai-models.test.ts +0 -29
  105. package/src/schemas/classifications.ts +0 -109
  106. package/src/schemas/collections.ts +0 -346
  107. package/src/schemas/errors.test.ts +0 -55
  108. package/src/schemas/errors.ts +0 -81
  109. package/src/schemas/feedback.ts +0 -56
  110. package/src/schemas/listing.ts +0 -226
  111. package/src/schemas/orgs.ts +0 -533
  112. package/src/schemas/recommendations.ts +0 -39
  113. package/src/schemas/related.ts +0 -126
  114. package/src/schemas/releases.ts +0 -436
  115. package/src/schemas/search.ts +0 -274
  116. package/src/schemas/semantic-alert-summary.ts +0 -65
  117. package/src/schemas/shared.notice.test.ts +0 -36
  118. package/src/schemas/shared.ts +0 -267
  119. package/src/schemas/site-notice.test.ts +0 -67
  120. package/src/schemas/sitemap.ts +0 -114
  121. package/src/schemas/sources.ts +0 -674
  122. package/src/schemas/stats.ts +0 -62
  123. package/src/schemas/well-known.test.ts +0 -264
  124. package/src/schemas/well-known.ts +0 -252
  125. package/src/schemas/workspace-integrations.ts +0 -26
@@ -0,0 +1,595 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Raw `products` table row, returned by `POST /v1/products` and
4
+ * `PATCH /v1/products/:slug`. The OSS CLI types these responses against
5
+ * `Product` from `@buildinternet/releases-core/schema` (the drizzle row
6
+ * type), so `embeddedAt` and `deletedAt` stay on the wire even though
7
+ * they're internal columns. `deletedAt` is always `null` on these paths
8
+ * (live rows only); `embeddedAt` reflects when the product was last
9
+ * indexed for semantic search.
10
+ */
11
+ export declare const ProductRowSchema: z.ZodObject<{
12
+ id: z.ZodString;
13
+ name: z.ZodString;
14
+ slug: z.ZodString;
15
+ orgId: z.ZodString;
16
+ url: z.ZodNullable<z.ZodString>;
17
+ description: z.ZodNullable<z.ZodString>;
18
+ category: z.ZodNullable<z.ZodEnum<{
19
+ ai: "ai";
20
+ cloud: "cloud";
21
+ commerce: "commerce";
22
+ crm: "crm";
23
+ database: "database";
24
+ design: "design";
25
+ "developer-tools": "developer-tools";
26
+ devops: "devops";
27
+ finance: "finance";
28
+ framework: "framework";
29
+ infrastructure: "infrastructure";
30
+ observability: "observability";
31
+ productivity: "productivity";
32
+ security: "security";
33
+ }>>;
34
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
35
+ desktop: "desktop";
36
+ docs: "docs";
37
+ integration: "integration";
38
+ mobile: "mobile";
39
+ platform: "platform";
40
+ sdk: "sdk";
41
+ tool: "tool";
42
+ }>>>;
43
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
44
+ createdAt: z.ZodString;
45
+ embeddedAt: z.ZodNullable<z.ZodString>;
46
+ deletedAt: z.ZodNullable<z.ZodString>;
47
+ }, z.core.$strip>;
48
+ /** 201 body of POST /v1/products — ProductRow plus an optional non-blocking
49
+ * warning emitted when the new slug shadows an existing same-org source (#1190). */
50
+ export declare const ProductCreateResponseSchema: z.ZodObject<{
51
+ id: z.ZodString;
52
+ name: z.ZodString;
53
+ slug: z.ZodString;
54
+ orgId: z.ZodString;
55
+ url: z.ZodNullable<z.ZodString>;
56
+ description: z.ZodNullable<z.ZodString>;
57
+ category: z.ZodNullable<z.ZodEnum<{
58
+ ai: "ai";
59
+ cloud: "cloud";
60
+ commerce: "commerce";
61
+ crm: "crm";
62
+ database: "database";
63
+ design: "design";
64
+ "developer-tools": "developer-tools";
65
+ devops: "devops";
66
+ finance: "finance";
67
+ framework: "framework";
68
+ infrastructure: "infrastructure";
69
+ observability: "observability";
70
+ productivity: "productivity";
71
+ security: "security";
72
+ }>>;
73
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
74
+ desktop: "desktop";
75
+ docs: "docs";
76
+ integration: "integration";
77
+ mobile: "mobile";
78
+ platform: "platform";
79
+ sdk: "sdk";
80
+ tool: "tool";
81
+ }>>>;
82
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
83
+ createdAt: z.ZodString;
84
+ embeddedAt: z.ZodNullable<z.ZodString>;
85
+ deletedAt: z.ZodNullable<z.ZodString>;
86
+ warning: z.ZodOptional<z.ZodString>;
87
+ }, z.core.$strip>;
88
+ export type ProductCreateResponse = z.infer<typeof ProductCreateResponseSchema>;
89
+ /**
90
+ * Per-product row returned by `GET /v1/products`. Adds `sourceCount` to
91
+ * the row shape but omits the internal `embeddedAt` / `deletedAt` columns
92
+ * (the list handler explicitly selects only the user-facing fields).
93
+ * `avatarUrl` (the product icon, e.g. an App Store app icon) is included so
94
+ * list surfaces can render the avatar without a per-row detail round-trip.
95
+ */
96
+ export declare const ProductListItemSchema: z.ZodObject<{
97
+ id: z.ZodString;
98
+ name: z.ZodString;
99
+ slug: z.ZodString;
100
+ orgId: z.ZodString;
101
+ url: z.ZodNullable<z.ZodString>;
102
+ description: z.ZodNullable<z.ZodString>;
103
+ category: z.ZodNullable<z.ZodEnum<{
104
+ ai: "ai";
105
+ cloud: "cloud";
106
+ commerce: "commerce";
107
+ crm: "crm";
108
+ database: "database";
109
+ design: "design";
110
+ "developer-tools": "developer-tools";
111
+ devops: "devops";
112
+ finance: "finance";
113
+ framework: "framework";
114
+ infrastructure: "infrastructure";
115
+ observability: "observability";
116
+ productivity: "productivity";
117
+ security: "security";
118
+ }>>;
119
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
120
+ desktop: "desktop";
121
+ docs: "docs";
122
+ integration: "integration";
123
+ mobile: "mobile";
124
+ platform: "platform";
125
+ sdk: "sdk";
126
+ tool: "tool";
127
+ }>>>;
128
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
129
+ createdAt: z.ZodString;
130
+ sourceCount: z.ZodNumber;
131
+ }, z.core.$strip>;
132
+ export declare const ProductListResponseSchema: z.ZodObject<{
133
+ items: z.ZodArray<z.ZodObject<{
134
+ id: z.ZodString;
135
+ name: z.ZodString;
136
+ slug: z.ZodString;
137
+ orgId: z.ZodString;
138
+ url: z.ZodNullable<z.ZodString>;
139
+ description: z.ZodNullable<z.ZodString>;
140
+ category: z.ZodNullable<z.ZodEnum<{
141
+ ai: "ai";
142
+ cloud: "cloud";
143
+ commerce: "commerce";
144
+ crm: "crm";
145
+ database: "database";
146
+ design: "design";
147
+ "developer-tools": "developer-tools";
148
+ devops: "devops";
149
+ finance: "finance";
150
+ framework: "framework";
151
+ infrastructure: "infrastructure";
152
+ observability: "observability";
153
+ productivity: "productivity";
154
+ security: "security";
155
+ }>>;
156
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
157
+ desktop: "desktop";
158
+ docs: "docs";
159
+ integration: "integration";
160
+ mobile: "mobile";
161
+ platform: "platform";
162
+ sdk: "sdk";
163
+ tool: "tool";
164
+ }>>>;
165
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
166
+ createdAt: z.ZodString;
167
+ sourceCount: z.ZodNumber;
168
+ }, z.core.$strip>>;
169
+ pagination: z.ZodObject<{
170
+ page: z.ZodNumber;
171
+ pageSize: z.ZodNumber;
172
+ returned: z.ZodNumber;
173
+ totalItems: z.ZodOptional<z.ZodNumber>;
174
+ totalPages: z.ZodOptional<z.ZodNumber>;
175
+ hasMore: z.ZodBoolean;
176
+ }, z.core.$strip>;
177
+ }, z.core.$strip>;
178
+ /**
179
+ * Embedded source row returned in `ProductDetail.sources`. The detail
180
+ * handler explicitly selects only this small subset; reuses the shared
181
+ * `SourceTypeSchema` enum so source types stay in one place.
182
+ */
183
+ export declare const ProductDetailSourceSchema: z.ZodObject<{
184
+ id: z.ZodString;
185
+ slug: z.ZodString;
186
+ name: z.ZodString;
187
+ type: z.ZodEnum<{
188
+ agent: "agent";
189
+ appstore: "appstore";
190
+ feed: "feed";
191
+ github: "github";
192
+ scrape: "scrape";
193
+ video: "video";
194
+ }>;
195
+ url: z.ZodString;
196
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodString>>;
197
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
198
+ desktop: "desktop";
199
+ docs: "docs";
200
+ integration: "integration";
201
+ mobile: "mobile";
202
+ platform: "platform";
203
+ sdk: "sdk";
204
+ tool: "tool";
205
+ }>>>;
206
+ }, z.core.$strip>;
207
+ /**
208
+ * Returned by `GET /v1/products/:identifier` (and the org-scoped twin).
209
+ * Spreads the raw product row and adds `sources`, `tags`, `aliases`.
210
+ *
211
+ * `releases` and `pagination` are populated only by the web format adapter
212
+ * (the `.json` / `.md` product route — see PR #1207), NOT by the bare product
213
+ * detail endpoint. They are optional so bare endpoint consumers see a valid
214
+ * `ProductDetail` without the embedded feed.
215
+ */
216
+ export declare const ProductDetailSchema: z.ZodObject<{
217
+ id: z.ZodString;
218
+ name: z.ZodString;
219
+ slug: z.ZodString;
220
+ orgId: z.ZodString;
221
+ url: z.ZodNullable<z.ZodString>;
222
+ description: z.ZodNullable<z.ZodString>;
223
+ category: z.ZodNullable<z.ZodEnum<{
224
+ ai: "ai";
225
+ cloud: "cloud";
226
+ commerce: "commerce";
227
+ crm: "crm";
228
+ database: "database";
229
+ design: "design";
230
+ "developer-tools": "developer-tools";
231
+ devops: "devops";
232
+ finance: "finance";
233
+ framework: "framework";
234
+ infrastructure: "infrastructure";
235
+ observability: "observability";
236
+ productivity: "productivity";
237
+ security: "security";
238
+ }>>;
239
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
240
+ desktop: "desktop";
241
+ docs: "docs";
242
+ integration: "integration";
243
+ mobile: "mobile";
244
+ platform: "platform";
245
+ sdk: "sdk";
246
+ tool: "tool";
247
+ }>>>;
248
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
249
+ createdAt: z.ZodString;
250
+ embeddedAt: z.ZodNullable<z.ZodString>;
251
+ deletedAt: z.ZodNullable<z.ZodString>;
252
+ sources: z.ZodArray<z.ZodObject<{
253
+ id: z.ZodString;
254
+ slug: z.ZodString;
255
+ name: z.ZodString;
256
+ type: z.ZodEnum<{
257
+ agent: "agent";
258
+ appstore: "appstore";
259
+ feed: "feed";
260
+ github: "github";
261
+ scrape: "scrape";
262
+ video: "video";
263
+ }>;
264
+ url: z.ZodString;
265
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodString>>;
266
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
267
+ desktop: "desktop";
268
+ docs: "docs";
269
+ integration: "integration";
270
+ mobile: "mobile";
271
+ platform: "platform";
272
+ sdk: "sdk";
273
+ tool: "tool";
274
+ }>>>;
275
+ }, z.core.$strip>>;
276
+ tags: z.ZodArray<z.ZodString>;
277
+ aliases: z.ZodArray<z.ZodString>;
278
+ releases: z.ZodOptional<z.ZodArray<z.ZodObject<{
279
+ id: z.ZodOptional<z.ZodString>;
280
+ version: z.ZodNullable<z.ZodString>;
281
+ title: z.ZodString;
282
+ summary: z.ZodString;
283
+ content: z.ZodOptional<z.ZodString>;
284
+ publishedAt: z.ZodNullable<z.ZodString>;
285
+ fetchedAt: z.ZodOptional<z.ZodString>;
286
+ url: z.ZodNullable<z.ZodString>;
287
+ media: z.ZodOptional<z.ZodArray<z.ZodObject<{
288
+ type: z.ZodEnum<{
289
+ gif: "gif";
290
+ image: "image";
291
+ video: "video";
292
+ }>;
293
+ url: z.ZodString;
294
+ alt: z.ZodOptional<z.ZodString>;
295
+ r2Key: z.ZodOptional<z.ZodString>;
296
+ r2Url: z.ZodOptional<z.ZodString>;
297
+ linkUrl: z.ZodOptional<z.ZodString>;
298
+ }, z.core.$strip>>>;
299
+ type: z.ZodOptional<z.ZodEnum<{
300
+ feature: "feature";
301
+ rollup: "rollup";
302
+ }>>;
303
+ prerelease: z.ZodOptional<z.ZodBoolean>;
304
+ titleGenerated: z.ZodOptional<z.ZodNullable<z.ZodString>>;
305
+ titleShort: z.ZodOptional<z.ZodNullable<z.ZodString>>;
306
+ breaking: z.ZodOptional<z.ZodEnum<{
307
+ major: "major";
308
+ minor: "minor";
309
+ none: "none";
310
+ unknown: "unknown";
311
+ }>>;
312
+ importance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
313
+ coverageCount: z.ZodOptional<z.ZodNumber>;
314
+ contentChars: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
315
+ contentTokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
316
+ composition: z.ZodOptional<z.ZodNullable<z.ZodObject<{
317
+ bugs: z.ZodNumber;
318
+ features: z.ZodNumber;
319
+ enhancements: z.ZodNumber;
320
+ }, z.core.$strip>>>;
321
+ }, z.core.$strip>>>;
322
+ pagination: z.ZodOptional<z.ZodObject<{
323
+ nextCursor: z.ZodNullable<z.ZodString>;
324
+ limit: z.ZodNumber;
325
+ }, z.core.$strip>>;
326
+ notice: z.ZodOptional<z.ZodNullable<z.ZodObject<{
327
+ message: z.ZodString;
328
+ linkText: z.ZodOptional<z.ZodString>;
329
+ coordinate: z.ZodOptional<z.ZodString>;
330
+ href: z.ZodOptional<z.ZodURL>;
331
+ }, z.core.$strip>>>;
332
+ }, z.core.$strip>;
333
+ /**
334
+ * Body accepted by `POST /v1/products`. `category` is a non-empty string at
335
+ * the wire boundary so callers can pass either a canonical slug or one of
336
+ * its configured aliases (resolved server-side via `resolveCategoryInput`).
337
+ * Responses always carry the canonical slug. Empty strings are rejected so
338
+ * the truthy-guard around `resolveCategoryInput` in the handler can't be
339
+ * bypassed into persisting an invalid `""` value.
340
+ */
341
+ export declare const CreateProductBodySchema: z.ZodObject<{
342
+ name: z.ZodString;
343
+ orgId: z.ZodOptional<z.ZodString>;
344
+ orgSlug: z.ZodOptional<z.ZodString>;
345
+ slug: z.ZodOptional<z.ZodString>;
346
+ url: z.ZodOptional<z.ZodString>;
347
+ description: z.ZodOptional<z.ZodString>;
348
+ category: z.ZodOptional<z.ZodString>;
349
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
350
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
351
+ desktop: "desktop";
352
+ docs: "docs";
353
+ integration: "integration";
354
+ mobile: "mobile";
355
+ platform: "platform";
356
+ sdk: "sdk";
357
+ tool: "tool";
358
+ }>>>;
359
+ }, z.core.$strip>;
360
+ /**
361
+ * Body accepted by `PATCH /v1/products/:slug`. Same alias-allowed string rule
362
+ * as create, plus `null` to explicitly clear the overlay. Empty strings stay
363
+ * rejected so callers must pick between a slug/alias or `null`.
364
+ */
365
+ export declare const UpdateProductBodySchema: z.ZodObject<{
366
+ name: z.ZodOptional<z.ZodString>;
367
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
368
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
369
+ category: z.ZodOptional<z.ZodNullable<z.ZodString>>;
370
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
371
+ aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
372
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
373
+ desktop: "desktop";
374
+ docs: "docs";
375
+ integration: "integration";
376
+ mobile: "mobile";
377
+ platform: "platform";
378
+ sdk: "sdk";
379
+ tool: "tool";
380
+ }>>>;
381
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
382
+ notice: z.ZodOptional<z.ZodNullable<z.ZodObject<{
383
+ message: z.ZodString;
384
+ linkText: z.ZodOptional<z.ZodString>;
385
+ coordinate: z.ZodOptional<z.ZodString>;
386
+ href: z.ZodOptional<z.ZodURL>;
387
+ }, z.core.$strip>>>;
388
+ }, z.core.$strip>;
389
+ /**
390
+ * Body accepted by `POST /v1/products/adopt`.
391
+ *
392
+ * `mergeInto` (slug or `prod_…` ID) folds the source org into an existing
393
+ * product under `targetOrgSlug` instead of creating a new one. When set,
394
+ * `slug` and `url` must be omitted (the existing product's values stand).
395
+ */
396
+ export declare const AdoptProductBodySchema: z.ZodObject<{
397
+ sourceOrgSlug: z.ZodString;
398
+ targetOrgSlug: z.ZodString;
399
+ slug: z.ZodOptional<z.ZodString>;
400
+ url: z.ZodOptional<z.ZodString>;
401
+ mergeInto: z.ZodOptional<z.ZodString>;
402
+ dryRun: z.ZodOptional<z.ZodBoolean>;
403
+ }, z.core.$strip>;
404
+ /**
405
+ * Live (non-dryRun) result from `POST /v1/products/adopt`.
406
+ *
407
+ * `mergedInto` is set when the request used `mergeInto` — its value is the
408
+ * existing product's slug, signalling that no new product was created.
409
+ */
410
+ export declare const ProductAdoptResultSchema: z.ZodObject<{
411
+ product: z.ZodObject<{
412
+ id: z.ZodString;
413
+ name: z.ZodString;
414
+ slug: z.ZodString;
415
+ orgId: z.ZodString;
416
+ url: z.ZodNullable<z.ZodString>;
417
+ description: z.ZodNullable<z.ZodString>;
418
+ category: z.ZodNullable<z.ZodEnum<{
419
+ ai: "ai";
420
+ cloud: "cloud";
421
+ commerce: "commerce";
422
+ crm: "crm";
423
+ database: "database";
424
+ design: "design";
425
+ "developer-tools": "developer-tools";
426
+ devops: "devops";
427
+ finance: "finance";
428
+ framework: "framework";
429
+ infrastructure: "infrastructure";
430
+ observability: "observability";
431
+ productivity: "productivity";
432
+ security: "security";
433
+ }>>;
434
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
435
+ desktop: "desktop";
436
+ docs: "docs";
437
+ integration: "integration";
438
+ mobile: "mobile";
439
+ platform: "platform";
440
+ sdk: "sdk";
441
+ tool: "tool";
442
+ }>>>;
443
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
444
+ createdAt: z.ZodString;
445
+ embeddedAt: z.ZodNullable<z.ZodString>;
446
+ deletedAt: z.ZodNullable<z.ZodString>;
447
+ }, z.core.$strip>;
448
+ mergedInto: z.ZodOptional<z.ZodString>;
449
+ sourcesMoved: z.ZodNumber;
450
+ accountsMoved: z.ZodNumber;
451
+ sourceOrgDeleted: z.ZodString;
452
+ }, z.core.$strip>;
453
+ /** Dry-run preview from `POST /v1/products/adopt` with `dryRun: true`. */
454
+ export declare const ProductAdoptDryRunSchema: z.ZodObject<{
455
+ dryRun: z.ZodLiteral<true>;
456
+ mergeInto: z.ZodOptional<z.ZodString>;
457
+ product: z.ZodObject<{
458
+ name: z.ZodString;
459
+ slug: z.ZodString;
460
+ url: z.ZodNullable<z.ZodString>;
461
+ orgSlug: z.ZodString;
462
+ }, z.core.$strip>;
463
+ sourcesToMove: z.ZodArray<z.ZodString>;
464
+ sourceOrgToDelete: z.ZodString;
465
+ }, z.core.$strip>;
466
+ /** Response shape returned by `POST /v1/products/adopt` (union of live + dry-run). */
467
+ export declare const ProductAdoptResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
468
+ product: z.ZodObject<{
469
+ id: z.ZodString;
470
+ name: z.ZodString;
471
+ slug: z.ZodString;
472
+ orgId: z.ZodString;
473
+ url: z.ZodNullable<z.ZodString>;
474
+ description: z.ZodNullable<z.ZodString>;
475
+ category: z.ZodNullable<z.ZodEnum<{
476
+ ai: "ai";
477
+ cloud: "cloud";
478
+ commerce: "commerce";
479
+ crm: "crm";
480
+ database: "database";
481
+ design: "design";
482
+ "developer-tools": "developer-tools";
483
+ devops: "devops";
484
+ finance: "finance";
485
+ framework: "framework";
486
+ infrastructure: "infrastructure";
487
+ observability: "observability";
488
+ productivity: "productivity";
489
+ security: "security";
490
+ }>>;
491
+ kind: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
492
+ desktop: "desktop";
493
+ docs: "docs";
494
+ integration: "integration";
495
+ mobile: "mobile";
496
+ platform: "platform";
497
+ sdk: "sdk";
498
+ tool: "tool";
499
+ }>>>;
500
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
501
+ createdAt: z.ZodString;
502
+ embeddedAt: z.ZodNullable<z.ZodString>;
503
+ deletedAt: z.ZodNullable<z.ZodString>;
504
+ }, z.core.$strip>;
505
+ mergedInto: z.ZodOptional<z.ZodString>;
506
+ sourcesMoved: z.ZodNumber;
507
+ accountsMoved: z.ZodNumber;
508
+ sourceOrgDeleted: z.ZodString;
509
+ }, z.core.$strip>, z.ZodObject<{
510
+ dryRun: z.ZodLiteral<true>;
511
+ mergeInto: z.ZodOptional<z.ZodString>;
512
+ product: z.ZodObject<{
513
+ name: z.ZodString;
514
+ slug: z.ZodString;
515
+ url: z.ZodNullable<z.ZodString>;
516
+ orgSlug: z.ZodString;
517
+ }, z.core.$strip>;
518
+ sourcesToMove: z.ZodArray<z.ZodString>;
519
+ sourceOrgToDelete: z.ZodString;
520
+ }, z.core.$strip>]>;
521
+ /** Response shape returned by `DELETE /v1/products/:identifier`. */
522
+ export declare const ProductDeleteResponseSchema: z.ZodObject<{
523
+ deleted: z.ZodLiteral<true>;
524
+ hard: z.ZodOptional<z.ZodLiteral<true>>;
525
+ deletedAt: z.ZodOptional<z.ZodString>;
526
+ }, z.core.$strip>;
527
+ /**
528
+ * Tag list returned by `GET /v1/products/:identifier/tags`. Tag names are
529
+ * sorted alphabetically; the empty array is returned when the product has
530
+ * no tags rather than 404.
531
+ */
532
+ export declare const ProductTagsListResponseSchema: z.ZodArray<z.ZodString>;
533
+ /** Body accepted by `PUT` and `DELETE` `/v1/products/:identifier/tags`. */
534
+ export declare const ProductTagsBodySchema: z.ZodObject<{
535
+ tags: z.ZodArray<z.ZodString>;
536
+ }, z.core.$strip>;
537
+ /** Response shape returned by `PUT` and `DELETE` `/v1/products/:identifier/tags`. */
538
+ export declare const ProductTagsMutationResponseSchema: z.ZodObject<{
539
+ ok: z.ZodLiteral<true>;
540
+ }, z.core.$strip>;
541
+ /**
542
+ * Response shape for `GET /v1/products/:slug/activity` and the org-scoped twin.
543
+ * Returns per-source weekly release buckets plus an aggregate rollup — used for
544
+ * timeline visualization on the product detail page.
545
+ */
546
+ export declare const ProductActivityResponseSchema: z.ZodObject<{
547
+ product: z.ZodObject<{
548
+ slug: z.ZodString;
549
+ name: z.ZodString;
550
+ }, z.core.$strip>;
551
+ range: z.ZodObject<{
552
+ from: z.ZodString;
553
+ to: z.ZodString;
554
+ }, z.core.$strip>;
555
+ sources: z.ZodArray<z.ZodObject<{
556
+ slug: z.ZodString;
557
+ name: z.ZodString;
558
+ releaseCount: z.ZodNumber;
559
+ avgReleasesPerWeek: z.ZodNumber;
560
+ earliestVersion: z.ZodNullable<z.ZodString>;
561
+ latestVersion: z.ZodNullable<z.ZodString>;
562
+ latestDate: z.ZodNullable<z.ZodString>;
563
+ weeklyBuckets: z.ZodArray<z.ZodObject<{
564
+ weekStart: z.ZodString;
565
+ count: z.ZodNumber;
566
+ earliestVersion: z.ZodNullable<z.ZodString>;
567
+ latestVersion: z.ZodNullable<z.ZodString>;
568
+ }, z.core.$strip>>;
569
+ }, z.core.$strip>>;
570
+ aggregateWeekly: z.ZodArray<z.ZodObject<{
571
+ weekStart: z.ZodString;
572
+ count: z.ZodNumber;
573
+ }, z.core.$strip>>;
574
+ }, z.core.$strip>;
575
+ /**
576
+ * Response shape for `GET /v1/products/:slug/heatmap` and the org-scoped twin.
577
+ * Returns daily release counts for the trailing 365 days — used for
578
+ * contribution-graph visualization on the product detail page.
579
+ */
580
+ export declare const ProductHeatmapResponseSchema: z.ZodObject<{
581
+ product: z.ZodObject<{
582
+ slug: z.ZodString;
583
+ name: z.ZodString;
584
+ }, z.core.$strip>;
585
+ range: z.ZodObject<{
586
+ from: z.ZodString;
587
+ to: z.ZodString;
588
+ }, z.core.$strip>;
589
+ dailyCounts: z.ZodArray<z.ZodObject<{
590
+ date: z.ZodString;
591
+ count: z.ZodNumber;
592
+ }, z.core.$strip>>;
593
+ total: z.ZodNumber;
594
+ }, z.core.$strip>;
595
+ //# sourceMappingURL=products.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/schemas/products.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa3B,CAAC;AAEH;qFACqF;AACrF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYhC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA4C,CAAC;AAEnF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;iBAQpC,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS9B,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;iBAUlC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;iBAUlC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;iBAOjC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMnC,CAAC;AAEH,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB;;;;;;;;;;;iBAWnC,CAAC;AAEH,sFAAsF;AACtF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAGrC,CAAC;AAEH,oEAAoE;AACpE,eAAO,MAAM,2BAA2B;;;;iBAItC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,yBAAsB,CAAC;AAEjE,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB;;iBAEhC,CAAC;AAEH,qFAAqF;AACrF,eAAO,MAAM,iCAAiC;;iBAE5C,CAAC;AAsBH;;;;GAIG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKxC,CAAC;AAIH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;iBAKvC,CAAC"}