@buildinternet/releases-api-types 0.35.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buildinternet/releases-api-types",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "description": "Wire protocol — request/response types for the Releases registry API. Shared by web, workers, and clients.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/api-types.ts CHANGED
@@ -818,6 +818,11 @@ export interface ReleaseDetail {
818
818
  /** Explicit upgrade/migration steps lifted from the body (#1696); null when the body gives none. */
819
819
  migrationNotes?: string | null;
820
820
  url: string | null;
821
+ /**
822
+ * Canonical releases.sh detail-page URL (friendly form: ID + current
823
+ * title slug). Additive — older servers omit it.
824
+ */
825
+ webUrl?: string;
821
826
  media: MediaItem[];
822
827
  publishedAt: string | null;
823
828
  fetchedAt: string;
@@ -1235,7 +1240,7 @@ export type UpdatePlaybookNotesResponse = z.infer<typeof UpdatePlaybookNotesResp
1235
1240
 
1236
1241
  export type OverviewStaleness = "missing" | "behind" | "fresh";
1237
1242
  /**
1238
- * `opted_out` — the org has `autoGenerateContent=false`, so the batch-overview
1243
+ * `opted_out` — the org has `autoGenerateContent=false`, so the overview-regen
1239
1244
  * eligibility filter skips it regardless of staleness. Surfaced so an
1240
1245
  * orchestrator planning a sweep doesn't queue a regen that will never run
1241
1246
  * (#1795).
@@ -1261,7 +1266,7 @@ export interface OverviewManifestRow {
1261
1266
  staleness: OverviewStaleness;
1262
1267
  /**
1263
1268
  * Whether the org is opted into automatic AI content. When `false`, the
1264
- * batch-overview cron/manual regen skips it — the staleness signal alone is
1269
+ * overview-regen cron skips it — the staleness signal alone is
1265
1270
  * misleading without this (#1795). Older workers may omit it mid-deploy.
1266
1271
  */
1267
1272
  autoGenerateContent?: boolean;
@@ -120,6 +120,13 @@ export const UpdateOrgBodySchema = z.object({
120
120
  isHidden: z.boolean().optional(),
121
121
  /** Admin-only: opt the org into automatic AI content — org overviews AND per-release summaries (single backend flag `auto_generate_content`). */
122
122
  autoGenerateContent: z.boolean().optional(),
123
+ /**
124
+ * Admin-only: manual override for the automated overview-regen cadence in
125
+ * days (#1895). `null` clears back to automatic (velocity-tiered: 7d
126
+ * default, 2d at high release velocity). A set value pins the cadence in
127
+ * either direction — faster for a hot org, slower for a bursty one.
128
+ */
129
+ overviewCadenceDays: z.number().int().min(1).max(90).nullable().optional(),
123
130
  /** Admin-only: promote this org on the home-page featured rail. */
124
131
  featured: z.boolean().optional(),
125
132
  /** Admin-only: promote or demote the org's discovery status (curated/agent/on_demand). */
@@ -465,6 +472,8 @@ export const OrgDetailSchema = z.object({
465
472
  isHidden: z.boolean().optional(),
466
473
  /** Admin display flag: org is opted into automatic overviews + per-release summaries. Optional on the wire for older workers mid-deploy. */
467
474
  autoGenerateContent: z.boolean().optional(),
475
+ /** Manual overview-regen cadence override in days (#1895); null = automatic velocity tier. Optional on the wire for older workers mid-deploy. */
476
+ overviewCadenceDays: z.number().int().nullable().optional(),
468
477
  /** Admin display flag: org is promoted on the home-page featured rail. Optional on the wire for older workers mid-deploy. */
469
478
  featured: z.boolean().optional(),
470
479
  /** Admin display flag: all ingest paused for this org. */
@@ -62,6 +62,11 @@ export const ReleaseLatestItemSchema = z.object({
62
62
  breaking: z.enum(BREAKING_LEVELS).optional(),
63
63
  publishedAt: z.string().nullable(),
64
64
  url: z.string().nullable(),
65
+ /**
66
+ * Canonical releases.sh detail-page URL (friendly form: ID + current
67
+ * title slug). Additive — older servers and the digest-cron path omit it.
68
+ */
69
+ webUrl: z.string().optional(),
65
70
  media: z.array(MediaItemSchema),
66
71
  source: ReleaseLatestSourceSchema,
67
72
  /**
@@ -237,6 +242,13 @@ export const ReleaseDetailResponseSchema = z.object({
237
242
  */
238
243
  migrationNotes: z.string().nullable().optional(),
239
244
  url: z.string().nullable(),
245
+ /**
246
+ * Canonical releases.sh detail-page URL, `https://releases.sh/release/
247
+ * rel_<id>-<slug>` (Zendesk-style: immutable ID + current title slug;
248
+ * the slug follows title regeneration, the ID keeps old links alive).
249
+ * Additive — older servers omit it.
250
+ */
251
+ webUrl: z.string().optional(),
240
252
  contentHash: z.string().nullable(),
241
253
  media: z.array(MediaItemSchema),
242
254
  publishedAt: z.string().nullable(),