@rolino/contracts 0.8.0 → 0.10.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/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/index.ts
2
2
  import { z } from "zod";
3
3
  var API_VERSION = "v1";
4
- var CONTRACT_VERSION = "0.19.0";
4
+ var CONTRACT_VERSION = "0.20.0";
5
5
  var RequestMetadataSchema = z.object({
6
6
  requestId: z.string().min(1)
7
7
  });
@@ -90,11 +90,13 @@ var CapabilityIdSchema = z.enum([
90
90
  "projects:write",
91
91
  "posts:read",
92
92
  "posts:write",
93
+ "posts:delete",
93
94
  "posts:schedule",
94
95
  "posts:publish",
95
96
  "storage:read",
96
97
  "media:delete",
97
98
  "integrations:read",
99
+ "integrations:disconnect",
98
100
  "calendar:read",
99
101
  "seo:read",
100
102
  "backlinks:read",
@@ -1040,6 +1042,13 @@ var PostDestinationStageSchema = z.enum([
1040
1042
  "FAILED"
1041
1043
  ]);
1042
1044
  var PostDestinationSchema = z.object({
1045
+ id: z.string().min(1).optional(),
1046
+ integrationId: z.string().min(1).nullable().optional(),
1047
+ accountId: z.string().nullable().optional(),
1048
+ accountName: z.string().nullable().optional(),
1049
+ accountAvatar: z.string().nullable().optional(),
1050
+ tiktokSettings: z.lazy(() => TikTokPostSettingsSchema).nullable().optional(),
1051
+ youtubeSettings: z.lazy(() => YouTubePostSettingsSchema).nullable().optional(),
1043
1052
  provider: PublishingProviderSchema,
1044
1053
  status: PlatformPostStatusSchema,
1045
1054
  deliveryMode: PostDeliveryModeSchema,
@@ -1048,6 +1057,9 @@ var PostDestinationSchema = z.object({
1048
1057
  scheduledAt: z.string().datetime().nullable(),
1049
1058
  publishedAt: z.string().datetime().nullable(),
1050
1059
  remoteUrl: z.string().url().nullable(),
1060
+ remotePostId: z.string().nullable().optional(),
1061
+ remoteContainerId: z.string().nullable().optional(),
1062
+ studioUrl: z.string().url().nullable().optional(),
1051
1063
  attemptCount: z.number().int().nonnegative()
1052
1064
  });
1053
1065
  var TikTokPostSettingsSchema = z.object({
@@ -1234,14 +1246,35 @@ var DraftMediaAssetIdsSchema = z.array(z.string().trim().min(1).max(200)).max(10
1234
1246
  (ids) => new Set(ids).size === ids.length,
1235
1247
  "Media asset IDs must be unique."
1236
1248
  );
1249
+ var DraftMediaAltTextSchema = z.record(z.string().min(1).max(200), z.string().trim().max(1e3).nullable()).refine((items) => Object.keys(items).length <= 10, "At most ten media descriptions are allowed.");
1250
+ var DraftAccountDestinationSchema = z.object({
1251
+ integrationId: z.string().trim().min(1).max(200),
1252
+ provider: PublishingProviderSchema,
1253
+ captionOverride: z.string().max(5e3).nullable().default(null),
1254
+ tiktokSettings: TikTokDraftSettingsSchema.nullable().default(null),
1255
+ youtubeSettings: YouTubePostSettingsSchema.nullable().default(null)
1256
+ }).strict().superRefine((input, context) => {
1257
+ const captionSchema = DraftCaptionOverridesObjectSchema.shape[input.provider];
1258
+ if (!captionSchema.safeParse(input.captionOverride).success) context.addIssue({ code: "custom", path: ["captionOverride"], message: "The account caption exceeds this network's limit." });
1259
+ if (input.tiktokSettings && input.provider !== "TIKTOK") context.addIssue({ code: "custom", path: ["tiktokSettings"], message: "TikTok settings require a TikTok account." });
1260
+ if (input.youtubeSettings && input.provider !== "YOUTUBE") context.addIssue({ code: "custom", path: ["youtubeSettings"], message: "YouTube settings require a YouTube account." });
1261
+ if (input.provider === "YOUTUBE" && !input.youtubeSettings) context.addIssue({ code: "custom", path: ["youtubeSettings"], message: "Provide settings for this YouTube account." });
1262
+ });
1263
+ var DraftAccountDestinationsSchema = z.array(DraftAccountDestinationSchema).max(75).refine((items) => new Set(items.map((item) => item.integrationId)).size === items.length, "Select each account only once.");
1237
1264
  var DraftPostInputSchema = z.object({
1265
+ destinations: DraftAccountDestinationsSchema.optional(),
1238
1266
  caption: z.string().max(3e3).transform((value) => value.trim()).default(""),
1239
1267
  platforms: DraftPlatformsSchema.default([]),
1240
1268
  mediaAssetIds: DraftMediaAssetIdsSchema.default([]),
1269
+ mediaAltText: DraftMediaAltTextSchema.optional(),
1241
1270
  captionOverrides: DraftCaptionOverridesObjectSchema.default({}),
1242
1271
  tiktokSettings: TikTokDraftSettingsSchema.nullable().default(null),
1243
1272
  youtubeSettings: YouTubePostSettingsSchema.nullable().default(null)
1244
1273
  }).strict().superRefine((input, context) => {
1274
+ if (input.destinations !== void 0 && (input.platforms?.length || Object.keys(input.captionOverrides ?? {}).length || input.tiktokSettings || input.youtubeSettings)) context.addIssue({ code: "custom", path: ["destinations"], message: "Use account destinations with their own settings, without legacy platform fields." });
1275
+ if (input.mediaAltText && Object.keys(input.mediaAltText).some((id) => !input.mediaAssetIds.includes(id))) {
1276
+ context.addIssue({ code: "custom", path: ["mediaAltText"], message: "Alternative text must name a selected media asset." });
1277
+ }
1245
1278
  if (input.caption.length === 0 && input.mediaAssetIds.length === 0) {
1246
1279
  context.addIssue({
1247
1280
  code: "custom",
@@ -1286,13 +1319,16 @@ var DraftPostInputSchema = z.object({
1286
1319
  }
1287
1320
  });
1288
1321
  var DraftPostUpdateInputSchema = z.object({
1322
+ destinations: DraftAccountDestinationsSchema.optional(),
1289
1323
  caption: z.string().max(3e3).transform((value) => value.trim()).optional(),
1290
1324
  platforms: DraftPlatformsSchema.optional(),
1291
1325
  mediaAssetIds: DraftMediaAssetIdsSchema.optional(),
1326
+ mediaAltText: DraftMediaAltTextSchema.optional(),
1292
1327
  captionOverrides: DraftCaptionOverridesObjectSchema.optional(),
1293
1328
  tiktokSettings: TikTokDraftSettingsSchema.nullable().optional(),
1294
1329
  youtubeSettings: YouTubePostSettingsSchema.nullable().optional()
1295
1330
  }).strict().superRefine((input, context) => {
1331
+ if (input.destinations !== void 0 && (input.platforms?.length || Object.keys(input.captionOverrides ?? {}).length || input.tiktokSettings || input.youtubeSettings)) context.addIssue({ code: "custom", path: ["destinations"], message: "Use account destinations with their own settings, without legacy platform fields." });
1296
1332
  if (Object.values(input).every((value) => value === void 0)) {
1297
1333
  context.addIssue({ code: "custom", message: "Provide at least one draft field to update." });
1298
1334
  }
@@ -1324,6 +1360,8 @@ var ProviderHealthStatusSchema = z.enum([
1324
1360
  "unknown"
1325
1361
  ]);
1326
1362
  var IntegrationHealthSchema = z.object({
1363
+ integrationId: z.string().nullable().optional(),
1364
+ accountId: z.string().nullable().optional(),
1327
1365
  provider: PublishingProviderSchema,
1328
1366
  connectionStatus: IntegrationConnectionStatusSchema,
1329
1367
  connected: z.boolean(),
@@ -1345,9 +1383,9 @@ var IntegrationHealthSchema = z.object({
1345
1383
  })
1346
1384
  });
1347
1385
  var IntegrationHealthListDataSchema = z.object({
1348
- items: z.array(IntegrationHealthSchema).max(PUBLISHING_PROVIDER_COUNT).refine(
1349
- (items) => new Set(items.map((item) => item.provider)).size === items.length,
1350
- "Provider health items must be unique."
1386
+ items: z.array(IntegrationHealthSchema).refine(
1387
+ (items) => new Set(items.map((item) => item.integrationId ?? item.provider)).size === items.length,
1388
+ "Account health items must be unique."
1351
1389
  )
1352
1390
  });
1353
1391
  var IntegrationHealthListResponseSchema = successEnvelopeSchema(
@@ -1355,9 +1393,12 @@ var IntegrationHealthListResponseSchema = successEnvelopeSchema(
1355
1393
  );
1356
1394
  var ProviderDeliveryOptionsProviderSchema = z.enum([
1357
1395
  "TIKTOK",
1358
- "LINKEDIN"
1396
+ "LINKEDIN",
1397
+ "BLUESKY"
1359
1398
  ]);
1360
1399
  var TikTokDeliveryOptionsSchema = z.object({
1400
+ integrationId: z.string().nullable().optional(),
1401
+ accountId: z.string().nullable().optional(),
1361
1402
  provider: z.literal("TIKTOK"),
1362
1403
  account: z.object({
1363
1404
  username: z.string().nullable(),
@@ -1386,6 +1427,8 @@ var TikTokDeliveryOptionsSchema = z.object({
1386
1427
  checkedAt: z.string().datetime()
1387
1428
  });
1388
1429
  var LinkedInDeliveryOptionsSchema = z.object({
1430
+ integrationId: z.string().nullable().optional(),
1431
+ accountId: z.string().nullable().optional(),
1389
1432
  provider: z.literal("LINKEDIN"),
1390
1433
  account: z.object({
1391
1434
  displayName: z.string().nullable(),
@@ -1413,13 +1456,72 @@ var LinkedInDeliveryOptionsSchema = z.object({
1413
1456
  }),
1414
1457
  checkedAt: z.string().datetime()
1415
1458
  });
1459
+ var BlueskyDeliveryOptionsSchema = z.object({
1460
+ integrationId: z.string().nullable().optional(),
1461
+ accountId: z.string().nullable().optional(),
1462
+ provider: z.literal("BLUESKY"),
1463
+ account: z.object({ username: z.string().nullable(), displayName: z.string().nullable(), avatarUrl: z.string().url().nullable() }),
1464
+ supportedPostTypes: z.tuple([z.literal("TEXT"), z.literal("SINGLE_IMAGE"), z.literal("MULTI_IMAGE")]),
1465
+ maxCaptionGraphemes: z.literal(300),
1466
+ image: z.object({ maxItems: z.literal(4), mimeTypes: z.tuple([z.literal("image/jpeg"), z.literal("image/png"), z.literal("image/webp")]), maxBytes: z.literal(2e6), maxProcessedBytes: z.literal(2e6) }),
1467
+ authorization: z.object({ kind: z.literal("HUMAN_OAUTH"), path: z.string().startsWith("/projects/"), instruction: z.string().min(1) }),
1468
+ health: z.object({ status: ProviderHealthStatusSchema, code: z.string().min(1), message: z.string().min(1) }),
1469
+ checkedAt: z.string().datetime()
1470
+ });
1416
1471
  var ProviderDeliveryOptionsSchema = z.discriminatedUnion("provider", [
1417
1472
  TikTokDeliveryOptionsSchema,
1418
- LinkedInDeliveryOptionsSchema
1473
+ LinkedInDeliveryOptionsSchema,
1474
+ BlueskyDeliveryOptionsSchema
1419
1475
  ]);
1420
1476
  var ProviderDeliveryOptionsResponseSchema = successEnvelopeSchema(
1421
1477
  ProviderDeliveryOptionsSchema
1422
1478
  );
1479
+ var IntegrationDisconnectInputSchema = z.object({ provider: z.literal("BLUESKY"), integrationId: z.string().min(1).max(200).optional() }).strict();
1480
+ var IntegrationDisconnectExecuteInputSchema = IntegrationDisconnectInputSchema.extend({ expectedVersion: z.string().min(1).max(100), confirmationToken: z.string().min(1).max(1024) });
1481
+ var IntegrationDisconnectPreviewSchema = z.object({
1482
+ integrationId: z.string().optional(),
1483
+ accountId: z.string().nullable().optional(),
1484
+ provider: z.literal("BLUESKY"),
1485
+ projectId: z.string().min(1),
1486
+ expectedVersion: z.string().min(1),
1487
+ account: z.string().nullable(),
1488
+ pendingDeliveries: z.number().int().nonnegative(),
1489
+ consequence: z.string().min(1),
1490
+ confirmation: z.object({ token: z.string().min(1), expiresAt: z.string().datetime() })
1491
+ });
1492
+ var IntegrationDisconnectResultSchema = z.object({ integrationId: z.string().optional(), provider: z.literal("BLUESKY"), projectId: z.string().min(1), status: z.literal("DISCONNECTED"), remoteRevocation: z.enum(["PENDING", "REVOKED", "UNRESOLVED", "NOT_REQUIRED"]) });
1493
+ var IntegrationDisconnectPreviewResponseSchema = successEnvelopeSchema(IntegrationDisconnectPreviewSchema);
1494
+ var IntegrationDisconnectResponseSchema = successEnvelopeSchema(IntegrationDisconnectResultSchema);
1495
+ var DraftDeletePreviewSchema = z.object({
1496
+ operation: z.literal("posts.delete.execute"),
1497
+ projectId: z.string().min(1),
1498
+ postId: z.string().min(1),
1499
+ version: z.number().int().positive(),
1500
+ caption: z.string(),
1501
+ mediaCount: z.number().int().nonnegative(),
1502
+ consequence: z.string().min(1),
1503
+ confirmation: z.object({ token: z.string().min(1), expiresAt: z.string().datetime() })
1504
+ });
1505
+ var DraftDeleteResultSchema = z.object({ postId: z.string().min(1), status: z.literal("DELETED") });
1506
+ var DraftDeletePreviewResponseSchema = successEnvelopeSchema(DraftDeletePreviewSchema);
1507
+ var DraftDeleteResponseSchema = successEnvelopeSchema(DraftDeleteResultSchema);
1508
+ var PostScheduleCancelInputSchema = z.object({}).strict();
1509
+ var PostScheduleCancelExecuteInputSchema = z.object({ confirmationToken: z.string().min(1).max(1024) }).strict();
1510
+ var PostScheduleCancelResultSchema = z.object({ postId: z.string().min(1), version: z.number().int().positive(), status: z.literal("DRAFT") });
1511
+ var PostScheduleCancelPreviewSchema = z.object({
1512
+ accounts: z.array(z.object({ destinationId: z.string().min(1), integrationId: z.string().nullable(), provider: PublishingProviderSchema, accountId: z.string().nullable(), accountName: z.string().nullable() })).optional(),
1513
+ operation: z.literal("posts.schedule.cancel.execute"),
1514
+ projectId: z.string().min(1),
1515
+ postId: z.string().min(1),
1516
+ version: z.number().int().positive(),
1517
+ scheduledAt: z.string().datetime(),
1518
+ timezone: z.string().nullable(),
1519
+ destinations: z.array(PublishingProviderSchema).min(1),
1520
+ consequence: z.string().min(1),
1521
+ confirmation: z.object({ token: z.string().min(1), expiresAt: z.string().datetime() })
1522
+ });
1523
+ var PostScheduleCancelPreviewResponseSchema = successEnvelopeSchema(PostScheduleCancelPreviewSchema);
1524
+ var PostScheduleCancelResponseSchema = successEnvelopeSchema(PostScheduleCancelResultSchema);
1423
1525
  var ReadinessStatusSchema = z.enum([
1424
1526
  "checking",
1425
1527
  "pass",
@@ -1428,18 +1530,21 @@ var ReadinessStatusSchema = z.enum([
1428
1530
  "unknown"
1429
1531
  ]);
1430
1532
  var ReadinessActionSchema = z.object({
1533
+ integrationId: z.string().optional(),
1431
1534
  kind: z.enum([
1432
1535
  "reconnect",
1433
1536
  "replace_media",
1434
1537
  "adjust_media",
1435
1538
  "review_settings",
1436
1539
  "edit_caption",
1437
- "refresh_health"
1540
+ "refresh_health",
1541
+ "refresh_readiness"
1438
1542
  ]),
1439
1543
  provider: PublishingProviderSchema.optional(),
1440
1544
  mediaId: z.string().min(1).optional()
1441
1545
  });
1442
1546
  var PostReadinessCheckSchema = z.object({
1547
+ integrationId: z.string().optional(),
1443
1548
  key: z.string().min(1),
1444
1549
  id: z.enum([
1445
1550
  "connection",
@@ -1466,6 +1571,8 @@ var PostReadinessCheckSchema = z.object({
1466
1571
  var PostReadinessSchema = z.object({
1467
1572
  checks: z.array(PostReadinessCheckSchema),
1468
1573
  accounts: z.array(z.object({
1574
+ integrationId: z.string().optional(),
1575
+ externalAccountId: z.string().nullable().optional(),
1469
1576
  provider: PublishingProviderSchema,
1470
1577
  connected: z.boolean(),
1471
1578
  username: z.string().nullable(),
@@ -1493,7 +1600,9 @@ var PostScheduleInputSchema = z.object({
1493
1600
  var PostScheduleExecuteInputSchema = PostScheduleInputSchema.extend({
1494
1601
  confirmationToken: z.string().trim().min(1).max(200)
1495
1602
  }).strict();
1603
+ var PublishingAccountReviewListSchema = z.array(z.object({ destinationId: z.string(), integrationId: z.string(), provider: PublishingProviderSchema, accountId: z.string().nullable(), accountName: z.string().nullable(), accountAvatar: z.string().nullable(), caption: z.string(), tiktokSettings: TikTokPostSettingsSchema.nullable(), youtubeSettings: YouTubePostSettingsSchema.nullable() })).optional();
1496
1604
  var PostSchedulePreviewSchema = z.object({
1605
+ accounts: PublishingAccountReviewListSchema,
1497
1606
  operation: z.literal("posts.schedule.execute"),
1498
1607
  deliveryMode: z.literal("SCHEDULED"),
1499
1608
  post: z.object({
@@ -1525,6 +1634,7 @@ var PostSchedulePreviewResponseSchema = successEnvelopeSchema(
1525
1634
  PostSchedulePreviewSchema
1526
1635
  );
1527
1636
  var PostSchedulePendingSchema = z.object({
1637
+ destinations: z.array(z.object({ destinationId: z.string().min(1), integrationId: z.string().min(1), mutationId: z.string().min(1) })).optional(),
1528
1638
  status: z.literal("PENDING"),
1529
1639
  postId: z.string().min(1),
1530
1640
  provider: z.literal("YOUTUBE"),
@@ -1542,12 +1652,12 @@ var PostScheduleExecuteResponseSchema = successEnvelopeSchema(
1542
1652
  PostScheduleExecuteResultSchema
1543
1653
  );
1544
1654
  var PostPublishInputSchema = z.object({
1545
- destinations: z.array(PublishingProviderSchema).min(1).max(PUBLISHING_PROVIDER_COUNT).refine(
1546
- (destinations) => new Set(destinations).size === destinations.length,
1547
- "destinations must not contain duplicates"
1548
- )
1549
- }).strict();
1550
- var PostPublishExecuteInputSchema = PostPublishInputSchema.extend({
1655
+ destinationIds: z.array(z.string().trim().min(1).max(200)).min(1).max(75).refine((ids) => new Set(ids).size === ids.length, "Select each destination only once.").optional(),
1656
+ destinations: z.array(PublishingProviderSchema).max(PUBLISHING_PROVIDER_COUNT).refine((items) => new Set(items).size === items.length, "Select each network only once.").default([])
1657
+ }).strict().superRefine((input, context) => {
1658
+ if (input.destinationIds ? input.destinations.length > 0 : input.destinations.length === 0) context.addIssue({ code: "custom", message: "Provide destinationIds, or unambiguous legacy destinations, but not both." });
1659
+ });
1660
+ var PostPublishExecuteInputSchema = PostPublishInputSchema.safeExtend({
1551
1661
  confirmationToken: z.string().trim().min(1).max(200)
1552
1662
  }).strict();
1553
1663
  var PostPublishPreviewSchema = z.object({
@@ -1560,6 +1670,8 @@ var PostPublishPreviewSchema = z.object({
1560
1670
  status: PostStatusSchema
1561
1671
  }),
1562
1672
  destinations: PostPublishInputSchema.shape.destinations,
1673
+ destinationIds: z.array(z.string()).optional(),
1674
+ accounts: PublishingAccountReviewListSchema,
1563
1675
  youtube: z.object({
1564
1676
  visibility: YouTubePostSettingsSchema.shape.privacyStatus,
1565
1677
  preparationStartsImmediately: z.literal(true),
@@ -1588,6 +1700,11 @@ var CalendarEventSchema = z.object({
1588
1700
  }).nullable(),
1589
1701
  thumbnailUrl: z.string().url().nullable(),
1590
1702
  destinations: z.array(z.object({
1703
+ id: z.string().optional(),
1704
+ integrationId: z.string().nullable().optional(),
1705
+ accountId: z.string().nullable().optional(),
1706
+ accountName: z.string().nullable().optional(),
1707
+ accountAvatar: z.string().nullable().optional(),
1591
1708
  provider: PublishingProviderSchema,
1592
1709
  status: PlatformPostStatusSchema
1593
1710
  }))
@@ -1990,6 +2107,70 @@ var BacklinkContactSchema = z.object({
1990
2107
  var BacklinkContactListDataSchema = z.object({ items: z.array(BacklinkContactSchema).max(50), page: z.object({ limit: z.number().int().min(1).max(50), nextCursor: SeoCursorSchema.nullable() }).strict() }).strict();
1991
2108
  var BacklinkContactListQuerySchema = z.object({ limit: z.coerce.number().int().min(1).max(50).default(20), cursor: SeoCursorSchema.optional() }).strict();
1992
2109
  var BacklinkContactListResponseSchema = successEnvelopeSchema(BacklinkContactListDataSchema);
2110
+ var PostDeliveryCheckInputSchema = z.object({ provider: PublishingProviderSchema, destinationId: z.string().min(1).max(200).optional() }).strict();
2111
+ var PostDeliveryCheckResultSchema = z.object({
2112
+ destinationId: z.string().min(1).optional(),
2113
+ integrationId: z.string().nullable().optional(),
2114
+ accountId: z.string().nullable().optional(),
2115
+ postId: z.string().min(1),
2116
+ provider: PublishingProviderSchema,
2117
+ kind: z.enum(["PUBLISHED", "SCHEDULED", "PROCESSING", "ACTION_REQUIRED", "UNKNOWN", "BUSY"]),
2118
+ message: z.string(),
2119
+ version: z.number().int().positive(),
2120
+ remotePostId: z.string().nullable(),
2121
+ remoteContainerId: z.string().nullable(),
2122
+ studioUrl: z.string().url().nullable()
2123
+ });
2124
+ var PostDeliveryCheckResponseSchema = successEnvelopeSchema(PostDeliveryCheckResultSchema);
2125
+ var PostRecoveryInputSchema = z.object({
2126
+ destinationId: z.string().min(1).max(200).optional(),
2127
+ provider: z.literal("YOUTUBE"),
2128
+ action: z.enum(["ATTACH", "RESUME"]),
2129
+ videoId: z.string().regex(/^[\w-]{11}$/),
2130
+ publishAt: z.string().datetime({ offset: true }).nullable().optional()
2131
+ }).strict().superRefine((input, context) => {
2132
+ if (input.action === "RESUME" && input.publishAt === void 0) {
2133
+ context.addIssue({ code: "custom", path: ["publishAt"], message: "RESUME requires a future time or explicit null to publish now." });
2134
+ }
2135
+ if (input.action === "ATTACH" && input.publishAt !== void 0) {
2136
+ context.addIssue({ code: "custom", path: ["publishAt"], message: "Attachment cannot change publication time." });
2137
+ }
2138
+ });
2139
+ var PostRecoveryExecuteInputSchema = PostRecoveryInputSchema.safeExtend({
2140
+ confirmationToken: z.string().trim().min(1).max(200)
2141
+ });
2142
+ var PostRecoveryPreviewSchema = z.object({
2143
+ destinationId: z.string().min(1).optional(),
2144
+ integrationId: z.string().nullable().optional(),
2145
+ operation: z.literal("posts.recovery.execute"),
2146
+ projectId: z.string().min(1),
2147
+ postId: z.string().min(1),
2148
+ provider: z.literal("YOUTUBE"),
2149
+ action: z.enum(["ATTACH", "RESUME"]),
2150
+ videoId: z.string(),
2151
+ publishAt: z.string().datetime({ offset: true }).nullable().optional(),
2152
+ version: z.number().int().positive(),
2153
+ title: z.string(),
2154
+ description: z.string(),
2155
+ channel: z.string().nullable(),
2156
+ accountId: z.string(),
2157
+ privacy: z.string(),
2158
+ consequence: z.string(),
2159
+ confirmation: z.object({ token: z.string().min(1), expiresAt: z.string().datetime() })
2160
+ });
2161
+ var PostRecoveryPreviewResponseSchema = successEnvelopeSchema(PostRecoveryPreviewSchema);
2162
+ var PostRecoveryResultSchema = z.object({
2163
+ destinationId: z.string().min(1).optional(),
2164
+ integrationId: z.string().nullable().optional(),
2165
+ accountId: z.string().nullable().optional(),
2166
+ postId: z.string().min(1),
2167
+ provider: z.literal("YOUTUBE"),
2168
+ action: z.enum(["ATTACH", "RESUME"]),
2169
+ videoId: z.string(),
2170
+ kind: z.enum(["ATTACHED", "QUEUED", "PUBLISHED"]),
2171
+ version: z.number().int().positive()
2172
+ });
2173
+ var PostRecoveryResponseSchema = successEnvelopeSchema(PostRecoveryResultSchema);
1993
2174
  export {
1994
2175
  AGENT_CAPABILITIES,
1995
2176
  API_VERSION,
@@ -2137,6 +2318,7 @@ export {
2137
2318
  BlogMetadataSchema,
2138
2319
  BlogSitemapEntrySchema,
2139
2320
  BlogSlugRedirectSchema,
2321
+ BlueskyDeliveryOptionsSchema,
2140
2322
  CONTRACT_VERSION,
2141
2323
  CalendarEventSchema,
2142
2324
  CalendarListDataSchema,
@@ -2146,9 +2328,20 @@ export {
2146
2328
  CapabilitiesResponseSchema,
2147
2329
  CapabilityIdSchema,
2148
2330
  CapabilitySchema,
2331
+ DraftAccountDestinationSchema,
2332
+ DraftDeletePreviewResponseSchema,
2333
+ DraftDeletePreviewSchema,
2334
+ DraftDeleteResponseSchema,
2335
+ DraftDeleteResultSchema,
2149
2336
  DraftPostInputSchema,
2150
2337
  DraftPostUpdateInputSchema,
2151
2338
  IntegrationConnectionStatusSchema,
2339
+ IntegrationDisconnectExecuteInputSchema,
2340
+ IntegrationDisconnectInputSchema,
2341
+ IntegrationDisconnectPreviewResponseSchema,
2342
+ IntegrationDisconnectPreviewSchema,
2343
+ IntegrationDisconnectResponseSchema,
2344
+ IntegrationDisconnectResultSchema,
2152
2345
  IntegrationHealthListDataSchema,
2153
2346
  IntegrationHealthListResponseSchema,
2154
2347
  IntegrationHealthSchema,
@@ -2181,6 +2374,9 @@ export {
2181
2374
  NormalizedMediaCleanupSelectionSchema,
2182
2375
  PUBLISHING_PROVIDER_COUNT,
2183
2376
  PlatformPostStatusSchema,
2377
+ PostDeliveryCheckInputSchema,
2378
+ PostDeliveryCheckResponseSchema,
2379
+ PostDeliveryCheckResultSchema,
2184
2380
  PostDeliveryModeSchema,
2185
2381
  PostDestinationSchema,
2186
2382
  PostDestinationStageSchema,
@@ -2196,7 +2392,19 @@ export {
2196
2392
  PostReadinessCheckSchema,
2197
2393
  PostReadinessResponseSchema,
2198
2394
  PostReadinessSchema,
2395
+ PostRecoveryExecuteInputSchema,
2396
+ PostRecoveryInputSchema,
2397
+ PostRecoveryPreviewResponseSchema,
2398
+ PostRecoveryPreviewSchema,
2399
+ PostRecoveryResponseSchema,
2400
+ PostRecoveryResultSchema,
2199
2401
  PostResponseSchema,
2402
+ PostScheduleCancelExecuteInputSchema,
2403
+ PostScheduleCancelInputSchema,
2404
+ PostScheduleCancelPreviewResponseSchema,
2405
+ PostScheduleCancelPreviewSchema,
2406
+ PostScheduleCancelResponseSchema,
2407
+ PostScheduleCancelResultSchema,
2200
2408
  PostScheduleExecuteInputSchema,
2201
2409
  PostScheduleExecuteResponseSchema,
2202
2410
  PostScheduleExecuteResultSchema,