@getlatedev/node 0.2.1352 → 0.2.1354

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.
@@ -2651,7 +2651,7 @@ export type ApiKey = {
2651
2651
  /**
2652
2652
  * Resource groups this key can NOT access (opt-out denylist). Absent or empty means legacy full access. A key with any group disabled is a restricted key (zrk_ prefix) and can never manage API keys, invites, or member identity. Each operation's group is published as x-resource-group. With 'messages' disabled, the key cannot read or send direct messages through any API surface, and it cannot create or edit a webhook subscription broader than itself: it cannot subscribe to, test-fire, redeliver, or read delivery logs for message events. Subscriptions created earlier, from the dashboard, or with a full-access key keep delivering whatever their own `disabledResourceGroups` allows, so restricting an existing integration end to end means restricting the subscription too. OAuth connector tokens (AI assistants and MCP clients) resolve against the same registry, but their groups are not settable yet: treat an authorized connector as full access.
2653
2653
  */
2654
- disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks')>;
2654
+ disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files')>;
2655
2655
  /**
2656
2656
  * The team member who created this key. For the team owner's listing this can be any team member; for a non-owner it is always themselves, since a non-owner only ever sees their own keys.
2657
2657
  */
@@ -3505,6 +3505,114 @@ export type BusinessCenter = {
3505
3505
  advertiserCount?: (number) | null;
3506
3506
  };
3507
3507
 
3508
+ export type BusyBlock = {
3509
+ start?: string;
3510
+ end?: string;
3511
+ };
3512
+
3513
+ export type Calendar = {
3514
+ id?: string;
3515
+ accountId?: string;
3516
+ provider?: 'google' | 'microsoft';
3517
+ name?: string;
3518
+ primary?: boolean;
3519
+ timezone?: (string) | null;
3520
+ color?: (string) | null;
3521
+ readOnly?: boolean;
3522
+ };
3523
+
3524
+ export type provider = 'google' | 'microsoft';
3525
+
3526
+ export type CalendarEvent = {
3527
+ id?: string;
3528
+ accountId?: string;
3529
+ provider?: 'google' | 'microsoft';
3530
+ calendarId?: string;
3531
+ title?: string;
3532
+ description?: (string) | null;
3533
+ location?: (string) | null;
3534
+ /**
3535
+ * ISO date-time with the rendered offset, or a date for all-day events.
3536
+ */
3537
+ start?: string;
3538
+ end?: string;
3539
+ allDay?: boolean;
3540
+ timezone?: (string) | null;
3541
+ participants?: Array<(EmailAddress & {
3542
+ status?: 'accepted' | 'declined' | 'tentative' | 'pending';
3543
+ comment?: (string) | null;
3544
+ })>;
3545
+ organizer?: (EmailAddress | null);
3546
+ recurrence?: Array<(string)> | null;
3547
+ reminders?: {
3548
+ useDefault?: boolean;
3549
+ overrides?: Array<{
3550
+ minutes?: number;
3551
+ }>;
3552
+ };
3553
+ conferencing?: {
3554
+ provider?: 'google_meet' | 'teams' | 'other';
3555
+ url?: string;
3556
+ } | null;
3557
+ busy?: boolean;
3558
+ visibility?: 'default' | 'public' | 'private';
3559
+ status?: 'confirmed' | 'tentative' | 'cancelled';
3560
+ icalUid?: (string) | null;
3561
+ masterEventId?: (string) | null;
3562
+ htmlLink?: (string) | null;
3563
+ readOnly?: boolean;
3564
+ metadata?: {
3565
+ [key: string]: (string);
3566
+ };
3567
+ createdAt?: (string) | null;
3568
+ updatedAt?: (string) | null;
3569
+ };
3570
+
3571
+ export type visibility = 'default' | 'public' | 'private';
3572
+
3573
+ export type status11 = 'confirmed' | 'tentative' | 'cancelled';
3574
+
3575
+ export type CalendarEventFields = {
3576
+ title?: string;
3577
+ /**
3578
+ * HTML.
3579
+ */
3580
+ description?: string;
3581
+ location?: string;
3582
+ /**
3583
+ * ISO date-time, or a date (`YYYY-MM-DD`) for all-day events.
3584
+ */
3585
+ start?: string;
3586
+ /**
3587
+ * Exclusive for all-day events.
3588
+ */
3589
+ end?: string;
3590
+ allDay?: boolean;
3591
+ /**
3592
+ * IANA zone the event is scheduled in. Default UTC.
3593
+ */
3594
+ timezone?: string;
3595
+ participants?: Array<EmailAddress>;
3596
+ /**
3597
+ * RRULE lines, e.g. `RRULE:FREQ=WEEKLY;BYDAY=MO,WE;COUNT=10`.
3598
+ */
3599
+ recurrence?: Array<(string)>;
3600
+ reminders?: {
3601
+ useDefault?: boolean;
3602
+ overrides?: Array<{
3603
+ minutes?: number;
3604
+ }>;
3605
+ };
3606
+ conferencing?: 'google_meet' | 'teams';
3607
+ busy?: boolean;
3608
+ visibility?: 'default' | 'public' | 'private';
3609
+ metadata?: {
3610
+ [key: string]: (string);
3611
+ };
3612
+ };
3613
+
3614
+ export type conferencing = 'google_meet' | 'teams';
3615
+
3508
3616
  /**
3509
3617
  * One call on a number you own, either channel. `channel` tells you which
3510
3618
  * lane it took: `whatsapp` (WhatsApp Business Calling) or `pstn` (a regular
@@ -3636,7 +3744,7 @@ export type channel = 'whatsapp' | 'pstn';
3636
3744
 
3637
3745
  export type direction2 = 'inbound' | 'outbound';
3638
3746
 
3639
- export type status11 = 'ringing' | 'answered' | 'ended' | 'failed';
3747
+ export type status12 = 'ringing' | 'answered' | 'ended' | 'failed';
3640
3748
 
3641
3749
  /**
3642
3750
  * Caller ID presented on the forwarded leg.
@@ -4026,7 +4134,7 @@ export type source = 'comment' | 'live_comment' | 'story_reply' | 'story_mention
4026
4134
  /**
4027
4135
  * DM outcome. 'pending' = the automation has a dmDelaySeconds and the response is queued but not sent yet. 'gated' = the follow-gate confirmation DM went out and we are waiting for the tap; it flips to 'sent' or 'skipped' when they tap. 'skipped' also covers repeatPolicy, cooldown and dedupeSameTextHours suppressions, with the reason in error.
4028
4136
  */
4029
- export type status12 = 'pending' | 'sent' | 'failed' | 'skipped' | 'gated';
4137
+ export type status13 = 'pending' | 'sent' | 'failed' | 'skipped' | 'gated';
4030
4138
 
4031
4139
  /**
4032
4140
  * How the audience rule resolved. Null on automations without one.
@@ -4320,7 +4428,7 @@ export type method = 'code' | 'automatic';
4320
4428
 
4321
4429
  export type type6 = 'percentage' | 'fixed_amount' | 'free_shipping' | 'buy_x_get_y' | 'app';
4322
4430
 
4323
- export type status13 = 'active' | 'scheduled' | 'expired';
4431
+ export type status14 = 'active' | 'scheduled' | 'expired';
4324
4432
 
4325
4433
  export type CommerceImage = {
4326
4434
  /**
@@ -4375,7 +4483,7 @@ export type CommerceMarket = {
4375
4483
  type?: string;
4376
4484
  };
4377
4485
 
4378
- export type status14 = 'active' | 'draft';
4486
+ export type status15 = 'active' | 'draft';
4379
4487
 
4380
4488
  export type CommerceMenu = {
4381
4489
  id?: string;
@@ -4890,7 +4998,7 @@ export type ConnectHandoff = {
4890
4998
  } | null;
4891
4999
  };
4892
5000
 
4893
- export type status15 = 'waiting' | 'opened' | 'connected' | 'failed' | 'expired';
5001
+ export type status16 = 'waiting' | 'opened' | 'connected' | 'failed' | 'expired';
4894
5002
 
4895
5003
  /**
4896
5004
  * Only with `handoff=true`: the link to show as a QR code.
@@ -5111,7 +5219,7 @@ export type ConversionDestination = {
5111
5219
  * For LinkedIn, `inactive` means the rule is soft-deleted (`enabled: false`).
5112
5220
  *
5113
5221
  */
5114
- export type status16 = 'active' | 'inactive';
5222
+ export type status17 = 'active' | 'inactive';
5115
5223
 
5116
5224
  /**
5117
5225
  * A single conversion event to relay to the ad platform. All PII fields
@@ -5354,6 +5462,14 @@ export type actionSource = 'web' | 'app' | 'offline' | 'crm' | 'phone_call' | 's
5354
5462
 
5355
5463
  export type channel3 = 'whatsapp' | 'messenger' | 'instagram_direct';
5356
5464
 
5465
+ export type CreateCalendarEventRequest = {
5466
+ accountId: string;
5467
+ /**
5468
+ * Defaults to the primary calendar.
5469
+ */
5470
+ calendarId?: string;
5471
+ } & CalendarEventFields;
5472
+
5357
5473
  export type CreatedGoogleAdAccount = {
5358
5474
  platform: 'google';
5359
5475
  /**
@@ -6248,7 +6364,7 @@ export type objective = 'OUTCOME_ENGAGEMENT' | 'OUTCOME_SALES' | 'OUTCOME_LEADS'
6248
6364
  * `adSetId`, the new ads themselves.
6249
6365
  *
6250
6366
  */
6251
- export type status17 = 'ACTIVE' | 'PAUSED';
6367
+ export type status18 = 'ACTIVE' | 'PAUSED';
6252
6368
 
6253
6369
  /**
6254
6370
  * Campaign-level status, same semantics as `POST /v1/ads/create`. Defaults
@@ -6305,7 +6421,7 @@ export type CtwaMultiResponse = {
6305
6421
  platformAdSetId: string;
6306
6422
  message: string;
6307
6423
  /**
6308
- * Present when Meta created the ad set differently from the request: a multi-destination ad set (`destinations` including whatsapp) that Meta kept without the requested `whatsappPhoneNumber` in its promoted_object, which an existing ad set cannot change (a WhatsApp-only ad set returns no such warning, because every ad routes conversations by the number on its WhatsApp button), or the ad set joined a CBO campaign (`existingCampaignId`) whose own bid strategy applies, so a different `bidStrategy` or a `roasAverageFloor` that strategy cannot take was not applied.
6424
+ * Present when Meta created the ad set differently from the request: a multi-destination ad set (`destinations` including whatsapp) that Meta kept without the requested `whatsappPhoneNumber` in its promoted_object, which an existing ad set cannot change (a WhatsApp-only ad set returns no such warning, because every ad routes conversations by the number on its WhatsApp button), or the ad set joined a CBO campaign (`existingCampaignId`) whose own bid strategy applies, so a different `bidStrategy` or a `roasAverageFloor` that strategy cannot take was not applied. Also present, as an entry starting with `activation_failed:`, when Meta refused the final switch to ACTIVE: nothing was deleted, and the entry names what was kept PAUSED and what was switched ACTIVE, and quotes Meta's error and the status calls that switch the PAUSED ones on later.
6309
6425
  */
6310
6426
  warnings?: Array<(string)>;
6311
6427
  };
@@ -6328,13 +6444,21 @@ export type CtwaSingleResponse = {
6328
6444
  };
6329
6445
  message: string;
6330
6446
  /**
6331
- * Present when Meta created the ad set differently from the request: a multi-destination ad set (`destinations` including whatsapp) that Meta kept without the requested `whatsappPhoneNumber` in its promoted_object, which an existing ad set cannot change (a WhatsApp-only ad set returns no such warning, because every ad routes conversations by the number on its WhatsApp button), or the ad set joined a CBO campaign (`existingCampaignId`) whose own bid strategy applies, so a different `bidStrategy` or a `roasAverageFloor` that strategy cannot take was not applied.
6447
+ * Present when Meta created the ad set differently from the request: a multi-destination ad set (`destinations` including whatsapp) that Meta kept without the requested `whatsappPhoneNumber` in its promoted_object, which an existing ad set cannot change (a WhatsApp-only ad set returns no such warning, because every ad routes conversations by the number on its WhatsApp button), or the ad set joined a CBO campaign (`existingCampaignId`) whose own bid strategy applies, so a different `bidStrategy` or a `roasAverageFloor` that strategy cannot take was not applied. Also present, as an entry starting with `activation_failed:`, when Meta refused the final switch to ACTIVE: nothing was deleted, and the entry names what was kept PAUSED and what was switched ACTIVE, and quotes Meta's error and the status calls that switch the PAUSED ones on later.
6332
6448
  */
6333
6449
  warnings?: Array<(string)>;
6334
6450
  };
6335
6451
 
6336
6452
  export type adType3 = 'single';
6337
6453
 
6454
+ export type CursorPagination = {
6455
+ hasMore?: boolean;
6456
+ /**
6457
+ * Opaque; pass it back as `cursor`.
6458
+ */
6459
+ nextCursor?: (string) | null;
6460
+ };
6461
+
6338
6462
  export type CustomConversion = {
6339
6463
  id?: string;
6340
6464
  name?: (string) | null;
@@ -6640,7 +6764,7 @@ export type privacy_level = 2;
6640
6764
  /**
6641
6765
  * 1=SCHEDULED, 2=ACTIVE, 3=COMPLETED, 4=CANCELED
6642
6766
  */
6643
- export type status18 = 1 | 2 | 3 | 4;
6767
+ export type status19 = 1 | 2 | 3 | 4;
6644
6768
 
6645
6769
  /**
6646
6770
  * 1=STAGE_INSTANCE, 2=VOICE, 3=EXTERNAL
@@ -6676,6 +6800,105 @@ export type DmButton = {
6676
6800
 
6677
6801
  export type type8 = 'url' | 'postback' | 'phone';
6678
6802
 
6803
+ export type EmailAddress = {
6804
+ email: string;
6805
+ name?: (string) | null;
6806
+ };
6807
+
6808
+ export type EmailAttachment = {
6809
+ id?: string;
6810
+ filename?: string;
6811
+ contentType?: string;
6812
+ size?: number;
6813
+ isInline?: boolean;
6814
+ contentId?: (string) | null;
6815
+ };
6816
+
6817
+ export type EmailFolder = {
6818
+ id?: string;
6819
+ accountId?: string;
6820
+ provider?: 'google' | 'microsoft';
6821
+ name?: string;
6822
+ wellKnown?: 'inbox' | 'sent' | 'drafts' | 'trash' | 'spam' | 'archive';
6823
+ unreadCount?: number;
6824
+ totalCount?: number;
6825
+ };
6826
+
6827
+ export type wellKnown = 'inbox' | 'sent' | 'drafts' | 'trash' | 'spam' | 'archive';
6828
+
6829
+ export type EmailListMeta = {
6830
+ /**
6831
+ * The filters the provider could not apply server-side, so they were applied to the fetched page (Microsoft: `bcc`, `anyEmail`, and every other filter when `searchQueryNative` is set).
6832
+ */
6833
+ filteredClientSide?: Array<(string)>;
6834
+ };
6835
+
6836
+ export type EmailMessage = {
6837
+ /**
6838
+ * The provider's message id.
6839
+ */
6840
+ id?: string;
6841
+ threadId?: string;
6842
+ accountId?: string;
6843
+ provider?: 'google' | 'microsoft';
6844
+ folders?: Array<(string)>;
6845
+ from?: (EmailAddress | null);
6846
+ to?: Array<EmailAddress>;
6847
+ cc?: Array<EmailAddress>;
6848
+ bcc?: Array<EmailAddress>;
6849
+ replyTo?: Array<EmailAddress>;
6850
+ subject?: string;
6851
+ snippet?: string;
6852
+ text?: (string) | null;
6853
+ html?: (string) | null;
6854
+ attachments?: Array<EmailAttachment>;
6855
+ /**
6856
+ * Only with `includeHeaders=true`.
6857
+ */
6858
+ headers?: {
6859
+ [key: string]: (string);
6860
+ };
6861
+ /**
6862
+ * MIME source, only with `raw=true`.
6863
+ */
6864
+ raw?: string;
6865
+ date?: string;
6866
+ unread?: boolean;
6867
+ starred?: boolean;
6868
+ metadata?: {
6869
+ [key: string]: (string);
6870
+ };
6871
+ };
6872
+
6873
+ export type EmailMessagePatch = {
6874
+ accountId: string;
6875
+ unread?: boolean;
6876
+ starred?: boolean;
6877
+ /**
6878
+ * Well-known folder name or folder id to move into.
6879
+ */
6880
+ folder?: string;
6881
+ };
6882
+
6883
+ export type EmailThread = {
6884
+ id?: string;
6885
+ accountId?: string;
6886
+ provider?: 'google' | 'microsoft';
6887
+ subject?: string;
6888
+ snippet?: string;
6889
+ participants?: Array<EmailAddress>;
6890
+ messageIds?: Array<(string)>;
6891
+ draftIds?: Array<(string)>;
6892
+ folders?: Array<(string)>;
6893
+ hasAttachments?: boolean;
6894
+ hasDrafts?: boolean;
6895
+ unread?: boolean;
6896
+ starred?: boolean;
6897
+ earliestMessageAt?: (string) | null;
6898
+ latestMessageReceivedAt?: (string) | null;
6899
+ latestMessageSentAt?: (string) | null;
6900
+ };
6901
+
6679
6902
  /**
6680
6903
  * Canonical error envelope. `error` is the human-readable message; `type`,
6681
6904
  * `code`, `param`, `platform`, and `platformError` are top-level siblings
@@ -6777,7 +7000,7 @@ export type ErrorResponse = {
6777
7000
  */
6778
7001
  details?: {
6779
7002
  /**
6780
- * Meta ad create failures only. The step that failed: `media` (image/video download or upload), `campaign`, `adset`, `creative`, `ad` (the ad POST itself, where Meta's code 31 / 3858385 hold and 100 / 1359188 payment rejections land), `activation` (switching the created objects on), or `other` (a read or check before any write).
7003
+ * Meta ad create failures only. The step that failed: `media` (image/video download or upload), `campaign`, `adset`, `creative`, `ad` (the ad POST itself, where Meta's code 31 / 3858385 hold and 100 / 1359188 payment rejections land), `activation` (switching the created objects on; no longer returned, since a refused switch to ACTIVE now answers 201 with an `activation_failed:` warning and the objects kept PAUSED), or `other` (a read or check before any write).
6781
7004
  */
6782
7005
  stage?: 'media' | 'campaign' | 'adset' | 'creative' | 'ad' | 'activation' | 'other';
6783
7006
  /**
@@ -6830,7 +7053,7 @@ export type ErrorResponse = {
6830
7053
  export type type9 = 'invalid_request_error' | 'authentication_error' | 'permission_error' | 'not_found' | 'rate_limit_error' | 'platform_error' | 'api_error';
6831
7054
 
6832
7055
  /**
6833
- * Meta ad create failures only. The step that failed: `media` (image/video download or upload), `campaign`, `adset`, `creative`, `ad` (the ad POST itself, where Meta's code 31 / 3858385 hold and 100 / 1359188 payment rejections land), `activation` (switching the created objects on), or `other` (a read or check before any write).
7056
+ * Meta ad create failures only. The step that failed: `media` (image/video download or upload), `campaign`, `adset`, `creative`, `ad` (the ad POST itself, where Meta's code 31 / 3858385 hold and 100 / 1359188 payment rejections land), `activation` (switching the created objects on; no longer returned, since a refused switch to ACTIVE now answers 201 with an `activation_failed:` warning and the objects kept PAUSED), or `other` (a read or check before any write).
6834
7057
  */
6835
7058
  export type stage = 'media' | 'campaign' | 'adset' | 'creative' | 'ad' | 'activation' | 'other';
6836
7059
 
@@ -7319,7 +7542,63 @@ export type FeedbackReceipt = {
7319
7542
  duplicate?: boolean;
7320
7543
  };
7321
7544
 
7322
- export type status19 = 'received';
7545
+ export type status20 = 'received';
7546
+
7547
+ /**
7548
+ * A file or folder in a connected Google Drive or OneDrive. Ids are the provider's own.
7549
+ */
7550
+ export type FileItem = {
7551
+ id: string;
7552
+ accountId: string;
7553
+ provider: 'google' | 'microsoft';
7554
+ name: string;
7555
+ kind: 'file' | 'folder';
7556
+ mimeType: (string) | null;
7557
+ /**
7558
+ * Bytes; null for folders and Google editors files.
7559
+ */
7560
+ size: (number) | null;
7561
+ parentId: (string) | null;
7562
+ /**
7563
+ * The provider's own link to open the item.
7564
+ */
7565
+ webUrl: (string) | null;
7566
+ /**
7567
+ * False for folders and for Drive files whose owner disabled downloading.
7568
+ */
7569
+ downloadable: boolean;
7570
+ /**
7571
+ * Google Docs, Slides and Drawings download as PDF/PNG and Sheets as XLSX; this is the type the download carries.
7572
+ */
7573
+ exportMimeType?: (string) | null;
7574
+ createdAt: (string) | null;
7575
+ modifiedAt: (string) | null;
7576
+ trashed: boolean;
7577
+ };
7578
+
7579
+ export type kind2 = 'file' | 'folder';
7580
+
7581
+ export type FilePickerSession = {
7582
+ /**
7583
+ * Public session id, echoed as `pickerSessionId` on the redirect and as `picker.sessionId` on the webhook.
7584
+ */
7585
+ id: string;
7586
+ /**
7587
+ * The hosted picker page. Open it in the end user's browser (redirect or new tab, not an iframe). It is a credential: single-use and valid until `expiresAt`.
7588
+ */
7589
+ url: string;
7590
+ /**
7591
+ * 30 minutes after creation.
7592
+ */
7593
+ expiresAt: string;
7594
+ };
7595
+
7596
+ export type FileShareLink = {
7597
+ url: string;
7598
+ scope: 'anyone_with_link';
7599
+ };
7600
+
7601
+ export type scope2 = 'anyone_with_link';
7323
7602
 
7324
7603
  export type FollowerStatsResponse = {
7325
7604
  accounts?: Array<AccountWithFollowerStats>;
@@ -7448,7 +7727,7 @@ export type GoogleAdLabel = {
7448
7727
  description?: (string) | null;
7449
7728
  };
7450
7729
 
7451
- export type status20 = 'ENABLED' | 'REMOVED' | 'UNKNOWN';
7730
+ export type status21 = 'ENABLED' | 'REMOVED' | 'UNKNOWN';
7452
7731
 
7453
7732
  /**
7454
7733
  * At least one id across the four target lists. Up to 1000 ids per list.
@@ -7551,7 +7830,7 @@ export type GoogleAdsManagerLink = {
7551
7830
  /**
7552
7831
  * Status the link has after this call.
7553
7832
  */
7554
- export type status21 = 'PENDING' | 'ACTIVE' | 'REFUSED' | 'CANCELED' | 'INACTIVE';
7833
+ export type status22 = 'PENDING' | 'ACTIVE' | 'REFUSED' | 'CANCELED' | 'INACTIVE';
7555
7834
 
7556
7835
  export type GoogleAdsUserAccessInvitation = {
7557
7836
  invitationId?: string;
@@ -7566,7 +7845,7 @@ export type GoogleAdsUserAccessInvitation = {
7566
7845
 
7567
7846
  export type accessRole = 'ADMIN' | 'STANDARD' | 'READ_ONLY' | 'EMAIL_ONLY' | 'UNKNOWN';
7568
7847
 
7569
- export type status22 = 'PENDING' | 'DECLINED' | 'EXPIRED' | 'UNKNOWN';
7848
+ export type status23 = 'PENDING' | 'DECLINED' | 'EXPIRED' | 'UNKNOWN';
7570
7849
 
7571
7850
  export type GoogleAdsUserAccessInvitationResult = {
7572
7851
  customerId?: string;
@@ -7590,7 +7869,7 @@ export type GoogleAdsUserAccessInvitationResult = {
7590
7869
  /**
7591
7870
  * PENDING once the email is sent; PENDING_APPROVAL while Google waits for a second admin's multi-party approval.
7592
7871
  */
7593
- export type status23 = 'PENDING' | 'PENDING_APPROVAL';
7872
+ export type status24 = 'PENDING' | 'PENDING_APPROVAL';
7594
7873
 
7595
7874
  export type GoogleAdsUserInvitationApproval = {
7596
7875
  /**
@@ -8440,7 +8719,7 @@ export type GoogleRecommendationResult = {
8440
8719
  error?: string;
8441
8720
  };
8442
8721
 
8443
- export type status24 = 'applied' | 'dismissed' | 'failed';
8722
+ export type status25 = 'applied' | 'dismissed' | 'failed';
8444
8723
 
8445
8724
  export type GoogleRsaDescription = {
8446
8725
  text: string;
@@ -8575,7 +8854,7 @@ export type ImessageSandboxContact = {
8575
8854
  createdAt?: string;
8576
8855
  };
8577
8856
 
8578
- export type status25 = 'pending' | 'active';
8857
+ export type status26 = 'pending' | 'active';
8579
8858
 
8580
8859
  /**
8581
8860
  * An iMessage sender registered as an account on a profile.
@@ -8643,14 +8922,14 @@ export type ImessageSenderLifecycle = {
8643
8922
  createdAt?: string;
8644
8923
  };
8645
8924
 
8646
- export type kind2 = 'phone' | 'email';
8925
+ export type kind3 = 'phone' | 'email';
8647
8926
 
8648
8927
  export type region = 'US' | 'GB';
8649
8928
 
8650
8929
  /**
8651
8930
  * `awaiting_payment`: the first-month charge is still being confirmed by the card; the number is ordered automatically once it is paid (usually under 5 minutes), or the order fails with `failureReason` when the card declines or nothing confirms within 30 minutes.
8652
8931
  */
8653
- export type status26 = 'ordering' | 'awaiting_payment' | 'activating' | 'active' | 'suspended' | 'canceled' | 'failed';
8932
+ export type status27 = 'ordering' | 'awaiting_payment' | 'activating' | 'active' | 'suspended' | 'canceled' | 'failed';
8654
8933
 
8655
8934
  /**
8656
8935
  * Click attribution for a conversation that started from a Meta ad or
@@ -8853,7 +9132,7 @@ export type InboxWebhookConversation = {
8853
9132
  contactId?: string;
8854
9133
  };
8855
9134
 
8856
- export type status27 = 'active' | 'archived';
9135
+ export type status28 = 'active' | 'archived';
8857
9136
 
8858
9137
  /**
8859
9138
  * The conversation object included in conversation lifecycle webhook payloads (conversation.started, conversation.control_changed).
@@ -9570,7 +9849,7 @@ export type InstagramVideoFallback = {
9570
9849
  };
9571
9850
  };
9572
9851
 
9573
- export type kind3 = 'instagram_video_reuploaded' | 'instagram_video_rehosted_copy';
9852
+ export type kind4 = 'instagram_video_reuploaded' | 'instagram_video_rehosted_copy';
9574
9853
 
9575
9854
  /**
9576
9855
  * A Google Search keyword: a bare string (BROAD match), or an object naming the match type.
@@ -10131,11 +10410,22 @@ export type MediaContentType = 'image/jpeg' | 'image/jpg' | 'image/png' | 'image
10131
10410
  * Media referenced in posts. URLs must be publicly reachable over HTTPS. Use POST /v1/media/presign for uploads up to 5GB. Zernio auto-compresses images and videos that exceed platform limits (videos over 200 MB may not be compressed).
10132
10411
  */
10133
10412
  export type MediaItem = {
10413
+ /**
10414
+ * Optional when the item names a connected file (`fileId`): inferred from the file's MIME type.
10415
+ */
10134
10416
  type?: 'image' | 'video' | 'gif' | 'document';
10135
10417
  /**
10136
- * A media item with a null, missing or empty url is dropped.
10418
+ * A media item with a null, missing or empty url is dropped, unless it names a connected file with `fileId` + `accountId`.
10137
10419
  */
10138
10420
  url?: string;
10421
+ /**
10422
+ * A file of a connected Google Drive or OneDrive account (see the Files endpoints). The file is copied into Zernio media storage when the post is created and the item is stored as a plain `url`; a folder, an undownloadable file or an unknown id fails the request with a 4xx naming `mediaItems[i].fileId`. Requires `accountId`.
10423
+ */
10424
+ fileId?: string;
10425
+ /**
10426
+ * The connected Google or Microsoft account the `fileId` belongs to (must have the `files` area). Required with `fileId`.
10427
+ */
10428
+ accountId?: string;
10139
10429
  /**
10140
10430
  * Optional title for the media item. Used as the document title for LinkedIn PDF/carousel posts. If omitted, falls back to the post title, then the filename.
10141
10431
  */
@@ -10171,6 +10461,9 @@ export type MediaItem = {
10171
10461
  tiktokProcessed?: boolean;
10172
10462
  };
10173
10463
 
10464
+ /**
10465
+ * Optional when the item names a connected file (`fileId`): inferred from the file's MIME type.
10466
+ */
10174
10467
  export type type13 = 'image' | 'video' | 'gif' | 'document';
10175
10468
 
10176
10469
  export type MediaSubtitle = {
@@ -10412,7 +10705,7 @@ export type availability = 'in stock' | 'out of stock' | 'preorder' | 'available
10412
10705
 
10413
10706
  export type condition2 = 'new' | 'refurbished' | 'used';
10414
10707
 
10415
- export type visibility = 'published' | 'staging';
10708
+ export type visibility2 = 'published' | 'staging';
10416
10709
 
10417
10710
  export type gender2 = 'female' | 'male' | 'unisex';
10418
10711
 
@@ -10774,6 +11067,20 @@ export type MoneyAmount = {
10774
11067
  currencyCode: string;
10775
11068
  };
10776
11069
 
11070
+ export type OpenHours = Array<{
11071
+ /**
11072
+ * 0 = Sunday.
11073
+ */
11074
+ days: Array<(number)>;
11075
+ timezone: string;
11076
+ start: string;
11077
+ end: string;
11078
+ /**
11079
+ * Dates to exclude.
11080
+ */
11081
+ exdates?: Array<(string)>;
11082
+ }>;
11083
+
10777
11084
  /**
10778
11085
  * A number you bought or ported. Null fields are omitted, except `socialAccountId` and `ownerAccountId`. Credentials stored for the number (such as the SIP digest password) are never returned; `sipAuthUsername` is the only SIP credential field exposed.
10779
11086
  */
@@ -10949,7 +11256,7 @@ export type OwnedPhoneNumber = {
10949
11256
  }>;
10950
11257
  };
10951
11258
 
10952
- export type status28 = 'pending_payment' | 'pending_regulatory' | 'regulatory_declined' | 'provisioning' | 'verifying' | 'active' | 'suspended' | 'releasing' | 'released';
11259
+ export type status29 = 'pending_payment' | 'pending_regulatory' | 'regulatory_declined' | 'provisioning' | 'verifying' | 'active' | 'suspended' | 'releasing' | 'released';
10953
11260
 
10954
11261
  export type metaVerificationStatus = 'pending' | 'code_requested' | 'verified' | 'expired';
10955
11262
 
@@ -10989,6 +11296,11 @@ export type ParameterCatalogProductId = string;
10989
11296
  */
10990
11297
  export type ParameterCatalogTokenAccountId = string;
10991
11298
 
11299
+ /**
11300
+ * The connected Google or Microsoft account.
11301
+ */
11302
+ export type ParameterEmailAccountId = string;
11303
+
10992
11304
  /**
10993
11305
  * Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409. A request cut off mid-handler (for example by a function timeout) can leave its key in progress, answering 409 until the key expires after 24 hours.
10994
11306
  */
@@ -11111,7 +11423,7 @@ export type PlatformAnalytics = {
11111
11423
  isOwner?: (boolean) | null;
11112
11424
  };
11113
11425
 
11114
- export type status29 = 'published' | 'failed';
11426
+ export type status30 = 'published' | 'failed';
11115
11427
 
11116
11428
  /**
11117
11429
  * Sync state of analytics for this platform
@@ -11314,9 +11626,9 @@ export type Post = {
11314
11626
  /**
11315
11627
  * `cancelled` is set by POST /v1/posts/{postId}/unpublish once every platform entry has been removed from its platform (a post with published entries left becomes `partial`); cancelled posts can be edited and rescheduled like drafts. `pending_approval` (set by `requiresApproval: true`) never publishes until POST /v1/posts/{postId}/review approves it.
11316
11628
  */
11317
- export type status30 = 'draft' | 'pending_approval' | 'scheduled' | 'publishing' | 'published' | 'partial' | 'failed' | 'cancelled';
11629
+ export type status31 = 'draft' | 'pending_approval' | 'scheduled' | 'publishing' | 'published' | 'partial' | 'failed' | 'cancelled';
11318
11630
 
11319
- export type visibility2 = 'public' | 'private' | 'unlisted';
11631
+ export type visibility3 = 'public' | 'private' | 'unlisted';
11320
11632
 
11321
11633
  export type PostAnalytics = {
11322
11634
  impressions?: number;
@@ -11551,7 +11863,7 @@ export type Product = {
11551
11863
  publishedAt?: (string) | null;
11552
11864
  };
11553
11865
 
11554
- export type status31 = 'active' | 'draft' | 'archived';
11866
+ export type status32 = 'active' | 'draft' | 'archived';
11555
11867
 
11556
11868
  export type ProductImage = {
11557
11869
  url?: string;
@@ -11770,7 +12082,7 @@ export type RcsAgent = {
11770
12082
  createdAt?: string;
11771
12083
  };
11772
12084
 
11773
- export type status32 = 'requested' | 'changes_requested' | 'brand_vetting' | 'agent_review' | 'testing' | 'launch_review' | 'launching' | 'live' | 'rejected' | 'deactivated';
12085
+ export type status33 = 'requested' | 'changes_requested' | 'brand_vetting' | 'agent_review' | 'testing' | 'launch_review' | 'launching' | 'live' | 'rejected' | 'deactivated';
11774
12086
 
11775
12087
  export type useCase = 'MULTI_USE' | 'PROMOTIONAL' | 'TRANSACTIONAL' | 'OTP';
11776
12088
 
@@ -11822,7 +12134,7 @@ export type RcsBrand = RcsBrandInput & {
11822
12134
  /**
11823
12135
  * draft = not filed yet (still editable).
11824
12136
  */
11825
- export type status33 = 'draft' | 'vetting' | 'verified' | 'rejected';
12137
+ export type status34 = 'draft' | 'vetting' | 'verified' | 'rejected';
11826
12138
 
11827
12139
  export type RcsBrandInput = {
11828
12140
  displayName: string;
@@ -11907,9 +12219,9 @@ export type RcsCarrierApproval = {
11907
12219
  rejectedReason?: (string) | null;
11908
12220
  };
11909
12221
 
11910
- export type scope2 = 'carrier' | 'hub' | 'bot';
12222
+ export type scope3 = 'carrier' | 'hub' | 'bot';
11911
12223
 
11912
- export type status34 = 'PENDING' | 'SUBMITTED' | 'APPROVED' | 'REJECTED';
12224
+ export type status35 = 'PENDING' | 'SUBMITTED' | 'APPROVED' | 'REJECTED';
11913
12225
 
11914
12226
  /**
11915
12227
  * Message content. `suggestions` (max 11) render as chips under the message.
@@ -12404,6 +12716,62 @@ export type RfPrediction = {
12404
12716
  expiresAt?: (string) | null;
12405
12717
  };
12406
12718
 
12719
+ export type SendEmailRequest = {
12720
+ accountId: string;
12721
+ to: Array<EmailAddress>;
12722
+ cc?: Array<EmailAddress>;
12723
+ bcc?: Array<EmailAddress>;
12724
+ replyTo?: Array<EmailAddress>;
12725
+ fromName?: string;
12726
+ subject: string;
12727
+ /**
12728
+ * Plain-text body. One of `text` or `html` is required.
12729
+ */
12730
+ text?: string;
12731
+ html?: string;
12732
+ /**
12733
+ * 25 MB in total; 3 MB per attachment on Microsoft.
12734
+ */
12735
+ attachments?: Array<{
12736
+ filename: string;
12737
+ contentType: string;
12738
+ /**
12739
+ * Fetched at send time. Exactly one of `url` or `base64`.
12740
+ */
12741
+ url?: string;
12742
+ base64?: string;
12743
+ /**
12744
+ * Makes the attachment inline (`cid:` reference in the html).
12745
+ */
12746
+ contentId?: string;
12747
+ }>;
12748
+ /**
12749
+ * Custom `X-` headers only. `List-Unsubscribe` is dropped on Microsoft and reported in `metadata.droppedHeaders`.
12750
+ */
12751
+ headers?: {
12752
+ [key: string]: (string);
12753
+ };
12754
+ metadata?: {
12755
+ [key: string]: (string);
12756
+ };
12757
+ /**
12758
+ * Reserved; currently rejected.
12759
+ */
12760
+ scheduledFor?: string;
12761
+ /**
12762
+ * Reserved; currently rejected.
12763
+ */
12764
+ holdAsDraft?: boolean;
12765
+ /**
12766
+ * Not available; must be false.
12767
+ */
12768
+ trackOpens?: boolean;
12769
+ /**
12770
+ * Not available; must be false.
12771
+ */
12772
+ trackLinks?: boolean;
12773
+ };
12774
+
12407
12775
  /**
12408
12776
  * An ad account a tracking tag is shared with (Meta `shared_accounts` edge).
12409
12777
  */
@@ -12489,7 +12857,7 @@ export type contentType3 = 'story' | 'saved_story' | 'spotlight';
12489
12857
 
12490
12858
  export type SocialAccount = {
12491
12859
  _id: string;
12492
- platform: 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'wix' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'redditads' | 'sms' | 'phone' | 'rcs' | 'whopads' | 'hubspot' | 'webflow' | 'googleanalytics';
12860
+ platform: 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'wix' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'redditads' | 'sms' | 'phone' | 'rcs' | 'whopads' | 'google' | 'microsoft' | 'hubspot' | 'webflow' | 'googleanalytics';
12493
12861
  profileId: (string | Profile);
12494
12862
  username?: string;
12495
12863
  displayName?: string;
@@ -12599,7 +12967,7 @@ export type SocialAccount = {
12599
12967
  };
12600
12968
  };
12601
12969
 
12602
- export type platform13 = 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'wix' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'redditads' | 'sms' | 'phone' | 'rcs' | 'whopads' | 'hubspot' | 'webflow' | 'googleanalytics';
12970
+ export type platform13 = 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'wix' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'redditads' | 'sms' | 'phone' | 'rcs' | 'whopads' | 'google' | 'microsoft' | 'hubspot' | 'webflow' | 'googleanalytics';
12603
12971
 
12604
12972
  /**
12605
12973
  * TikTok accounts only. The account type TikTok reported when the account was connected. `personal` accounts cannot use TikTok direct messages through the API (TikTok limits Business Messaging to Business Accounts): skip the inbox for them and tell the user to switch to a Business Account in the TikTok app, then reconnect. `business` is the prerequisite, not a guarantee; messaging also needs the messaging scopes granted and TikTok's regional availability. `unknown` on accounts connected before this was captured or whose grant left out the account-type scope.
@@ -12741,7 +13109,7 @@ export type SupportRun = {
12741
13109
  /**
12742
13110
  * queued and running are in progress. needs_human means the assistant handed the question to a person instead of answering; when `supportTicket` is set, a Zernio teammate has been notified and will follow up by email.
12743
13111
  */
12744
- export type status35 = 'queued' | 'running' | 'completed' | 'needs_human' | 'failed';
13112
+ export type status36 = 'queued' | 'running' | 'completed' | 'needs_human' | 'failed';
12745
13113
 
12746
13114
  /**
12747
13115
  * Why the run stopped. Null while it is in progress.
@@ -13461,7 +13829,7 @@ export type platform14 = 'metaads' | 'openaiads' | 'tiktokads' | 'googleads' | '
13461
13829
  /**
13462
13830
  * Platform-native flavor of the tag (Meta: `pixel`).
13463
13831
  */
13464
- export type kind4 = 'pixel' | 'tag' | 'insight_tag';
13832
+ export type kind5 = 'pixel' | 'tag' | 'insight_tag';
13465
13833
 
13466
13834
  /**
13467
13835
  * One health check the platform runs on a tracking tag.
@@ -13708,7 +14076,7 @@ export type UploadTokenResponse = {
13708
14076
  status?: 'pending' | 'completed' | 'expired';
13709
14077
  };
13710
14078
 
13711
- export type status36 = 'pending' | 'completed' | 'expired';
14079
+ export type status37 = 'pending' | 'completed' | 'expired';
13712
14080
 
13713
14081
  export type UploadTokenStatusResponse = {
13714
14082
  token?: string;
@@ -14219,7 +14587,7 @@ export type Verification = {
14219
14587
  resend?: boolean;
14220
14588
  };
14221
14589
 
14222
- export type status37 = 'pending' | 'approved' | 'expired' | 'max_attempts_reached' | 'canceled' | 'delivery_failed';
14590
+ export type status38 = 'pending' | 'approved' | 'expired' | 'max_attempts_reached' | 'canceled' | 'delivery_failed';
14223
14591
 
14224
14592
  export type channel5 = 'sms' | 'whatsapp';
14225
14593
 
@@ -14251,7 +14619,7 @@ export type Webhook = {
14251
14619
  /**
14252
14620
  * Events subscribed to
14253
14621
  */
14254
- events?: Array<('post.scheduled' | 'post.published' | 'post.failed' | 'post.partial' | 'post.cancelled' | 'post.recycled' | 'post.platform.published' | 'post.platform.failed' | 'post.platform.deleted' | 'post.tiktok.url_resolved' | 'post.external.created' | 'post.external.updated' | 'post.external.deleted' | 'account.connected' | 'account.disconnected' | 'account.ads.initial_sync_completed' | 'account.ads.sync_failed' | 'account.ads.sync_recovered' | 'analytics.synced' | 'message.received' | 'conversation.started' | 'conversation.control_changed' | 'call.received' | 'call.ended' | 'call.failed' | 'call.permission_request' | 'message.sent' | 'message.edited' | 'message.deleted' | 'message.delivered' | 'message.read' | 'message.played' | 'message.failed' | 'reaction.received' | 'referral.received' | 'comment.received' | 'review.new' | 'review.updated' | 'lead.received' | 'ad.status_changed' | 'ad.review.approved' | 'ad.review.rejected' | 'ad.delivery_issue' | 'campaign.budget.depleted' | 'ad_account.status_changed' | 'ad.video.processed' | 'ad_rule.triggered' | 'whatsapp.template.status_updated' | 'whatsapp.template.category_updated' | 'whatsapp.account.name_status_updated' | 'whatsapp.account.quality_updated' | 'whatsapp.account.status_updated' | 'whatsapp.account.alert_received' | 'whatsapp.contact.identity_changed' | 'whatsapp.automatic_event' | 'whatsapp.number.activated' | 'whatsapp.number.declined' | 'whatsapp.number.action_required' | 'whatsapp.number.verification_required' | 'whatsapp.number.suspended' | 'whatsapp.number.reactivated' | 'whatsapp.number.released' | 'whatsapp.number.kyc_submitted' | 'phone_number.stock_available' | 'verification.approved' | 'verification.failed' | 'api.changelog.published' | 'sms.registration.action_required' | 'sms.registration.status_updated' | 'branded_calling.identity.status_updated' | 'branded_calling.identity.action_required' | 'branded_calling.number.status_updated' | 'rcs.agent.status_updated' | 'commerce.product.created' | 'commerce.product.updated' | 'commerce.product.deleted' | 'commerce.order.created' | 'commerce.order.updated' | 'commerce.order.refunded' | 'contact.tag_added' | 'contact.tag_removed' | 'contact.field_changed' | 'sequence.enrolled' | 'sequence.exited' | 'workflow.run.started' | 'workflow.run.completed' | 'workflow.run.failed' | 'support.run.completed' | 'support.run.failed')>;
14622
+ events?: Array<('post.scheduled' | 'post.published' | 'post.failed' | 'post.partial' | 'post.cancelled' | 'post.recycled' | 'post.platform.published' | 'post.platform.failed' | 'post.platform.deleted' | 'post.tiktok.url_resolved' | 'post.external.created' | 'post.external.updated' | 'post.external.deleted' | 'account.connected' | 'account.disconnected' | 'account.ads.initial_sync_completed' | 'account.ads.sync_failed' | 'account.ads.sync_recovered' | 'analytics.synced' | 'message.received' | 'conversation.started' | 'conversation.control_changed' | 'call.received' | 'call.ended' | 'call.failed' | 'call.permission_request' | 'message.sent' | 'message.edited' | 'message.deleted' | 'message.delivered' | 'message.read' | 'message.played' | 'message.failed' | 'reaction.received' | 'referral.received' | 'comment.received' | 'review.new' | 'review.updated' | 'lead.received' | 'ad.status_changed' | 'ad.review.approved' | 'ad.review.rejected' | 'ad.delivery_issue' | 'campaign.budget.depleted' | 'ad_account.status_changed' | 'ad.video.processed' | 'ad_rule.triggered' | 'whatsapp.template.status_updated' | 'whatsapp.template.category_updated' | 'whatsapp.account.name_status_updated' | 'whatsapp.account.quality_updated' | 'whatsapp.account.status_updated' | 'whatsapp.account.alert_received' | 'whatsapp.contact.identity_changed' | 'whatsapp.automatic_event' | 'whatsapp.number.activated' | 'whatsapp.number.declined' | 'whatsapp.number.action_required' | 'whatsapp.number.verification_required' | 'whatsapp.number.suspended' | 'whatsapp.number.reactivated' | 'whatsapp.number.released' | 'whatsapp.number.kyc_submitted' | 'phone_number.stock_available' | 'verification.approved' | 'verification.failed' | 'api.changelog.published' | 'sms.registration.action_required' | 'sms.registration.status_updated' | 'branded_calling.identity.status_updated' | 'branded_calling.identity.action_required' | 'branded_calling.number.status_updated' | 'rcs.agent.status_updated' | 'commerce.product.created' | 'commerce.product.updated' | 'commerce.product.deleted' | 'commerce.order.created' | 'commerce.order.updated' | 'commerce.order.refunded' | 'contact.tag_added' | 'contact.tag_removed' | 'contact.field_changed' | 'sequence.enrolled' | 'sequence.exited' | 'workflow.run.started' | 'workflow.run.completed' | 'workflow.run.failed' | 'support.run.completed' | 'support.run.failed' | 'account.rate_limited' | 'calendar.event.created' | 'calendar.event.updated' | 'calendar.event.deleted' | 'file.created' | 'file.updated' | 'file.deleted' | 'file.picked' | 'contact.updated' | 'contact.deleted')>;
14255
14623
  /**
14256
14624
  * Whether webhook delivery is enabled
14257
14625
  */
@@ -14273,7 +14641,7 @@ export type Webhook = {
14273
14641
  /**
14274
14642
  * Resource groups this subscription does not receive (opt-out denylist, same vocabulary and same semantics as the field on API keys). Absent or empty means the subscription receives every event listed in `events`, which is how every subscription created before this field existed behaves. An event whose group is listed here is dropped before delivery even when it is still present in `events`, and the same check runs on every replay path (test fire, redelivery, dead-letter requeue). Editing the denylist applies to every event emitted afterwards; events already queued when the edit landed can still be delivered for up to five minutes after they were enqueued.
14275
14643
  */
14276
- disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks')>;
14644
+ disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files')>;
14277
14645
  /**
14278
14646
  * Profiles this subscription receives events for (allowlist). Absent or empty means every profile, which is how every subscription created before this field existed behaves. A scoped subscription is only sent events attributable to a listed profile. An aggregate `post.*` event is attributed to the profile of every account the post targets, so a post spanning two scoped endpoints' profiles reaches both. Events with no profile behind them (`verification.*`, `phone_number.*`, a legacy post whose accounts were deleted) are not delivered to it. Applied when the event is emitted: a redelivery replays a delivery already made to this endpoint, and a test fire ignores the list.
14279
14647
  */
@@ -14397,7 +14765,7 @@ export type WebhookLog = {
14397
14765
  /**
14398
14766
  * Delivery outcome
14399
14767
  */
14400
- export type status38 = 'success' | 'failed';
14768
+ export type status39 = 'success' | 'failed';
14401
14769
 
14402
14770
  /**
14403
14771
  * Webhook payload for `account.ads.initial_sync_completed` events.
@@ -14514,7 +14882,7 @@ export type event = 'account.ads.initial_sync_completed';
14514
14882
  /**
14515
14883
  * Overall outcome of the initial sync.
14516
14884
  */
14517
- export type status39 = 'success' | 'failure';
14885
+ export type status40 = 'success' | 'failure';
14518
14886
 
14519
14887
  /**
14520
14888
  * Stable category for UX branching. New values may be added; existing ones are
@@ -14704,6 +15072,34 @@ export type event5 = 'account.disconnected';
14704
15072
  */
14705
15073
  export type disconnectionType = 'intentional' | 'unintentional';
14706
15074
 
15075
+ /**
15076
+ * Webhook payload for account.rate_limited: a mailbox entered a sending cooldown.
15077
+ */
15078
+ export type WebhookPayloadAccountRateLimited = {
15079
+ id: string;
15080
+ profiles?: WebhookProfiles;
15081
+ /**
15082
+ * Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
15083
+ */
15084
+ test?: boolean;
15085
+ event: 'account.rate_limited';
15086
+ account: {
15087
+ accountId: string;
15088
+ profileId: string;
15089
+ platform: string;
15090
+ username: string;
15091
+ displayName?: (string) | null;
15092
+ reason: 'recipient_burst' | 'provider_rejection' | 'bounces' | 'daily_cap';
15093
+ cooldownMinutes: number;
15094
+ resetsAt: string;
15095
+ };
15096
+ timestamp: string;
15097
+ };
15098
+
15099
+ export type event6 = 'account.rate_limited';
15100
+
15101
+ export type reason = 'recipient_burst' | 'provider_rejection' | 'bounces' | 'daily_cap';
15102
+
14707
15103
  /**
14708
15104
  * Webhook payload for the `ad_account.status_changed` event. Fires when an ad
14709
15105
  * account Zernio already tracked moves between `active`, `restricted`, `disabled`
@@ -14750,7 +15146,7 @@ export type WebhookPayloadAdAccountStatusChanged = {
14750
15146
  timestamp: string;
14751
15147
  };
14752
15148
 
14753
- export type event6 = 'ad_account.status_changed';
15149
+ export type event7 = 'ad_account.status_changed';
14754
15150
 
14755
15151
  export type previous = 'active' | 'restricted' | 'disabled' | 'closed';
14756
15152
 
@@ -14817,7 +15213,7 @@ export type WebhookPayloadAdDeliveryIssue = {
14817
15213
  timestamp: string;
14818
15214
  };
14819
15215
 
14820
- export type event7 = 'ad.delivery_issue';
15216
+ export type event8 = 'ad.delivery_issue';
14821
15217
 
14822
15218
  /**
14823
15219
  * Always `AD`.
@@ -14891,9 +15287,9 @@ export type WebhookPayloadAdReview = {
14891
15287
  timestamp: string;
14892
15288
  };
14893
15289
 
14894
- export type event8 = 'ad.review.approved' | 'ad.review.rejected';
15290
+ export type event9 = 'ad.review.approved' | 'ad.review.rejected';
14895
15291
 
14896
- export type status40 = 'approved' | 'rejected';
15292
+ export type status41 = 'approved' | 'rejected';
14897
15293
 
14898
15294
  /**
14899
15295
  * Webhook payload for the `ad_rule.triggered` event.
@@ -15025,7 +15421,7 @@ export type WebhookPayloadAdRuleTriggered = {
15025
15421
  timestamp: string;
15026
15422
  };
15027
15423
 
15028
- export type event9 = 'ad_rule.triggered';
15424
+ export type event10 = 'ad_rule.triggered';
15029
15425
 
15030
15426
  /**
15031
15427
  * Whether the rule evaluates campaigns or ad sets.
@@ -15157,7 +15553,7 @@ export type WebhookPayloadAdStatusChanged = {
15157
15553
  timestamp: string;
15158
15554
  };
15159
15555
 
15160
- export type event10 = 'ad.status_changed';
15556
+ export type event11 = 'ad.status_changed';
15161
15557
 
15162
15558
  /**
15163
15559
  * Hierarchy level the status applies to. Mirrors Meta's `level`. Creative-level events are not forwarded.
@@ -15228,12 +15624,12 @@ export type WebhookPayloadAdVideoProcessed = {
15228
15624
  timestamp: string;
15229
15625
  };
15230
15626
 
15231
- export type event11 = 'ad.video.processed';
15627
+ export type event12 = 'ad.video.processed';
15232
15628
 
15233
15629
  /**
15234
15630
  * `ready`: usable as `video.id` on the create endpoints. `error`: Meta could not process it; upload again.
15235
15631
  */
15236
- export type status41 = 'ready' | 'error';
15632
+ export type status42 = 'ready' | 'error';
15237
15633
 
15238
15634
  /**
15239
15635
  * Webhook payload for `analytics.synced`. Fired once per connected account each
@@ -15311,7 +15707,7 @@ export type WebhookPayloadAnalyticsSynced = {
15311
15707
  timestamp: string;
15312
15708
  };
15313
15709
 
15314
- export type event12 = 'analytics.synced';
15710
+ export type event13 = 'analytics.synced';
15315
15711
 
15316
15712
  export type WebhookPayloadApiChangelogPublished = {
15317
15713
  /**
@@ -15330,7 +15726,36 @@ export type WebhookPayloadApiChangelogPublished = {
15330
15726
  timestamp: string;
15331
15727
  };
15332
15728
 
15333
- export type event13 = 'api.changelog.published';
15729
+ export type event14 = 'api.changelog.published';
15730
+
15731
+ /**
15732
+ * Webhook payload for calendar.event.created, calendar.event.updated and calendar.event.deleted. Carries the provider event id and the change only; read the event with `GET /v1/calendar/events/{id}` (deleted ids answer 404).
15733
+ */
15734
+ export type WebhookPayloadCalendarEvent = {
15735
+ id: string;
15736
+ profiles?: WebhookProfiles;
15737
+ /**
15738
+ * Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
15739
+ */
15740
+ test?: boolean;
15741
+ event: 'calendar.event.created' | 'calendar.event.updated' | 'calendar.event.deleted';
15742
+ account: {
15743
+ accountId?: string;
15744
+ profileId?: string;
15745
+ platform?: string;
15746
+ username?: string;
15747
+ displayName?: (string) | null;
15748
+ };
15749
+ calendarEvent: {
15750
+ id?: string;
15751
+ changeType?: 'created' | 'updated' | 'deleted';
15752
+ };
15753
+ timestamp: string;
15754
+ };
15755
+
15756
+ export type event15 = 'calendar.event.created' | 'calendar.event.updated' | 'calendar.event.deleted';
15757
+
15758
+ export type changeType = 'created' | 'updated' | 'deleted';
15334
15759
 
15335
15760
  /**
15336
15761
  * Webhook payload for the `call.ended` event. Fires on call hangup
@@ -15405,7 +15830,7 @@ export type WebhookPayloadCallEnded = {
15405
15830
  timestamp: string;
15406
15831
  };
15407
15832
 
15408
- export type event14 = 'call.ended';
15833
+ export type event16 = 'call.ended';
15409
15834
 
15410
15835
  /**
15411
15836
  * Webhook payload for the `call.failed` event. Fired when a call
@@ -15444,7 +15869,7 @@ export type WebhookPayloadCallFailed = {
15444
15869
  timestamp: string;
15445
15870
  };
15446
15871
 
15447
- export type event15 = 'call.failed';
15872
+ export type event17 = 'call.failed';
15448
15873
 
15449
15874
  /**
15450
15875
  * Webhook payload for the `call.permission_request` event. Fires
@@ -15486,7 +15911,7 @@ export type WebhookPayloadCallPermissionRequest = {
15486
15911
  timestamp: string;
15487
15912
  };
15488
15913
 
15489
- export type event16 = 'call.permission_request';
15914
+ export type event18 = 'call.permission_request';
15490
15915
 
15491
15916
  export type response = 'accept' | 'reject';
15492
15917
 
@@ -15545,7 +15970,7 @@ export type WebhookPayloadCallReceived = {
15545
15970
  timestamp: string;
15546
15971
  };
15547
15972
 
15548
- export type event17 = 'call.received';
15973
+ export type event19 = 'call.received';
15549
15974
 
15550
15975
  /**
15551
15976
  * Webhook payload for the `campaign.budget.depleted` event. Fires when a campaign
@@ -15596,7 +16021,7 @@ export type WebhookPayloadCampaignBudgetDepleted = {
15596
16021
  timestamp: string;
15597
16022
  };
15598
16023
 
15599
- export type event18 = 'campaign.budget.depleted';
16024
+ export type event20 = 'campaign.budget.depleted';
15600
16025
 
15601
16026
  /**
15602
16027
  * Always `CAMPAIGN`.
@@ -15778,7 +16203,7 @@ export type WebhookPayloadComment = {
15778
16203
  timestamp: string;
15779
16204
  };
15780
16205
 
15781
- export type event19 = 'comment.received';
16206
+ export type event21 = 'comment.received';
15782
16207
 
15783
16208
  export type platform15 = 'instagram' | 'facebook' | 'threads' | 'youtube' | 'linkedin' | 'bluesky' | 'reddit' | 'tiktok';
15784
16209
 
@@ -15824,7 +16249,7 @@ export type WebhookPayloadCommerceOrder = {
15824
16249
  };
15825
16250
  };
15826
16251
 
15827
- export type event20 = 'commerce.order.created' | 'commerce.order.updated' | 'commerce.order.refunded';
16252
+ export type event22 = 'commerce.order.created' | 'commerce.order.updated' | 'commerce.order.refunded';
15828
16253
 
15829
16254
  export type type18 = 'order';
15830
16255
 
@@ -15867,10 +16292,39 @@ export type WebhookPayloadCommerceProduct = {
15867
16292
  };
15868
16293
  };
15869
16294
 
15870
- export type event21 = 'commerce.product.created' | 'commerce.product.updated' | 'commerce.product.deleted';
16295
+ export type event23 = 'commerce.product.created' | 'commerce.product.updated' | 'commerce.product.deleted';
15871
16296
 
15872
16297
  export type type19 = 'product';
15873
16298
 
16299
+ /**
16300
+ * Webhook payload for contact.updated and contact.deleted, fired after a provider contacts sync (Google Contacts, Outlook) changed a contact. Read the contact with `GET /v1/contacts/{id}`.
16301
+ */
16302
+ export type WebhookPayloadContact = {
16303
+ id: string;
16304
+ profiles?: WebhookProfiles;
16305
+ /**
16306
+ * Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
16307
+ */
16308
+ test?: boolean;
16309
+ event: 'contact.updated' | 'contact.deleted';
16310
+ account: {
16311
+ accountId?: string;
16312
+ profileId?: string;
16313
+ platform?: string;
16314
+ username?: string;
16315
+ displayName?: (string) | null;
16316
+ };
16317
+ contact: {
16318
+ id?: string;
16319
+ changeType?: 'updated' | 'deleted';
16320
+ };
16321
+ timestamp: string;
16322
+ };
16323
+
16324
+ export type event24 = 'contact.updated' | 'contact.deleted';
16325
+
16326
+ export type changeType2 = 'updated' | 'deleted';
16327
+
15874
16328
  export type WebhookPayloadContactFieldChanged = {
15875
16329
  /**
15876
16330
  * Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
@@ -15907,7 +16361,7 @@ export type WebhookPayloadContactFieldChanged = {
15907
16361
  source: 'api' | 'workflow' | 'automation';
15908
16362
  };
15909
16363
 
15910
- export type event22 = 'contact.field_changed';
16364
+ export type event25 = 'contact.field_changed';
15911
16365
 
15912
16366
  /**
15913
16367
  * Who wrote the field: the API or dashboard, a workflow set_field node, or an automation.
@@ -15939,7 +16393,7 @@ export type WebhookPayloadContactTag = {
15939
16393
  source: 'api' | 'workflow' | 'automation';
15940
16394
  };
15941
16395
 
15942
- export type event23 = 'contact.tag_added' | 'contact.tag_removed';
16396
+ export type event26 = 'contact.tag_added' | 'contact.tag_removed';
15943
16397
 
15944
16398
  /**
15945
16399
  * Who answers a conversation changed under Meta's handover protocol. WhatsApp: Meta
@@ -15985,7 +16439,7 @@ export type WebhookPayloadConversationControlChanged = {
15985
16439
  timestamp: string;
15986
16440
  };
15987
16441
 
15988
- export type event24 = 'conversation.control_changed';
16442
+ export type event27 = 'conversation.control_changed';
15989
16443
 
15990
16444
  /**
15991
16445
  * Who answers now. ai_agent: Meta Business Agent (WhatsApp); app: you; other: another app (a WhatsApp partner, or a Messenger / Instagram receiver such as Page Inbox).
@@ -16044,7 +16498,7 @@ export type WebhookPayloadConversationStarted = {
16044
16498
  timestamp: string;
16045
16499
  };
16046
16500
 
16047
- export type event25 = 'conversation.started';
16501
+ export type event28 = 'conversation.started';
16048
16502
 
16049
16503
  /**
16050
16504
  * Webhook payload for post.external.created / post.external.updated /
@@ -16081,7 +16535,69 @@ export type WebhookPayloadExternalPost = {
16081
16535
  timestamp: string;
16082
16536
  };
16083
16537
 
16084
- export type event26 = 'post.external.created' | 'post.external.updated' | 'post.external.deleted';
16538
+ export type event29 = 'post.external.created' | 'post.external.updated' | 'post.external.deleted';
16539
+
16540
+ /**
16541
+ * Webhook payload for file.created, file.updated and file.deleted. Carries the provider file id and the change only; read the file with `GET /v1/files/{id}`.
16542
+ */
16543
+ export type WebhookPayloadFile = {
16544
+ id: string;
16545
+ profiles?: WebhookProfiles;
16546
+ /**
16547
+ * Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
16548
+ */
16549
+ test?: boolean;
16550
+ event: 'file.created' | 'file.updated' | 'file.deleted';
16551
+ account: {
16552
+ accountId?: string;
16553
+ profileId?: string;
16554
+ platform?: string;
16555
+ username?: string;
16556
+ displayName?: (string) | null;
16557
+ };
16558
+ file: {
16559
+ id?: string;
16560
+ changeType?: 'created' | 'updated' | 'deleted';
16561
+ };
16562
+ timestamp: string;
16563
+ };
16564
+
16565
+ export type event30 = 'file.created' | 'file.updated' | 'file.deleted';
16566
+
16567
+ /**
16568
+ * Webhook payload for file.picked: the user picked files on a hosted picker page (`POST /v1/files/picker-sessions`), so the app may now open them. Every id was checked against Drive before the event fired.
16569
+ */
16570
+ export type WebhookPayloadFilePicked = {
16571
+ id: string;
16572
+ profiles?: WebhookProfiles;
16573
+ /**
16574
+ * Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
16575
+ */
16576
+ test?: boolean;
16577
+ event: 'file.picked';
16578
+ account: {
16579
+ accountId?: string;
16580
+ profileId?: string;
16581
+ platform?: string;
16582
+ username?: string;
16583
+ displayName?: (string) | null;
16584
+ };
16585
+ picker: {
16586
+ /**
16587
+ * The `id` returned when the session was created.
16588
+ */
16589
+ sessionId?: string;
16590
+ files?: Array<{
16591
+ id?: string;
16592
+ name?: string;
16593
+ mimeType?: (string) | null;
16594
+ kind?: 'file' | 'folder';
16595
+ }>;
16596
+ };
16597
+ timestamp: string;
16598
+ };
16599
+
16600
+ export type event31 = 'file.picked';
16085
16601
 
16086
16602
  /**
16087
16603
  * Webhook payload for lead.received events (Meta Lead Gen / Instant Forms).
@@ -16161,7 +16677,7 @@ export type WebhookPayloadLead = {
16161
16677
  timestamp: string;
16162
16678
  };
16163
16679
 
16164
- export type event27 = 'lead.received';
16680
+ export type event32 = 'lead.received';
16165
16681
 
16166
16682
  export type platform16 = 'facebook';
16167
16683
 
@@ -16764,7 +17280,7 @@ export type WebhookPayloadMessage = {
16764
17280
  timestamp: string;
16765
17281
  };
16766
17282
 
16767
- export type event28 = 'message.received';
17283
+ export type event33 = 'message.received';
16768
17284
 
16769
17285
  /**
16770
17286
  * Which Zernio surface produced the message. Always present and
@@ -16830,7 +17346,7 @@ export type WebhookPayloadMessageDeleted = {
16830
17346
  timestamp: string;
16831
17347
  };
16832
17348
 
16833
- export type event29 = 'message.deleted';
17349
+ export type event34 = 'message.deleted';
16834
17350
 
16835
17351
  /**
16836
17352
  * Shared payload for message.delivered, message.read, message.played and
@@ -16898,7 +17414,7 @@ export type WebhookPayloadMessageDeliveryStatus = {
16898
17414
  timestamp: string;
16899
17415
  };
16900
17416
 
16901
- export type event30 = 'message.delivered' | 'message.read' | 'message.played' | 'message.failed';
17417
+ export type event35 = 'message.delivered' | 'message.read' | 'message.played' | 'message.failed';
16902
17418
 
16903
17419
  /**
16904
17420
  * Webhook payload for message.edited events. Fires when the sender
@@ -16941,7 +17457,7 @@ export type WebhookPayloadMessageEdited = {
16941
17457
  timestamp: string;
16942
17458
  };
16943
17459
 
16944
- export type event31 = 'message.edited';
17460
+ export type event36 = 'message.edited';
16945
17461
 
16946
17462
  /**
16947
17463
  * Webhook payload for message sent events (fired when a message is sent via the API, or from the WhatsApp Business app on Coexistence numbers)
@@ -17187,7 +17703,7 @@ export type WebhookPayloadMessageSent = {
17187
17703
  timestamp: string;
17188
17704
  };
17189
17705
 
17190
- export type event32 = 'message.sent';
17706
+ export type event37 = 'message.sent';
17191
17707
 
17192
17708
  /**
17193
17709
  * Every platform whose outgoing messages Zernio observes. sms is absent on purpose: its carrier receipts update delivery status and never raise message.sent.
@@ -17245,7 +17761,7 @@ export type WebhookPayloadPhoneNumberStockAvailable = {
17245
17761
  timestamp: string;
17246
17762
  };
17247
17763
 
17248
- export type event33 = 'phone_number.stock_available';
17764
+ export type event38 = 'phone_number.stock_available';
17249
17765
 
17250
17766
  /**
17251
17767
  * Webhook payload for post events
@@ -17300,7 +17816,7 @@ export type WebhookPayloadPost = {
17300
17816
  timestamp: string;
17301
17817
  };
17302
17818
 
17303
- export type event34 = 'post.scheduled' | 'post.published' | 'post.failed' | 'post.partial' | 'post.cancelled' | 'post.recycled';
17819
+ export type event39 = 'post.scheduled' | 'post.published' | 'post.failed' | 'post.partial' | 'post.cancelled' | 'post.recycled';
17304
17820
 
17305
17821
  /**
17306
17822
  * Webhook payload for the per-platform terminal events
@@ -17424,12 +17940,12 @@ export type WebhookPayloadPostPlatform = {
17424
17940
  timestamp: string;
17425
17941
  };
17426
17942
 
17427
- export type event35 = 'post.platform.published' | 'post.platform.failed' | 'post.platform.deleted' | 'post.tiktok.url_resolved';
17943
+ export type event40 = 'post.platform.published' | 'post.platform.failed' | 'post.platform.deleted' | 'post.tiktok.url_resolved';
17428
17944
 
17429
17945
  /**
17430
17946
  * Terminal status this event fires on. Matches the event suffix.
17431
17947
  */
17432
- export type status42 = 'published' | 'failed' | 'deleted';
17948
+ export type status43 = 'published' | 'failed' | 'deleted';
17433
17949
 
17434
17950
  /**
17435
17951
  * Webhook payload for reaction received events (WhatsApp, Telegram, Slack, Instagram, Facebook Messenger, TikTok)
@@ -17489,7 +18005,7 @@ export type WebhookPayloadReaction = {
17489
18005
  timestamp: string;
17490
18006
  };
17491
18007
 
17492
- export type event36 = 'reaction.received';
18008
+ export type event41 = 'reaction.received';
17493
18009
 
17494
18010
  export type action = 'added' | 'removed';
17495
18011
 
@@ -17568,7 +18084,7 @@ export type WebhookPayloadReferral = {
17568
18084
  timestamp: string;
17569
18085
  };
17570
18086
 
17571
- export type event37 = 'referral.received';
18087
+ export type event42 = 'referral.received';
17572
18088
 
17573
18089
  /**
17574
18090
  * Webhook payload for the review.new event (new review posted on a connected account).
@@ -17600,7 +18116,7 @@ export type WebhookPayloadReviewNew = {
17600
18116
  timestamp: string;
17601
18117
  };
17602
18118
 
17603
- export type event38 = 'review.new';
18119
+ export type event43 = 'review.new';
17604
18120
 
17605
18121
  /**
17606
18122
  * Webhook payload for the review.updated event. Fired when the reviewer edits their
@@ -17638,7 +18154,7 @@ export type WebhookPayloadReviewUpdated = {
17638
18154
  timestamp: string;
17639
18155
  };
17640
18156
 
17641
- export type event39 = 'review.updated';
18157
+ export type event44 = 'review.updated';
17642
18158
 
17643
18159
  export type WebhookPayloadSequenceEnrollment = {
17644
18160
  /**
@@ -17671,7 +18187,7 @@ export type WebhookPayloadSequenceEnrollment = {
17671
18187
  exitReason?: 'completed' | 'replied' | 'manual' | 'failed' | 'unsubscribed';
17672
18188
  };
17673
18189
 
17674
- export type event40 = 'sequence.enrolled' | 'sequence.exited';
18190
+ export type event45 = 'sequence.enrolled' | 'sequence.exited';
17675
18191
 
17676
18192
  /**
17677
18193
  * sequence.exited only. completed: the last step was sent; replied: the contact replied and the sequence exits on reply; manual: unenrolled through the API; failed: the step kept failing to send; unsubscribed: the contact opted out.
@@ -17692,7 +18208,7 @@ export type WebhookPayloadSupportRun = {
17692
18208
  run: SupportRun;
17693
18209
  };
17694
18210
 
17695
- export type event41 = 'support.run.completed' | 'support.run.failed';
18211
+ export type event46 = 'support.run.completed' | 'support.run.failed';
17696
18212
 
17697
18213
  /**
17698
18214
  * Webhook payload for test deliveries
@@ -17713,7 +18229,7 @@ export type WebhookPayloadTest = {
17713
18229
  timestamp: string;
17714
18230
  };
17715
18231
 
17716
- export type event42 = 'webhook.test';
18232
+ export type event47 = 'webhook.test';
17717
18233
 
17718
18234
  /**
17719
18235
  * Webhook payload for `whatsapp.account.alert_received`, forwarded from Meta's
@@ -17765,7 +18281,7 @@ export type WebhookPayloadWhatsAppAccountAlertReceived = {
17765
18281
  timestamp: string;
17766
18282
  };
17767
18283
 
17768
- export type event43 = 'whatsapp.account.alert_received';
18284
+ export type event48 = 'whatsapp.account.alert_received';
17769
18285
 
17770
18286
  export type platform18 = 'whatsapp';
17771
18287
 
@@ -17821,12 +18337,12 @@ export type WebhookPayloadWhatsAppAccountNameStatusUpdated = {
17821
18337
  timestamp: string;
17822
18338
  };
17823
18339
 
17824
- export type event44 = 'whatsapp.account.name_status_updated';
18340
+ export type event49 = 'whatsapp.account.name_status_updated';
17825
18341
 
17826
18342
  /**
17827
18343
  * Normalized from Meta's `decision` (REJECTED -> DECLINED, DEFERRED -> PENDING_REVIEW; the review is still open on DEFERRED, not a rejection).
17828
18344
  */
17829
- export type status43 = 'APPROVED' | 'DECLINED' | 'PENDING_REVIEW';
18345
+ export type status44 = 'APPROVED' | 'DECLINED' | 'PENDING_REVIEW';
17830
18346
 
17831
18347
  /**
17832
18348
  * Webhook payload for `whatsapp.account.quality_updated`. Fired when a connected
@@ -17879,7 +18395,7 @@ export type WebhookPayloadWhatsAppAccountQualityUpdated = {
17879
18395
  timestamp: string;
17880
18396
  };
17881
18397
 
17882
- export type event45 = 'whatsapp.account.quality_updated';
18398
+ export type event50 = 'whatsapp.account.quality_updated';
17883
18399
 
17884
18400
  /**
17885
18401
  * The Meta webhook field that reported the change.
@@ -17955,12 +18471,12 @@ export type WebhookPayloadWhatsAppAccountStatusUpdated = {
17955
18471
  timestamp: string;
17956
18472
  };
17957
18473
 
17958
- export type event46 = 'whatsapp.account.status_updated';
18474
+ export type event51 = 'whatsapp.account.status_updated';
17959
18475
 
17960
18476
  /**
17961
18477
  * `active` only on a reinstatement (DISABLED_UPDATE with ban state REINSTATE).
17962
18478
  */
17963
- export type status44 = 'restricted' | 'active';
18479
+ export type status45 = 'restricted' | 'active';
17964
18480
 
17965
18481
  /**
17966
18482
  * Webhook payload for the `whatsapp.contact.identity_changed` event. Fired when
@@ -18012,12 +18528,12 @@ export type WebhookPayloadWhatsAppContactIdentityChanged = {
18012
18528
  timestamp: string;
18013
18529
  };
18014
18530
 
18015
- export type event47 = 'whatsapp.contact.identity_changed';
18531
+ export type event52 = 'whatsapp.contact.identity_changed';
18016
18532
 
18017
18533
  /**
18018
18534
  * Which Meta signal reported the change. `user_changed_number`: new phone number. `user_changed_user_id` and `user_id_update`: new BSUID.
18019
18535
  */
18020
- export type reason = 'user_changed_number' | 'user_changed_user_id' | 'user_identity_changed' | 'user_id_update';
18536
+ export type reason2 = 'user_changed_number' | 'user_changed_user_id' | 'user_identity_changed' | 'user_id_update';
18021
18537
 
18022
18538
  /**
18023
18539
  * Webhook payload for the `whatsapp.template.category_updated` event.
@@ -18086,14 +18602,14 @@ export type WebhookPayloadWhatsAppTemplateCategoryUpdated = {
18086
18602
  timestamp: string;
18087
18603
  };
18088
18604
 
18089
- export type event48 = 'whatsapp.template.category_updated';
18605
+ export type event53 = 'whatsapp.template.category_updated';
18090
18606
 
18091
18607
  /**
18092
18608
  * `scheduled` is Meta's 24h advance notice of an upcoming
18093
18609
  * reclassification; `applied` is the change taking effect.
18094
18610
  *
18095
18611
  */
18096
- export type changeType = 'scheduled' | 'applied';
18612
+ export type changeType3 = 'scheduled' | 'applied';
18097
18613
 
18098
18614
  /**
18099
18615
  * The category right now, regardless of changeType.
@@ -18168,7 +18684,7 @@ export type WebhookPayloadWhatsAppTemplateStatusUpdated = {
18168
18684
  timestamp: string;
18169
18685
  };
18170
18686
 
18171
- export type event49 = 'whatsapp.template.status_updated';
18687
+ export type event54 = 'whatsapp.template.status_updated';
18172
18688
 
18173
18689
  /**
18174
18690
  * New status. Forwarded verbatim from Meta's `event` field.
@@ -18176,7 +18692,7 @@ export type event49 = 'whatsapp.template.status_updated';
18176
18692
  * request before the template is actually removed.
18177
18693
  *
18178
18694
  */
18179
- export type status45 = 'APPROVED' | 'REJECTED' | 'PENDING' | 'PAUSED' | 'DISABLED' | 'IN_APPEAL' | 'PENDING_DELETION';
18695
+ export type status46 = 'APPROVED' | 'REJECTED' | 'PENDING' | 'PAUSED' | 'DISABLED' | 'IN_APPEAL' | 'PENDING_DELETION';
18180
18696
 
18181
18697
  export type WebhookPayloadWorkflowRun = {
18182
18698
  /**
@@ -18235,12 +18751,12 @@ export type WebhookPayloadWorkflowRun = {
18235
18751
  error?: string;
18236
18752
  };
18237
18753
 
18238
- export type event50 = 'workflow.run.started' | 'workflow.run.completed' | 'workflow.run.failed';
18754
+ export type event55 = 'workflow.run.started' | 'workflow.run.completed' | 'workflow.run.failed';
18239
18755
 
18240
18756
  /**
18241
18757
  * running on workflow.run.started; completed or exited (ended on purpose before the last node, e.g. a handoff) on workflow.run.completed; failed on workflow.run.failed.
18242
18758
  */
18243
- export type status46 = 'running' | 'waiting' | 'completed' | 'exited' | 'failed';
18759
+ export type status47 = 'running' | 'waiting' | 'completed' | 'exited' | 'failed';
18244
18760
 
18245
18761
  /**
18246
18762
  * The profiles this event belongs to, each with the externalId you set on it (null when none is set). Present on every event tied to a profile and absent on events that belong to none. Events spanning several profiles (a post published to accounts of different profiles) list each once. Use it to route the event to your tenant without storing Zernio profile ids.
@@ -18638,7 +19154,7 @@ export type WorkflowExecutionEvent = {
18638
19154
 
18639
19155
  export type action2 = 'execution_started' | 'execution_completed' | 'execution_exited' | 'execution_paused' | 'execution_resumed' | 'node_started' | 'node_completed' | 'node_failed' | 'node_skipped';
18640
19156
 
18641
- export type status47 = 'success' | 'failed' | 'pending';
19157
+ export type status48 = 'success' | 'failed' | 'pending';
18642
19158
 
18643
19159
  /**
18644
19160
  * A node in a workflow graph. `config` shape depends on `type`.
@@ -22706,6 +23222,18 @@ export type GetAccountHealthResponse = ({
22706
23222
  * TikTok only. The TikTok integration the account is connected through: business (TikTok for Business, Accounts API) or developer (the original integration). Absent on other platforms.
22707
23223
  */
22708
23224
  integrationLane?: 'business' | 'developer';
23225
+ /**
23226
+ * Google and Microsoft only: today's outbound mail allowance for the mailbox.
23227
+ */
23228
+ sendCap?: {
23229
+ limit?: number;
23230
+ used?: number;
23231
+ resetsAt?: string;
23232
+ };
23233
+ /**
23234
+ * Google and Microsoft only: state of the provider change-notification subscriptions behind `message.received` and `calendar.event.*`. `pending` means a granted area has no live subscription yet (retried every 6 hours), `failed` that renewals keep failing (reconnect the account).
23235
+ */
23236
+ push?: 'active' | 'pending' | 'failed' | 'not_applicable';
22709
23237
  username?: string;
22710
23238
  displayName?: string;
22711
23239
  /**
@@ -23241,7 +23769,7 @@ export type ListApiKeysError = (ErrorResponse | {
23241
23769
  /**
23242
23770
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
23243
23771
  */
23244
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
23772
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
23245
23773
  });
23246
23774
 
23247
23775
  export type CreateApiKeyData = {
@@ -23266,7 +23794,7 @@ export type CreateApiKeyData = {
23266
23794
  /**
23267
23795
  * Resource groups to DISABLE on this key (opt-out denylist). Omit for a legacy full-access key. A key with any group disabled mints with the zrk_ prefix, gets 403 with code=insufficient_permissions and required_group on operations in disabled groups (each operation's group is published as x-resource-group), and can never manage API keys, invites, or member identity. With 'messages' disabled, the key cannot read or send direct messages through any API surface and cannot create or edit a webhook subscription broader than itself. Subscriptions that already exist are governed by their own `disabledResourceGroups`, not by this key's. OAuth connector tokens resolve against the same registry, but their groups are not settable yet.
23268
23796
  */
23269
- disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks')>;
23797
+ disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files')>;
23270
23798
  };
23271
23799
  };
23272
23800
 
@@ -23281,7 +23809,7 @@ export type CreateApiKeyError = (unknown | ErrorResponse | {
23281
23809
  /**
23282
23810
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
23283
23811
  */
23284
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
23812
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
23285
23813
  });
23286
23814
 
23287
23815
  export type DeleteApiKeyData = {
@@ -23300,7 +23828,7 @@ export type DeleteApiKeyError = (ErrorResponse | {
23300
23828
  /**
23301
23829
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
23302
23830
  */
23303
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
23831
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
23304
23832
  } | {
23305
23833
  error?: string;
23306
23834
  });
@@ -23315,7 +23843,7 @@ export type ListConnectedAppsError = (ErrorResponse | {
23315
23843
  /**
23316
23844
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
23317
23845
  */
23318
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
23846
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
23319
23847
  });
23320
23848
 
23321
23849
  export type RevokeConnectedAppData = {
@@ -23346,7 +23874,7 @@ export type RevokeConnectedAppError = (ErrorResponse | {
23346
23874
  /**
23347
23875
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
23348
23876
  */
23349
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
23877
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
23350
23878
  });
23351
23879
 
23352
23880
  export type CreateInviteTokenData = {
@@ -23390,7 +23918,7 @@ export type CreateInviteTokenError = (unknown | ErrorResponse | {
23390
23918
  /**
23391
23919
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
23392
23920
  */
23393
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
23921
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
23394
23922
  });
23395
23923
 
23396
23924
  export type GetConnectUrlData = {
@@ -23398,7 +23926,7 @@ export type GetConnectUrlData = {
23398
23926
  /**
23399
23927
  * Social media platform to connect. `snapchat` is a closed beta with no public release date: it returns 403 `PLATFORM_BETA_RESTRICTED` until the account is approved.
23400
23928
  */
23401
- platform: 'facebook' | 'instagram' | 'linkedin' | 'twitter' | 'tiktok' | 'youtube' | 'threads' | 'reddit' | 'pinterest' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp';
23929
+ platform: 'facebook' | 'instagram' | 'linkedin' | 'twitter' | 'tiktok' | 'youtube' | 'threads' | 'reddit' | 'pinterest' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'google' | 'microsoft';
23402
23930
  };
23403
23931
  query: {
23404
23932
  /**
@@ -23429,6 +23957,10 @@ export type GetConnectUrlData = {
23429
23957
  * Hosted signup page only (`signup=hosted`, WhatsApp): language of the page and its follow-along guide. Explainer videos stay in English. Default `en`. Rejected without `signup=hosted`.
23430
23958
  */
23431
23959
  language?: 'en' | 'es' | 'pt-BR';
23960
+ /**
23961
+ * google and microsoft only: pre-fills the account picker with this address so the user lands on the right mailbox.
23962
+ */
23963
+ loginHint?: string;
23432
23964
  /**
23433
23965
  * Instagram only. Which of the two Instagram connection methods to use. Ignored for every other platform.
23434
23966
  *
@@ -23468,7 +24000,11 @@ export type GetConnectUrlData = {
23468
24000
  */
23469
24001
  reconnectAccountId?: string;
23470
24002
  /**
23471
- * Your custom redirect URL after connection completes. MUST be an absolute http(s) URL or a custom app scheme for mobile deeplinks (e.g. myapp://callback); a relative path is rejected with 400 INVALID_REDIRECT_URL. X (twitter) caps the OAuth `state` at 500 characters and the redirect is carried inside it, so the URL-encoded `redirect_url` must be at most 258 characters for API callers (310 for dashboard sessions; in headless mode the appended `headless=true` counts toward it); a longer one is rejected with 400 INVALID_REDIRECT_URL. Result params are appended with the URL API, so an existing query string is preserved. Standard mode appends connected={platform}&profileId=X&accountId=Y&username=Z. Headless mode appends OAuth data params for platforms requiring selection (e.g. LinkedIn orgs, Facebook pages). If no selection is needed, the account is created directly and the redirect includes accountId.
24003
+ * Your custom redirect URL after connection completes. MUST be an absolute http(s) URL or a custom app scheme for mobile deeplinks (e.g. myapp://callback); a relative path is rejected with 400 INVALID_REDIRECT_URL.
24004
+ *
24005
+ * Exit notice: when `redirect_url` is an http(s) URL on another site (anything but zernio.com), the user is not sent there directly. Every redirect of the flow lands first on a Zernio page, `https://zernio.com/connect/continue?to=<your URL>`, that names your site and continues to it with one click. All the params described below arrive on your URL unchanged; the notice page moves them over. A custom app scheme (myapp://...) is never routed through the notice. In headless mode the redirects we hand you (and the `redirect_url` returned by the selection endpoints) are notice URLs, so pass them back or navigate to them as they are.
24006
+ *
24007
+ * X (twitter) caps the OAuth `state` at 500 characters and the redirect is carried inside it (for an http(s) URL on another site, wrapped in the notice URL), so the URL-encoded form must be at most 258 characters for API callers (310 for dashboard sessions; in headless mode the appended `headless=true` counts toward it). For a plain https URL on another site that leaves about 165 to 190 characters of your own URL, depending on how many characters need encoding; a longer one is rejected with 400 INVALID_REDIRECT_URL, and the error says by how much. Result params are appended with the URL API, so an existing query string is preserved. Standard mode appends connected={platform}&profileId=X&accountId=Y&username=Z. Headless mode appends OAuth data params for platforms requiring selection (e.g. LinkedIn orgs, Facebook pages). If no selection is needed, the account is created directly and the redirect includes accountId.
23472
24008
  *
23473
24009
  * On failure, the browser is sent to the same redirect_url with `error` and `platform` appended.
23474
24010
  * `error` and `platform` are always present. `error_message`, `is_user_fixable`, `reason`,
@@ -23587,7 +24123,7 @@ export type GetConnectUrlData = {
23587
24123
  */
23588
24124
  redirect_url?: string;
23589
24125
  /**
23590
- * Comma-separated permission areas to request instead of the platform's full permission set. Values: `posting`, `analytics`, `comments`, `messaging`, `ads`. Omit it (the default, and what the dashboard does) to request everything the platform supports.
24126
+ * Comma-separated permission areas to request instead of the platform's full permission set. Values: `posting`, `analytics`, `comments`, `messaging`, `ads`, and on google and microsoft `email`, `calendar`, `files`, `contacts`. Omit it (the default, and what the dashboard does) to request everything the platform supports; google and microsoft REQUIRE it (400 `INVALID_FIELD_VALUE` when absent) because their consent screens are reviewed per area.
23591
24127
  *
23592
24128
  * When present, the consent dialog asks only for the platform scopes behind those areas plus the scopes every connection needs (identity, token refresh, and listing the pages, organizations or channels the user picks from). Scopes the user was never asked for are absent from the account's `permissions`, and the health endpoints report them as not granted, so a `posting`-only account cannot read analytics or the inbox until it is connected again with more areas. First comments need `comments`: a `posting`-only account publishes the post and skips the first comment. Scopes the platform lists under none of the areas (X likes, bookmarks and follows, Pinterest ads-only extras) are requested only when the parameter is omitted.
23593
24129
  *
@@ -23610,6 +24146,15 @@ export type GetConnectUrlData = {
23610
24146
  * | googlebusiness | `business.manage` | `business.manage` | `business.manage` | none | none | `business.manage`, `userinfo.profile`, `userinfo.email` |
23611
24147
  * | slack | `chat:write`, `chat:write.public`, `chat:write.customize`, `files:write`, `files:read` | none | none | `chat:write`, `chat:write.customize`, `files:write`, `files:read`, `channels:history`, `groups:history`, `im:history`, `mpim:history`, `im:read`, `im:write`, `mpim:read`, `users:read`, `reactions:read`, `reactions:write` | none | `channels:join`, `channels:read`, `groups:read`, `team:read` |
23612
24148
  *
24149
+ * Google and Microsoft accounts use the mailbox areas instead (`scopes` is required there):
24150
+ *
24151
+ * | Platform | `email` | `calendar` | `files` | `contacts` | Always requested |
24152
+ * |---|---|---|---|---|---|
24153
+ * | google | `gmail.modify` | `calendar` | `drive.file` (only files Zernio created or the user picked, see the Files tag) | `contacts.readonly` | `openid`, `userinfo.email`, `userinfo.profile` |
24154
+ * | microsoft | `Mail.ReadWrite`, `Mail.Send` | `Calendars.ReadWrite` | `Files.ReadWrite` | `Contacts.Read` | `openid`, `profile`, `email`, `offline_access`, `User.Read` |
24155
+ *
24156
+ * Areas accumulate: reconnecting with more areas widens the grant and `GET /v1/accounts/{accountId}/health` reports the result.
24157
+ *
23613
24158
  */
23614
24159
  scopes?: string;
23615
24160
  /**
@@ -23736,7 +24281,7 @@ export type HandleOAuthCallbackData = {
23736
24281
  * served by their own dedicated routes, documented separately.
23737
24282
  *
23738
24283
  */
23739
- platform: 'instagram' | 'twitter' | 'threads' | 'linkedin' | 'youtube' | 'tiktok' | 'reddit' | 'pinterest';
24284
+ platform: 'instagram' | 'twitter' | 'threads' | 'linkedin' | 'youtube' | 'tiktok' | 'reddit' | 'pinterest' | 'google' | 'microsoft';
23740
24285
  };
23741
24286
  };
23742
24287
 
@@ -30376,7 +30921,7 @@ export type GetWebhookSettingsError = (ErrorResponse | {
30376
30921
  /**
30377
30922
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
30378
30923
  */
30379
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
30924
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
30380
30925
  });
30381
30926
 
30382
30927
  export type CreateWebhookSettingsData = {
@@ -30410,7 +30955,7 @@ export type CreateWebhookSettingsData = {
30410
30955
  /**
30411
30956
  * Resource groups this subscription does not receive (opt-out denylist). Omit or send an empty array to receive every event in `events`. Listing a group here drops its events before delivery and on every replay path. Set at creation it applies to everything this subscription ever receives; changed later via PUT it applies to events emitted after the change, with a five-minute tail for events already queued (see that operation). When the caller is a restricted (zrk_) key, that key's own disabled groups are unioned into whatever you send here, so a restricted key can never create a subscription wider than itself.
30412
30957
  */
30413
- disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks')>;
30958
+ disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files')>;
30414
30959
  /**
30415
30960
  * Profiles this subscription receives events for. Omit or send an empty array to receive every profile. Every id must be a profile in your team, otherwise the request fails with 404 `profile_not_found` and nothing is created. Typical use is routing the profile that holds test accounts to a staging endpoint.
30416
30961
  */
@@ -30433,7 +30978,7 @@ export type CreateWebhookSettingsError = (unknown | ErrorResponse | {
30433
30978
  /**
30434
30979
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
30435
30980
  */
30436
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
30981
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
30437
30982
  });
30438
30983
 
30439
30984
  export type UpdateWebhookSettingsData = {
@@ -30476,7 +31021,7 @@ export type UpdateWebhookSettingsData = {
30476
31021
  /**
30477
31022
  * Replaces the subscription's denylist. Send an empty array to clear it and receive every event in `events` again. Omitting the field leaves the current denylist untouched. Applies to events emitted after the update; already-queued events can still deliver for up to five minutes after they were enqueued. When the caller is a restricted (zrk_) key, that key's own disabled groups are unioned back in either way, so a restricted key can neither clear nor widen a subscription past its own groups.
30478
31023
  */
30479
- disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks')>;
31024
+ disabledResourceGroups?: Array<('publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files')>;
30480
31025
  /**
30481
31026
  * Replaces the subscription's profile allowlist. Send an empty array to receive every profile again. Omitting the field leaves the current list untouched. Every id must be a profile in your team, otherwise the request fails with 404 `profile_not_found` and nothing changes. Applies to events emitted after the update. Sending the stored list back unchanged is accepted without re-validation, so an endpoint stays editable after a listed profile is deleted.
30482
31027
  */
@@ -30499,7 +31044,7 @@ export type UpdateWebhookSettingsError = (unknown | ErrorResponse | {
30499
31044
  /**
30500
31045
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
30501
31046
  */
30502
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
31047
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
30503
31048
  });
30504
31049
 
30505
31050
  export type DeleteWebhookSettingsData = {
@@ -30526,7 +31071,7 @@ export type DeleteWebhookSettingsError = (unknown | ErrorResponse | {
30526
31071
  /**
30527
31072
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
30528
31073
  */
30529
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
31074
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
30530
31075
  });
30531
31076
 
30532
31077
  export type GetWebhookLogsData = {
@@ -30590,7 +31135,7 @@ export type GetWebhookLogsError = (unknown | ErrorResponse | {
30590
31135
  /**
30591
31136
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
30592
31137
  */
30593
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
31138
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
30594
31139
  });
30595
31140
 
30596
31141
  export type RedeliverWebhookEventData = {
@@ -30617,7 +31162,7 @@ export type RedeliverWebhookEventError = (unknown | ErrorResponse | {
30617
31162
  /**
30618
31163
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
30619
31164
  */
30620
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
31165
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
30621
31166
  } | {
30622
31167
  success?: boolean;
30623
31168
  message?: string;
@@ -30632,7 +31177,7 @@ export type TestWebhookData = {
30632
31177
  /**
30633
31178
  * Send a sample payload of this event instead of `webhook.test`. The sample is marked with `test: true`.
30634
31179
  */
30635
- event?: 'post.scheduled' | 'post.published' | 'post.failed' | 'post.partial' | 'post.cancelled' | 'post.recycled' | 'post.platform.published' | 'post.platform.failed' | 'post.platform.deleted' | 'post.tiktok.url_resolved' | 'post.external.created' | 'post.external.updated' | 'post.external.deleted' | 'account.connected' | 'account.disconnected' | 'account.ads.initial_sync_completed' | 'account.ads.sync_failed' | 'account.ads.sync_recovered' | 'analytics.synced' | 'message.received' | 'message.sent' | 'message.edited' | 'message.deleted' | 'message.delivered' | 'message.read' | 'message.played' | 'message.failed' | 'reaction.received' | 'referral.received' | 'conversation.started' | 'conversation.control_changed' | 'contact.tag_added' | 'contact.tag_removed' | 'contact.field_changed' | 'sequence.enrolled' | 'sequence.exited' | 'workflow.run.started' | 'workflow.run.completed' | 'workflow.run.failed' | 'support.run.completed' | 'support.run.failed' | 'call.received' | 'call.ended' | 'call.failed' | 'call.permission_request' | 'comment.received' | 'review.new' | 'review.updated' | 'ad.status_changed' | 'ad.review.approved' | 'ad.review.rejected' | 'ad.delivery_issue' | 'campaign.budget.depleted' | 'ad_account.status_changed' | 'ad.video.processed' | 'ad_rule.triggered' | 'lead.received' | 'whatsapp.template.status_updated' | 'whatsapp.template.category_updated' | 'whatsapp.account.name_status_updated' | 'whatsapp.account.quality_updated' | 'whatsapp.account.status_updated' | 'whatsapp.account.alert_received' | 'whatsapp.contact.identity_changed' | 'whatsapp.number.activated' | 'whatsapp.number.declined' | 'whatsapp.number.action_required' | 'whatsapp.automatic_event' | 'whatsapp.number.verification_required' | 'whatsapp.number.suspended' | 'whatsapp.number.reactivated' | 'whatsapp.number.released' | 'whatsapp.number.kyc_submitted' | 'phone_number.stock_available' | 'sms.registration.action_required' | 'sms.registration.status_updated' | 'branded_calling.identity.status_updated' | 'branded_calling.identity.action_required' | 'branded_calling.number.status_updated' | 'rcs.agent.status_updated' | 'verification.approved' | 'verification.failed' | 'commerce.product.created' | 'commerce.product.updated' | 'commerce.product.deleted' | 'commerce.order.created' | 'commerce.order.updated' | 'commerce.order.refunded' | 'api.changelog.published';
31180
+ event?: 'post.scheduled' | 'post.published' | 'post.failed' | 'post.partial' | 'post.cancelled' | 'post.recycled' | 'post.platform.published' | 'post.platform.failed' | 'post.platform.deleted' | 'post.tiktok.url_resolved' | 'post.external.created' | 'post.external.updated' | 'post.external.deleted' | 'account.connected' | 'account.disconnected' | 'account.ads.initial_sync_completed' | 'account.ads.sync_failed' | 'account.ads.sync_recovered' | 'account.rate_limited' | 'calendar.event.created' | 'calendar.event.updated' | 'calendar.event.deleted' | 'file.created' | 'file.updated' | 'file.deleted' | 'file.picked' | 'contact.updated' | 'contact.deleted' | 'analytics.synced' | 'message.received' | 'message.sent' | 'message.edited' | 'message.deleted' | 'message.delivered' | 'message.read' | 'message.played' | 'message.failed' | 'reaction.received' | 'referral.received' | 'conversation.started' | 'conversation.control_changed' | 'contact.tag_added' | 'contact.tag_removed' | 'contact.field_changed' | 'sequence.enrolled' | 'sequence.exited' | 'workflow.run.started' | 'workflow.run.completed' | 'workflow.run.failed' | 'support.run.completed' | 'support.run.failed' | 'call.received' | 'call.ended' | 'call.failed' | 'call.permission_request' | 'comment.received' | 'review.new' | 'review.updated' | 'ad.status_changed' | 'ad.review.approved' | 'ad.review.rejected' | 'ad.delivery_issue' | 'campaign.budget.depleted' | 'ad_account.status_changed' | 'ad.video.processed' | 'ad_rule.triggered' | 'lead.received' | 'whatsapp.template.status_updated' | 'whatsapp.template.category_updated' | 'whatsapp.account.name_status_updated' | 'whatsapp.account.quality_updated' | 'whatsapp.account.status_updated' | 'whatsapp.account.alert_received' | 'whatsapp.contact.identity_changed' | 'whatsapp.number.activated' | 'whatsapp.number.declined' | 'whatsapp.number.action_required' | 'whatsapp.automatic_event' | 'whatsapp.number.verification_required' | 'whatsapp.number.suspended' | 'whatsapp.number.reactivated' | 'whatsapp.number.released' | 'whatsapp.number.kyc_submitted' | 'phone_number.stock_available' | 'sms.registration.action_required' | 'sms.registration.status_updated' | 'branded_calling.identity.status_updated' | 'branded_calling.identity.action_required' | 'branded_calling.number.status_updated' | 'rcs.agent.status_updated' | 'verification.approved' | 'verification.failed' | 'commerce.product.created' | 'commerce.product.updated' | 'commerce.product.deleted' | 'commerce.order.created' | 'commerce.order.updated' | 'commerce.order.refunded' | 'api.changelog.published';
30636
31181
  };
30637
31182
  };
30638
31183
 
@@ -30647,7 +31192,7 @@ export type TestWebhookError = (unknown | ErrorResponse | {
30647
31192
  /**
30648
31193
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
30649
31194
  */
30650
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
31195
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
30651
31196
  } | {
30652
31197
  success?: boolean;
30653
31198
  message?: string;
@@ -30807,6 +31352,805 @@ export type ListLogsResponse = ({
30807
31352
 
30808
31353
  export type ListLogsError = (unknown | ErrorResponse);
30809
31354
 
31355
+ export type ListEmailThreadsData = {
31356
+ query: {
31357
+ /**
31358
+ * The connected Google or Microsoft account.
31359
+ */
31360
+ accountId: string;
31361
+ after?: string;
31362
+ /**
31363
+ * Matches from, to, cc or bcc. Applied client-side on Microsoft.
31364
+ */
31365
+ anyEmail?: string;
31366
+ /**
31367
+ * Applied client-side on Microsoft.
31368
+ */
31369
+ bcc?: string;
31370
+ before?: string;
31371
+ cc?: string;
31372
+ cursor?: string;
31373
+ /**
31374
+ * Well-known folder (`inbox`, `sent`, `drafts`, `trash`, `spam`, `archive`) or a provider folder id from `GET /v1/email/folders`. Default inbox.
31375
+ */
31376
+ folder?: string;
31377
+ /**
31378
+ * Sender address.
31379
+ */
31380
+ from?: string;
31381
+ hasAttachment?: boolean;
31382
+ limit?: number;
31383
+ /**
31384
+ * The provider's own search syntax (Gmail search operators, Microsoft KQL). On Microsoft it cannot be combined with other filters or server-side ordering; those are applied to the page.
31385
+ */
31386
+ searchQueryNative?: string;
31387
+ sortOrder?: 'asc' | 'desc';
31388
+ starred?: boolean;
31389
+ /**
31390
+ * Substring match on the subject.
31391
+ */
31392
+ subject?: string;
31393
+ /**
31394
+ * A recipient address.
31395
+ */
31396
+ to?: string;
31397
+ unread?: boolean;
31398
+ };
31399
+ };
31400
+
31401
+ export type ListEmailThreadsResponse = ({
31402
+ data?: Array<EmailThread>;
31403
+ pagination?: CursorPagination;
31404
+ meta?: EmailListMeta;
31405
+ });
31406
+
31407
+ export type ListEmailThreadsError = (ErrorResponse);
31408
+
31409
+ export type GetEmailThreadData = {
31410
+ path: {
31411
+ threadId: string;
31412
+ };
31413
+ query: {
31414
+ /**
31415
+ * The connected Google or Microsoft account.
31416
+ */
31417
+ accountId: string;
31418
+ };
31419
+ };
31420
+
31421
+ export type GetEmailThreadResponse = ({
31422
+ data?: (EmailThread & {
31423
+ messages?: Array<EmailMessage>;
31424
+ });
31425
+ });
31426
+
31427
+ export type GetEmailThreadError = (ErrorResponse | {
31428
+ error?: string;
31429
+ });
31430
+
31431
+ export type UpdateEmailThreadData = {
31432
+ body: EmailMessagePatch;
31433
+ path: {
31434
+ threadId: string;
31435
+ };
31436
+ };
31437
+
31438
+ export type UpdateEmailThreadResponse = ({
31439
+ data?: EmailThread;
31440
+ });
31441
+
31442
+ export type UpdateEmailThreadError = (ErrorResponse | {
31443
+ error?: string;
31444
+ });
31445
+
31446
+ export type ListEmailMessagesData = {
31447
+ query: {
31448
+ /**
31449
+ * The connected Google or Microsoft account.
31450
+ */
31451
+ accountId: string;
31452
+ after?: string;
31453
+ anyEmail?: string;
31454
+ bcc?: string;
31455
+ before?: string;
31456
+ cc?: string;
31457
+ cursor?: string;
31458
+ folder?: string;
31459
+ from?: string;
31460
+ hasAttachment?: boolean;
31461
+ limit?: number;
31462
+ searchQueryNative?: string;
31463
+ sortOrder?: 'asc' | 'desc';
31464
+ starred?: boolean;
31465
+ subject?: string;
31466
+ to?: string;
31467
+ unread?: boolean;
31468
+ };
31469
+ };
31470
+
31471
+ export type ListEmailMessagesResponse = ({
31472
+ data?: Array<EmailMessage>;
31473
+ pagination?: CursorPagination;
31474
+ meta?: EmailListMeta;
31475
+ });
31476
+
31477
+ export type ListEmailMessagesError = (ErrorResponse);
31478
+
31479
+ export type SendEmailMessageData = {
31480
+ body: SendEmailRequest;
31481
+ };
31482
+
31483
+ export type SendEmailMessageResponse = ({
31484
+ data?: EmailMessage;
31485
+ });
31486
+
31487
+ export type SendEmailMessageError = (ErrorResponse | {
31488
+ /**
31489
+ * Human-readable error message suitable for end-user display.
31490
+ */
31491
+ error: string;
31492
+ /**
31493
+ * Machine-readable error code. Stable across versions.
31494
+ */
31495
+ code: 'PAYMENT_REQUIRED';
31496
+ /**
31497
+ * Discriminator for which gate fired.
31498
+ */
31499
+ reason: 'free_tier_exceeded' | 'twitter_passthrough' | 'enterprise_required' | 'card_verification_required';
31500
+ /**
31501
+ * Link to the relevant documentation page.
31502
+ */
31503
+ documentation_url?: string;
31504
+ /**
31505
+ * Deep-link to send the end-user to. For
31506
+ * `free_tier_exceeded` and `twitter_passthrough` this opens
31507
+ * the add-payment-method drawer on the Zernio billing page.
31508
+ * For `enterprise_required` this is the Zernio enterprise
31509
+ * contact page.
31510
+ *
31511
+ */
31512
+ dashboard_url?: string;
31513
+ /**
31514
+ * Structured context for SDK clients that want to render their own UX. Keys vary by `reason`.
31515
+ */
31516
+ details?: {
31517
+ /**
31518
+ * How many accounts the free tier allows. Only set when reason=free_tier_exceeded.
31519
+ */
31520
+ free_tier_account_limit?: number;
31521
+ /**
31522
+ * How many accounts the team currently has connected. Set when reason=free_tier_exceeded or reason=enterprise_required.
31523
+ */
31524
+ current_account_count?: number;
31525
+ /**
31526
+ * Whether the team currently has a card on file in Stripe. Set when reason=free_tier_exceeded or reason=twitter_passthrough.
31527
+ */
31528
+ has_payment_method?: boolean;
31529
+ /**
31530
+ * One-time card verification charge in USD cents, credited to usage. Only set when reason=card_verification_required.
31531
+ */
31532
+ verification_amount_cents?: number;
31533
+ /**
31534
+ * The negotiated connected-account cap from the
31535
+ * team's enterprise contract. Self-service teams
31536
+ * have no cap and never receive this reason. Only
31537
+ * set when reason=enterprise_required.
31538
+ *
31539
+ */
31540
+ effective_account_limit?: number;
31541
+ };
31542
+ });
31543
+
31544
+ export type GetEmailMessageData = {
31545
+ path: {
31546
+ messageId: string;
31547
+ };
31548
+ query: {
31549
+ /**
31550
+ * The connected Google or Microsoft account.
31551
+ */
31552
+ accountId: string;
31553
+ /**
31554
+ * Include the raw internet headers under `headers`.
31555
+ */
31556
+ includeHeaders?: boolean;
31557
+ /**
31558
+ * Include the MIME source under `raw`.
31559
+ */
31560
+ raw?: boolean;
31561
+ };
31562
+ };
31563
+
31564
+ export type GetEmailMessageResponse = ({
31565
+ data?: EmailMessage;
31566
+ });
31567
+
31568
+ export type GetEmailMessageError = (ErrorResponse | {
31569
+ error?: string;
31570
+ });
31571
+
31572
+ export type UpdateEmailMessageData = {
31573
+ body: EmailMessagePatch;
31574
+ path: {
31575
+ messageId: string;
31576
+ };
31577
+ };
31578
+
31579
+ export type UpdateEmailMessageResponse = ({
31580
+ data?: EmailMessage;
31581
+ });
31582
+
31583
+ export type UpdateEmailMessageError = (ErrorResponse | {
31584
+ error?: string;
31585
+ });
31586
+
31587
+ export type TrashEmailMessageData = {
31588
+ path: {
31589
+ messageId: string;
31590
+ };
31591
+ query: {
31592
+ /**
31593
+ * The connected Google or Microsoft account.
31594
+ */
31595
+ accountId: string;
31596
+ };
31597
+ };
31598
+
31599
+ export type TrashEmailMessageResponse = ({
31600
+ data?: {
31601
+ id?: string;
31602
+ trashed?: boolean;
31603
+ };
31604
+ });
31605
+
31606
+ export type TrashEmailMessageError = (ErrorResponse | {
31607
+ error?: string;
31608
+ });
31609
+
31610
+ export type ReplyEmailMessageData = {
31611
+ body: (SendEmailRequest & {
31612
+ mode?: 'reply' | 'replyAll';
31613
+ /**
31614
+ * Optional on replies; the provider keeps the thread subject.
31615
+ */
31616
+ subject?: string;
31617
+ });
31618
+ path: {
31619
+ messageId: string;
31620
+ };
31621
+ };
31622
+
31623
+ export type ReplyEmailMessageResponse = ({
31624
+ data?: EmailMessage;
31625
+ });
31626
+
31627
+ export type ReplyEmailMessageError = (ErrorResponse | {
31628
+ /**
31629
+ * Human-readable error message suitable for end-user display.
31630
+ */
31631
+ error: string;
31632
+ /**
31633
+ * Machine-readable error code. Stable across versions.
31634
+ */
31635
+ code: 'PAYMENT_REQUIRED';
31636
+ /**
31637
+ * Discriminator for which gate fired.
31638
+ */
31639
+ reason: 'free_tier_exceeded' | 'twitter_passthrough' | 'enterprise_required' | 'card_verification_required';
31640
+ /**
31641
+ * Link to the relevant documentation page.
31642
+ */
31643
+ documentation_url?: string;
31644
+ /**
31645
+ * Deep-link to send the end-user to. For
31646
+ * `free_tier_exceeded` and `twitter_passthrough` this opens
31647
+ * the add-payment-method drawer on the Zernio billing page.
31648
+ * For `enterprise_required` this is the Zernio enterprise
31649
+ * contact page.
31650
+ *
31651
+ */
31652
+ dashboard_url?: string;
31653
+ /**
31654
+ * Structured context for SDK clients that want to render their own UX. Keys vary by `reason`.
31655
+ */
31656
+ details?: {
31657
+ /**
31658
+ * How many accounts the free tier allows. Only set when reason=free_tier_exceeded.
31659
+ */
31660
+ free_tier_account_limit?: number;
31661
+ /**
31662
+ * How many accounts the team currently has connected. Set when reason=free_tier_exceeded or reason=enterprise_required.
31663
+ */
31664
+ current_account_count?: number;
31665
+ /**
31666
+ * Whether the team currently has a card on file in Stripe. Set when reason=free_tier_exceeded or reason=twitter_passthrough.
31667
+ */
31668
+ has_payment_method?: boolean;
31669
+ /**
31670
+ * One-time card verification charge in USD cents, credited to usage. Only set when reason=card_verification_required.
31671
+ */
31672
+ verification_amount_cents?: number;
31673
+ /**
31674
+ * The negotiated connected-account cap from the
31675
+ * team's enterprise contract. Self-service teams
31676
+ * have no cap and never receive this reason. Only
31677
+ * set when reason=enterprise_required.
31678
+ *
31679
+ */
31680
+ effective_account_limit?: number;
31681
+ };
31682
+ } | {
31683
+ error?: string;
31684
+ });
31685
+
31686
+ export type ListEmailFoldersData = {
31687
+ query: {
31688
+ /**
31689
+ * The connected Google or Microsoft account.
31690
+ */
31691
+ accountId: string;
31692
+ };
31693
+ };
31694
+
31695
+ export type ListEmailFoldersResponse = ({
31696
+ data?: Array<EmailFolder>;
31697
+ });
31698
+
31699
+ export type ListEmailFoldersError = (ErrorResponse);
31700
+
31701
+ export type DownloadEmailAttachmentData = {
31702
+ path: {
31703
+ attachmentId: string;
31704
+ };
31705
+ query: {
31706
+ /**
31707
+ * The connected Google or Microsoft account.
31708
+ */
31709
+ accountId: string;
31710
+ messageId: string;
31711
+ };
31712
+ };
31713
+
31714
+ export type DownloadEmailAttachmentResponse = ((Blob | File));
31715
+
31716
+ export type DownloadEmailAttachmentError = (ErrorResponse | {
31717
+ error?: string;
31718
+ });
31719
+
31720
+ export type ListCalendarsData = {
31721
+ query: {
31722
+ /**
31723
+ * The connected Google or Microsoft account.
31724
+ */
31725
+ accountId: string;
31726
+ };
31727
+ };
31728
+
31729
+ export type ListCalendarsResponse = ({
31730
+ data?: Array<Calendar>;
31731
+ });
31732
+
31733
+ export type ListCalendarsError = (ErrorResponse);
31734
+
31735
+ export type ListCalendarEventsData = {
31736
+ query: {
31737
+ /**
31738
+ * The connected Google or Microsoft account.
31739
+ */
31740
+ accountId: string;
31741
+ /**
31742
+ * Defaults to the primary calendar.
31743
+ */
31744
+ calendarId?: string;
31745
+ cursor?: string;
31746
+ expandRecurring?: boolean;
31747
+ from: string;
31748
+ icalUid?: string;
31749
+ limit?: number;
31750
+ location?: string;
31751
+ showCancelled?: boolean;
31752
+ sortOrder?: 'asc' | 'desc';
31753
+ /**
31754
+ * IANA zone the `start` and `end` offsets are rendered in. Default UTC.
31755
+ */
31756
+ timezone?: string;
31757
+ title?: string;
31758
+ to: string;
31759
+ };
31760
+ };
31761
+
31762
+ export type ListCalendarEventsResponse = ({
31763
+ data?: Array<CalendarEvent>;
31764
+ pagination?: CursorPagination;
31765
+ });
31766
+
31767
+ export type ListCalendarEventsError = (ErrorResponse);
31768
+
31769
+ export type CreateCalendarEventData = {
31770
+ body: CreateCalendarEventRequest;
31771
+ };
31772
+
31773
+ export type CreateCalendarEventResponse = ({
31774
+ data?: CalendarEvent;
31775
+ });
31776
+
31777
+ export type CreateCalendarEventError = (ErrorResponse);
31778
+
31779
+ export type GetCalendarEventData = {
31780
+ path: {
31781
+ eventId: string;
31782
+ };
31783
+ query: {
31784
+ /**
31785
+ * The connected Google or Microsoft account.
31786
+ */
31787
+ accountId: string;
31788
+ /**
31789
+ * The calendar holding the event (an id from GET /v1/calendar/calendars). Defaults to the primary calendar.
31790
+ */
31791
+ calendarId?: string;
31792
+ timezone?: string;
31793
+ };
31794
+ };
31795
+
31796
+ export type GetCalendarEventResponse = ({
31797
+ data?: CalendarEvent;
31798
+ });
31799
+
31800
+ export type GetCalendarEventError = (ErrorResponse | {
31801
+ error?: string;
31802
+ });
31803
+
31804
+ export type UpdateCalendarEventData = {
31805
+ body: ({
31806
+ accountId: string;
31807
+ /**
31808
+ * The calendar holding the event (an id from GET /v1/calendar/calendars). Defaults to the primary calendar.
31809
+ */
31810
+ calendarId?: string;
31811
+ } & CalendarEventFields);
31812
+ path: {
31813
+ eventId: string;
31814
+ };
31815
+ };
31816
+
31817
+ export type UpdateCalendarEventResponse = ({
31818
+ data?: CalendarEvent;
31819
+ });
31820
+
31821
+ export type UpdateCalendarEventError = (ErrorResponse | {
31822
+ error?: string;
31823
+ });
31824
+
31825
+ export type DeleteCalendarEventData = {
31826
+ path: {
31827
+ eventId: string;
31828
+ };
31829
+ query: {
31830
+ /**
31831
+ * The connected Google or Microsoft account.
31832
+ */
31833
+ accountId: string;
31834
+ /**
31835
+ * The calendar holding the event (an id from GET /v1/calendar/calendars). Defaults to the primary calendar.
31836
+ */
31837
+ calendarId?: string;
31838
+ };
31839
+ };
31840
+
31841
+ export type DeleteCalendarEventResponse = ({
31842
+ data?: {
31843
+ id?: string;
31844
+ deleted?: boolean;
31845
+ };
31846
+ });
31847
+
31848
+ export type DeleteCalendarEventError = (ErrorResponse | {
31849
+ error?: string;
31850
+ });
31851
+
31852
+ export type RsvpCalendarEventData = {
31853
+ body: {
31854
+ accountId: string;
31855
+ /**
31856
+ * The calendar holding the event (an id from GET /v1/calendar/calendars). Defaults to the primary calendar.
31857
+ */
31858
+ calendarId?: string;
31859
+ status: 'accepted' | 'declined' | 'tentative';
31860
+ comment?: string;
31861
+ };
31862
+ path: {
31863
+ eventId: string;
31864
+ };
31865
+ };
31866
+
31867
+ export type RsvpCalendarEventResponse = ({
31868
+ data?: CalendarEvent;
31869
+ });
31870
+
31871
+ export type RsvpCalendarEventError = (ErrorResponse | {
31872
+ error?: string;
31873
+ });
31874
+
31875
+ export type CalendarFreeBusyData = {
31876
+ body: {
31877
+ accountIds: Array<(string)>;
31878
+ from: string;
31879
+ to: string;
31880
+ };
31881
+ };
31882
+
31883
+ export type CalendarFreeBusyResponse = ({
31884
+ data?: Array<{
31885
+ accountId?: string;
31886
+ from?: string;
31887
+ to?: string;
31888
+ busy?: Array<BusyBlock>;
31889
+ }>;
31890
+ });
31891
+
31892
+ export type CalendarFreeBusyError = (ErrorResponse);
31893
+
31894
+ export type CalendarAvailabilityData = {
31895
+ body: {
31896
+ participants: Array<{
31897
+ accountId: string;
31898
+ openHours?: OpenHours;
31899
+ }>;
31900
+ from: string;
31901
+ to: string;
31902
+ durationMinutes: number;
31903
+ intervalMinutes?: number;
31904
+ /**
31905
+ * Rounds the first candidate slot up to this many minutes.
31906
+ */
31907
+ roundTo?: number;
31908
+ buffer?: {
31909
+ before?: number;
31910
+ after?: number;
31911
+ };
31912
+ defaultOpenHours?: OpenHours;
31913
+ method?: 'collective' | 'max_availability';
31914
+ };
31915
+ };
31916
+
31917
+ export type CalendarAvailabilityResponse = ({
31918
+ data?: {
31919
+ timeSlots?: Array<{
31920
+ from?: string;
31921
+ to?: string;
31922
+ /**
31923
+ * The participants free in this slot.
31924
+ */
31925
+ accountIds?: Array<(string)>;
31926
+ }>;
31927
+ };
31928
+ });
31929
+
31930
+ export type CalendarAvailabilityError = (ErrorResponse);
31931
+
31932
+ export type ListFilesData = {
31933
+ query: {
31934
+ /**
31935
+ * The connected Google or Microsoft account.
31936
+ */
31937
+ accountId: string;
31938
+ cursor?: string;
31939
+ /**
31940
+ * Provider folder id; omit for the root.
31941
+ */
31942
+ folderId?: string;
31943
+ limit?: number;
31944
+ /**
31945
+ * Name search.
31946
+ */
31947
+ q?: string;
31948
+ };
31949
+ };
31950
+
31951
+ export type ListFilesResponse = ({
31952
+ data?: Array<FileItem>;
31953
+ pagination?: {
31954
+ hasMore?: boolean;
31955
+ nextCursor?: (string) | null;
31956
+ };
31957
+ });
31958
+
31959
+ export type ListFilesError = (ErrorResponse);
31960
+
31961
+ export type UploadFileData = {
31962
+ body: {
31963
+ accountId: string;
31964
+ name: string;
31965
+ contentType: string;
31966
+ /**
31967
+ * Target folder; the root when omitted.
31968
+ */
31969
+ parentId?: string;
31970
+ url: string;
31971
+ /**
31972
+ * Google Drive only: import the bytes as a Docs, Sheets or Slides file (a text or Office file becomes an editable document). OneDrive answers 400.
31973
+ */
31974
+ convertTo?: 'application/vnd.google-apps.document' | 'application/vnd.google-apps.spreadsheet' | 'application/vnd.google-apps.presentation';
31975
+ };
31976
+ };
31977
+
31978
+ export type UploadFileResponse = ({
31979
+ data?: FileItem;
31980
+ });
31981
+
31982
+ export type UploadFileError = (ErrorResponse);
31983
+
31984
+ export type CreateFolderData = {
31985
+ body: {
31986
+ accountId: string;
31987
+ name: string;
31988
+ parentId?: string;
31989
+ };
31990
+ };
31991
+
31992
+ export type CreateFolderResponse = ({
31993
+ data?: FileItem;
31994
+ });
31995
+
31996
+ export type CreateFolderError = (ErrorResponse);
31997
+
31998
+ export type CreateFilePickerSessionData = {
31999
+ body: {
32000
+ /**
32001
+ * A Google account connected with `scopes=files`.
32002
+ */
32003
+ accountId: string;
32004
+ /**
32005
+ * Where the browser goes when the user finishes. Absolute `http(s)` URL or a custom app scheme (`myapp://...`); relative, protocol-relative and script URLs are refused. Optional when you rely on the `file.picked` webhook.
32006
+ */
32007
+ redirectUrl?: string;
32008
+ /**
32009
+ * Drive file ids to show the user first (Google Picker `DocsView.setFileIds`), for example to ask for access to files your app already knows about. Pre-navigation only: the user still has to pick them.
32010
+ */
32011
+ fileIds?: Array<(string)>;
32012
+ /**
32013
+ * Only show files of these exact media types.
32014
+ */
32015
+ mimeTypes?: Array<(string)>;
32016
+ /**
32017
+ * false limits the pick to one file.
32018
+ */
32019
+ multiselect?: boolean;
32020
+ };
32021
+ };
32022
+
32023
+ export type CreateFilePickerSessionResponse = ({
32024
+ data?: FilePickerSession;
32025
+ });
32026
+
32027
+ export type CreateFilePickerSessionError = (ErrorResponse | {
32028
+ error?: string;
32029
+ });
32030
+
32031
+ export type GetFileData = {
32032
+ path: {
32033
+ fileId: string;
32034
+ };
32035
+ query: {
32036
+ /**
32037
+ * The connected Google or Microsoft account.
32038
+ */
32039
+ accountId: string;
32040
+ };
32041
+ };
32042
+
32043
+ export type GetFileResponse = ({
32044
+ data?: FileItem;
32045
+ });
32046
+
32047
+ export type GetFileError = (ErrorResponse | {
32048
+ error?: string;
32049
+ });
32050
+
32051
+ export type UpdateFileData = {
32052
+ body: {
32053
+ accountId: string;
32054
+ name?: string;
32055
+ parentId?: string;
32056
+ };
32057
+ path: {
32058
+ fileId: string;
32059
+ };
32060
+ };
32061
+
32062
+ export type UpdateFileResponse = ({
32063
+ data?: FileItem;
32064
+ });
32065
+
32066
+ export type UpdateFileError = (ErrorResponse | {
32067
+ error?: string;
32068
+ });
32069
+
32070
+ export type TrashFileData = {
32071
+ path: {
32072
+ fileId: string;
32073
+ };
32074
+ query: {
32075
+ /**
32076
+ * The connected Google or Microsoft account.
32077
+ */
32078
+ accountId: string;
32079
+ };
32080
+ };
32081
+
32082
+ export type TrashFileResponse = ({
32083
+ data?: {
32084
+ id?: string;
32085
+ /**
32086
+ * Always true.
32087
+ */
32088
+ trashed?: boolean;
32089
+ };
32090
+ });
32091
+
32092
+ export type TrashFileError = (ErrorResponse | {
32093
+ error?: string;
32094
+ });
32095
+
32096
+ export type DownloadFileData = {
32097
+ path: {
32098
+ fileId: string;
32099
+ };
32100
+ query: {
32101
+ /**
32102
+ * The connected Google or Microsoft account.
32103
+ */
32104
+ accountId: string;
32105
+ };
32106
+ };
32107
+
32108
+ export type DownloadFileResponse = ((Blob | File));
32109
+
32110
+ export type DownloadFileError = (ErrorResponse | {
32111
+ error?: string;
32112
+ });
32113
+
32114
+ export type GetFileShareLinkData = {
32115
+ path: {
32116
+ fileId: string;
32117
+ };
32118
+ query: {
32119
+ /**
32120
+ * The connected Google or Microsoft account.
32121
+ */
32122
+ accountId: string;
32123
+ };
32124
+ };
32125
+
32126
+ export type GetFileShareLinkResponse = ({
32127
+ data?: FileShareLink;
32128
+ });
32129
+
32130
+ export type GetFileShareLinkError = (ErrorResponse | {
32131
+ error?: string;
32132
+ });
32133
+
32134
+ export type StartMicrosoftAdminConsentData = {
32135
+ query: {
32136
+ accountId: string;
32137
+ /**
32138
+ * Where to send the administrator afterwards.
32139
+ */
32140
+ redirectUrl?: string;
32141
+ };
32142
+ };
32143
+
32144
+ export type StartMicrosoftAdminConsentResponse = ({
32145
+ data?: {
32146
+ adminConsentUrl?: string;
32147
+ };
32148
+ });
32149
+
32150
+ export type StartMicrosoftAdminConsentError = (ErrorResponse | {
32151
+ error?: string;
32152
+ });
32153
+
30810
32154
  export type ListInboxConversationsData = {
30811
32155
  query?: {
30812
32156
  /**
@@ -30968,9 +32312,17 @@ export type CreateInboxConversationData = {
30968
32312
  */
30969
32313
  participantUsername?: string;
30970
32314
  /**
30971
- * Text content of the message. At least one of message, attachment, or (for WhatsApp) templateName is required. Required when category is set (a Direct Send utility message is a text message).
32315
+ * Text content of the message. At least one of message, attachment, or (for WhatsApp) templateName is required. Required when category is set (a Direct Send utility message is a text message). Required on email accounts.
30972
32316
  */
30973
32317
  message?: string;
32318
+ /**
32319
+ * Email accounts only (Google / Microsoft). Subject of the new thread.
32320
+ */
32321
+ subject?: string;
32322
+ /**
32323
+ * Email accounts only (Google / Microsoft). Extra recipients copied on the opening mail.
32324
+ */
32325
+ cc?: Array<(string)>;
30974
32326
  /**
30975
32327
  * X only. Skip the receives_your_dm eligibility check before sending. Use if you have already verified the recipient accepts DMs.
30976
32328
  */
@@ -31649,6 +33001,10 @@ export type SendInboxMessageData = {
31649
33001
  * iMessage only (JSON body only). Bold title line rendered above the message text. Rejected with 400 on other platforms; ignored on voice-message sends.
31650
33002
  */
31651
33003
  subject?: string;
33004
+ /**
33005
+ * Email threads only (Google / Microsoft accounts, JSON body only). Extra recipients copied on the reply.
33006
+ */
33007
+ cc?: Array<(string)>;
31652
33008
  /**
31653
33009
  * iMessage only (JSON body only). Apple screen/bubble animation played when the message arrives. Rejected with 400 on other platforms.
31654
33010
  */
@@ -41582,7 +42938,7 @@ export type GetWhatsAppFlowsEncryptionKeyError = (ErrorResponse | {
41582
42938
  /**
41583
42939
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
41584
42940
  */
41585
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
42941
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
41586
42942
  } | unknown);
41587
42943
 
41588
42944
  export type SetWhatsAppFlowsEncryptionKeyData = {
@@ -41608,7 +42964,7 @@ export type SetWhatsAppFlowsEncryptionKeyError = (ErrorResponse | {
41608
42964
  /**
41609
42965
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
41610
42966
  */
41611
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
42967
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
41612
42968
  } | unknown);
41613
42969
 
41614
42970
  export type SendWhatsAppFlowMessageData = {
@@ -52231,7 +53587,7 @@ export type BoostPostResponse = ({
52231
53587
  message?: string;
52232
53588
  instagramVideoFallback?: InstagramVideoFallback;
52233
53589
  /**
52234
- * Present with instagramVideoFallback: one human-readable line saying how the Instagram video was boosted.
53590
+ * Present with instagramVideoFallback: one human-readable line saying how the Instagram video was boosted. On Meta also present, as an entry starting with `activation_failed:`, when Meta refused the final switch to ACTIVE of the campaign, ad set or ad this boost created: nothing was deleted, `message` says not everything is ACTIVE, and the entry names what was kept PAUSED and what was switched ACTIVE, and quotes Meta's error and the status calls that switch the PAUSED ones on later. A retry without Idempotency-Key inside the 10-minute dedup window that finds the stored ad PAUSED although it asks for ACTIVE gets a `replayed_paused:` entry with the same status calls instead.
52235
53591
  */
52236
53592
  warnings?: Array<(string)>;
52237
53593
  });
@@ -53659,12 +55015,20 @@ export type CreateStandaloneAdResponse = ({
53659
55015
  ad?: Ad;
53660
55016
  appliedDefaults?: AdAppliedDefaults;
53661
55017
  message?: string;
55018
+ /**
55019
+ * Meta only, present only when needed. An `activation_failed:` entry means Meta refused the final switch to ACTIVE: the entry names what was kept PAUSED (the ad, and its ad set or campaign when Meta refused those) and what was switched ACTIVE, and quotes Meta's error and the status calls that switch the PAUSED ones on later.
55020
+ */
55021
+ warnings?: Array<(string)>;
53662
55022
  } | {
53663
55023
  ads?: Array<Ad>;
53664
55024
  platformCampaignId?: string;
53665
55025
  platformAdSetId?: string;
53666
55026
  appliedDefaults?: AdAppliedDefaults;
53667
55027
  message?: string;
55028
+ /**
55029
+ * Meta only, present only when needed. An `activation_failed:` entry means Meta refused the final switch to ACTIVE for the ads it names (or for their ad set or campaign): the entry names what was kept PAUSED and what was switched ACTIVE, and quotes Meta's error and the status calls that switch the PAUSED ones on later.
55030
+ */
55031
+ warnings?: Array<(string)>;
53668
55032
  }));
53669
55033
 
53670
55034
  export type CreateStandaloneAdError = (unknown | ErrorResponse);
@@ -61242,7 +62606,7 @@ export type PrepareMediaError = (ErrorResponse | {
61242
62606
  /**
61243
62607
  * The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.
61244
62608
  */
61245
- required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks';
62609
+ required_group?: 'publishing' | 'engagement' | 'messages' | 'contacts' | 'analytics' | 'ads' | 'telephony' | 'accounts' | 'billing' | 'webhooks' | 'commerce' | 'calendar' | 'files';
61246
62610
  } | unknown);
61247
62611
 
61248
62612
  export type ListChangelogData = {