@getlatedev/node 0.1.18 → 0.1.20

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.d.mts CHANGED
@@ -742,6 +742,7 @@ type FoodMenuSection = {
742
742
  * - Call-to-action buttons drive user engagement
743
743
  * - Posts appear on your Google Business Profile and in Google Search/Maps
744
744
  * - Use locationId to post to multiple locations from the same account connection
745
+ * - Language is auto-detected from content; override with languageCode if needed
745
746
  *
746
747
  */
747
748
  type GoogleBusinessPlatformData = {
@@ -753,6 +754,14 @@ type GoogleBusinessPlatformData = {
753
754
  *
754
755
  */
755
756
  locationId?: string;
757
+ /**
758
+ * BCP 47 language code for the post content (e.g., "en", "de", "es", "fr").
759
+ * If omitted, the language is automatically detected from the post text.
760
+ * Setting this explicitly is recommended when auto-detection may not be accurate
761
+ * (e.g., very short posts, mixed-language content, or transliterated text).
762
+ *
763
+ */
764
+ languageCode?: string;
756
765
  /**
757
766
  * Optional call-to-action button displayed on the post
758
767
  */
@@ -801,7 +810,7 @@ type status = 'safe' | 'banned' | 'restricted' | 'unknown';
801
810
  * - Validation happens at post creation; invalid images are rejected immediately with helpful error messages.
802
811
  * - Carousels support up to 10 media items.
803
812
  * - Stories require media; no captions are published with Stories.
804
- * - User tags: coordinates range from 0.0 to 1.0 representing position from top-left corner. Tagged users receive notifications.
813
+ * - User tags: coordinates range from 0.0 to 1.0 representing position from top-left corner. For carousels, use `mediaIndex` to tag specific slides. Tagged users receive notifications.
805
814
  *
806
815
  * **Automatic Compression (similar to Bluesky):**
807
816
  * - All images (story, post, carousel, thumbnails) exceeding 8 MB are automatically compressed using quality reduction and resizing.
@@ -845,7 +854,11 @@ type InstagramPlatformData = {
845
854
  graduationStrategy?: 'MANUAL' | 'SS_PERFORMANCE';
846
855
  };
847
856
  /**
848
- * Tag Instagram users in photos by username and position coordinates. Only works for single image posts and the first image of carousel posts. Not supported for stories or videos.
857
+ * Tag Instagram users in photos by username and position coordinates. Not supported for stories or videos.
858
+ * For carousel posts, use the optional `mediaIndex` field to specify which slide each tag applies to.
859
+ * Tags without `mediaIndex` default to the first image (index 0) for backwards compatibility.
860
+ * Tags targeting video items are silently skipped (Instagram only supports tagging on images).
861
+ *
849
862
  */
850
863
  userTags?: Array<{
851
864
  /**
@@ -860,6 +873,12 @@ type InstagramPlatformData = {
860
873
  * Y coordinate position from top edge (0.0 = top, 0.5 = center, 1.0 = bottom)
861
874
  */
862
875
  y: number;
876
+ /**
877
+ * Zero-based index of the carousel item to tag. Defaults to 0 (first image) if omitted.
878
+ * Only relevant for carousel posts. Tags targeting video items or out-of-range indices are ignored.
879
+ *
880
+ */
881
+ mediaIndex?: number;
863
882
  }>;
864
883
  /**
865
884
  * Custom name for the original audio in Reels. Replaces the default "Original Audio" label.
@@ -6260,7 +6279,7 @@ type UnlikeInboxCommentError = (unknown | {
6260
6279
  type SendPrivateReplyToCommentData = {
6261
6280
  body: {
6262
6281
  /**
6263
- * The Instagram social account ID
6282
+ * The social account ID (Instagram or Facebook)
6264
6283
  */
6265
6284
  accountId: string;
6266
6285
  /**
@@ -6274,7 +6293,7 @@ type SendPrivateReplyToCommentData = {
6274
6293
  */
6275
6294
  commentId: string;
6276
6295
  /**
6277
- * The Instagram media/post ID
6296
+ * The media/post ID (Instagram media ID or Facebook post ID)
6278
6297
  */
6279
6298
  postId: string;
6280
6299
  };
@@ -6289,7 +6308,7 @@ type SendPrivateReplyToCommentResponse = ({
6289
6308
  * The comment ID that was replied to
6290
6309
  */
6291
6310
  commentId?: string;
6292
- platform?: string;
6311
+ platform?: 'instagram' | 'facebook';
6293
6312
  });
6294
6313
  type SendPrivateReplyToCommentError = ({
6295
6314
  error?: string;
package/dist/index.d.ts CHANGED
@@ -742,6 +742,7 @@ type FoodMenuSection = {
742
742
  * - Call-to-action buttons drive user engagement
743
743
  * - Posts appear on your Google Business Profile and in Google Search/Maps
744
744
  * - Use locationId to post to multiple locations from the same account connection
745
+ * - Language is auto-detected from content; override with languageCode if needed
745
746
  *
746
747
  */
747
748
  type GoogleBusinessPlatformData = {
@@ -753,6 +754,14 @@ type GoogleBusinessPlatformData = {
753
754
  *
754
755
  */
755
756
  locationId?: string;
757
+ /**
758
+ * BCP 47 language code for the post content (e.g., "en", "de", "es", "fr").
759
+ * If omitted, the language is automatically detected from the post text.
760
+ * Setting this explicitly is recommended when auto-detection may not be accurate
761
+ * (e.g., very short posts, mixed-language content, or transliterated text).
762
+ *
763
+ */
764
+ languageCode?: string;
756
765
  /**
757
766
  * Optional call-to-action button displayed on the post
758
767
  */
@@ -801,7 +810,7 @@ type status = 'safe' | 'banned' | 'restricted' | 'unknown';
801
810
  * - Validation happens at post creation; invalid images are rejected immediately with helpful error messages.
802
811
  * - Carousels support up to 10 media items.
803
812
  * - Stories require media; no captions are published with Stories.
804
- * - User tags: coordinates range from 0.0 to 1.0 representing position from top-left corner. Tagged users receive notifications.
813
+ * - User tags: coordinates range from 0.0 to 1.0 representing position from top-left corner. For carousels, use `mediaIndex` to tag specific slides. Tagged users receive notifications.
805
814
  *
806
815
  * **Automatic Compression (similar to Bluesky):**
807
816
  * - All images (story, post, carousel, thumbnails) exceeding 8 MB are automatically compressed using quality reduction and resizing.
@@ -845,7 +854,11 @@ type InstagramPlatformData = {
845
854
  graduationStrategy?: 'MANUAL' | 'SS_PERFORMANCE';
846
855
  };
847
856
  /**
848
- * Tag Instagram users in photos by username and position coordinates. Only works for single image posts and the first image of carousel posts. Not supported for stories or videos.
857
+ * Tag Instagram users in photos by username and position coordinates. Not supported for stories or videos.
858
+ * For carousel posts, use the optional `mediaIndex` field to specify which slide each tag applies to.
859
+ * Tags without `mediaIndex` default to the first image (index 0) for backwards compatibility.
860
+ * Tags targeting video items are silently skipped (Instagram only supports tagging on images).
861
+ *
849
862
  */
850
863
  userTags?: Array<{
851
864
  /**
@@ -860,6 +873,12 @@ type InstagramPlatformData = {
860
873
  * Y coordinate position from top edge (0.0 = top, 0.5 = center, 1.0 = bottom)
861
874
  */
862
875
  y: number;
876
+ /**
877
+ * Zero-based index of the carousel item to tag. Defaults to 0 (first image) if omitted.
878
+ * Only relevant for carousel posts. Tags targeting video items or out-of-range indices are ignored.
879
+ *
880
+ */
881
+ mediaIndex?: number;
863
882
  }>;
864
883
  /**
865
884
  * Custom name for the original audio in Reels. Replaces the default "Original Audio" label.
@@ -6260,7 +6279,7 @@ type UnlikeInboxCommentError = (unknown | {
6260
6279
  type SendPrivateReplyToCommentData = {
6261
6280
  body: {
6262
6281
  /**
6263
- * The Instagram social account ID
6282
+ * The social account ID (Instagram or Facebook)
6264
6283
  */
6265
6284
  accountId: string;
6266
6285
  /**
@@ -6274,7 +6293,7 @@ type SendPrivateReplyToCommentData = {
6274
6293
  */
6275
6294
  commentId: string;
6276
6295
  /**
6277
- * The Instagram media/post ID
6296
+ * The media/post ID (Instagram media ID or Facebook post ID)
6278
6297
  */
6279
6298
  postId: string;
6280
6299
  };
@@ -6289,7 +6308,7 @@ type SendPrivateReplyToCommentResponse = ({
6289
6308
  * The comment ID that was replied to
6290
6309
  */
6291
6310
  commentId?: string;
6292
- platform?: string;
6311
+ platform?: 'instagram' | 'facebook';
6293
6312
  });
6294
6313
  type SendPrivateReplyToCommentError = ({
6295
6314
  error?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getlatedev/node",
3
- "version": "0.1.18",
3
+ "version": "0.1.20",
4
4
  "description": "The official Node.js library for the Late API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -2035,16 +2035,17 @@ export const unlikeInboxComment = <ThrowOnError extends boolean = false>(options
2035
2035
  * Send a private direct message to the author of a comment on your post.
2036
2036
  * This is useful for handling customer inquiries or sensitive matters privately.
2037
2037
  *
2038
- * **Supported platforms:** Instagram only
2038
+ * **Supported platforms:** Instagram, Facebook
2039
2039
  *
2040
2040
  * **Limitations:**
2041
- * - Instagram only allows ONE private reply per comment
2041
+ * - Only ONE private reply per comment (platform API restriction)
2042
2042
  * - Must be sent within 7 days of the comment being posted
2043
2043
  * - Only works for comments on posts owned by the connected account
2044
- * - Message goes to the user's Inbox (if they follow you) or Message Requests (if they don't)
2045
- * - Requires `instagram_business_manage_messages` permission (already included in Late's OAuth)
2044
+ * - Text only (no media attachments)
2045
+ * - Instagram: message goes to the user's Inbox (if they follow you) or Message Requests (if they don't). Requires `instagram_business_manage_messages` permission.
2046
+ * - Facebook: message opens a Messenger conversation with the commenter. Requires `pages_messaging` permission.
2046
2047
  *
2047
- * **Note:** This does not create a conversation thread until the user replies back.
2048
+ * **Note:** Both permissions are already included in Late's OAuth flow. This does not create a conversation thread until the user replies back.
2048
2049
  *
2049
2050
  */
2050
2051
  export const sendPrivateReplyToComment = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SendPrivateReplyToCommentData, ThrowOnError>) => {
@@ -371,6 +371,7 @@ export type FoodMenuSection = {
371
371
  * - Call-to-action buttons drive user engagement
372
372
  * - Posts appear on your Google Business Profile and in Google Search/Maps
373
373
  * - Use locationId to post to multiple locations from the same account connection
374
+ * - Language is auto-detected from content; override with languageCode if needed
374
375
  *
375
376
  */
376
377
  export type GoogleBusinessPlatformData = {
@@ -382,6 +383,14 @@ export type GoogleBusinessPlatformData = {
382
383
  *
383
384
  */
384
385
  locationId?: string;
386
+ /**
387
+ * BCP 47 language code for the post content (e.g., "en", "de", "es", "fr").
388
+ * If omitted, the language is automatically detected from the post text.
389
+ * Setting this explicitly is recommended when auto-detection may not be accurate
390
+ * (e.g., very short posts, mixed-language content, or transliterated text).
391
+ *
392
+ */
393
+ languageCode?: string;
385
394
  /**
386
395
  * Optional call-to-action button displayed on the post
387
396
  */
@@ -435,7 +444,7 @@ export type status = 'safe' | 'banned' | 'restricted' | 'unknown';
435
444
  * - Validation happens at post creation; invalid images are rejected immediately with helpful error messages.
436
445
  * - Carousels support up to 10 media items.
437
446
  * - Stories require media; no captions are published with Stories.
438
- * - User tags: coordinates range from 0.0 to 1.0 representing position from top-left corner. Tagged users receive notifications.
447
+ * - User tags: coordinates range from 0.0 to 1.0 representing position from top-left corner. For carousels, use `mediaIndex` to tag specific slides. Tagged users receive notifications.
439
448
  *
440
449
  * **Automatic Compression (similar to Bluesky):**
441
450
  * - All images (story, post, carousel, thumbnails) exceeding 8 MB are automatically compressed using quality reduction and resizing.
@@ -479,7 +488,11 @@ export type InstagramPlatformData = {
479
488
  graduationStrategy?: 'MANUAL' | 'SS_PERFORMANCE';
480
489
  };
481
490
  /**
482
- * Tag Instagram users in photos by username and position coordinates. Only works for single image posts and the first image of carousel posts. Not supported for stories or videos.
491
+ * Tag Instagram users in photos by username and position coordinates. Not supported for stories or videos.
492
+ * For carousel posts, use the optional `mediaIndex` field to specify which slide each tag applies to.
493
+ * Tags without `mediaIndex` default to the first image (index 0) for backwards compatibility.
494
+ * Tags targeting video items are silently skipped (Instagram only supports tagging on images).
495
+ *
483
496
  */
484
497
  userTags?: Array<{
485
498
  /**
@@ -494,6 +507,12 @@ export type InstagramPlatformData = {
494
507
  * Y coordinate position from top edge (0.0 = top, 0.5 = center, 1.0 = bottom)
495
508
  */
496
509
  y: number;
510
+ /**
511
+ * Zero-based index of the carousel item to tag. Defaults to 0 (first image) if omitted.
512
+ * Only relevant for carousel posts. Tags targeting video items or out-of-range indices are ignored.
513
+ *
514
+ */
515
+ mediaIndex?: number;
497
516
  }>;
498
517
  /**
499
518
  * Custom name for the original audio in Reels. Replaces the default "Original Audio" label.
@@ -6359,7 +6378,7 @@ export type UnlikeInboxCommentError = (unknown | {
6359
6378
  export type SendPrivateReplyToCommentData = {
6360
6379
  body: {
6361
6380
  /**
6362
- * The Instagram social account ID
6381
+ * The social account ID (Instagram or Facebook)
6363
6382
  */
6364
6383
  accountId: string;
6365
6384
  /**
@@ -6373,7 +6392,7 @@ export type SendPrivateReplyToCommentData = {
6373
6392
  */
6374
6393
  commentId: string;
6375
6394
  /**
6376
- * The Instagram media/post ID
6395
+ * The media/post ID (Instagram media ID or Facebook post ID)
6377
6396
  */
6378
6397
  postId: string;
6379
6398
  };
@@ -6389,7 +6408,7 @@ export type SendPrivateReplyToCommentResponse = ({
6389
6408
  * The comment ID that was replied to
6390
6409
  */
6391
6410
  commentId?: string;
6392
- platform?: string;
6411
+ platform?: 'instagram' | 'facebook';
6393
6412
  });
6394
6413
 
6395
6414
  export type SendPrivateReplyToCommentError = ({