late-sdk 0.0.672 → 0.0.673

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.
data/openapi.yaml CHANGED
@@ -543,6 +543,36 @@ components:
543
543
  error:
544
544
  type: string
545
545
  example: Not found
546
+ ResourceGroupForbidden:
547
+ description: >-
548
+ The API key is a restricted key (zrk_ prefix) and may not perform this
549
+ operation. Three cases. (1) The operation's resource group (see the
550
+ operation's x-resource-group) is disabled on the key: fix it by
551
+ creating a key with the group enabled in the dashboard API keys tab
552
+ and revoking the old one. (2) The operation is admin-plane
553
+ (x-resource-group admin-plane: API keys, invites, connected apps,
554
+ member identity), which is never grantable to restricted keys; the
555
+ error reads "Restricted API keys cannot manage API keys, invites, or
556
+ member identity." and the fix is a full-access key or the dashboard,
557
+ never a new restricted key. (3) On webhook subscription writes and
558
+ delivery-log reads, a named event maps to a resource group the key
559
+ does not hold (a no-messages key cannot subscribe to or replay
560
+ message.* events).
561
+ content:
562
+ application/json:
563
+ schema:
564
+ type: object
565
+ properties:
566
+ error:
567
+ type: string
568
+ example: "This API key has the 'messages' resource group disabled. GET /api/v1/inbox/conversations requires it. Create a key with 'messages' enabled in the dashboard API keys tab."
569
+ code:
570
+ type: string
571
+ enum: [insufficient_permissions, unclassified_resource]
572
+ required_group:
573
+ type: string
574
+ description: 'The resource group the key needs for this operation. Absent on admin-plane and unclassified-path denials.'
575
+ enum: [publishing, engagement, messages, contacts, analytics, ads, telephony, accounts, billing, webhooks]
546
576
  RateLimited:
547
577
  description: |
548
578
  The connected account's upstream platform quota is exhausted.
@@ -5781,6 +5811,19 @@ components:
5781
5811
  enum: [read-write, read]
5782
5812
  description: "'read-write' allows all operations, 'read' restricts to GET requests only"
5783
5813
  default: read-write
5814
+ disabledResourceGroups:
5815
+ type: array
5816
+ items:
5817
+ type: string
5818
+ enum: [publishing, engagement, messages, contacts, analytics, ads, telephony, accounts, billing, webhooks]
5819
+ description: >-
5820
+ Resource groups this key can NOT access (opt-out denylist). Absent
5821
+ or empty means legacy full access. A key with any group disabled is
5822
+ a restricted key (zrk_ prefix) and can never manage API keys,
5823
+ invites, or member identity. Each operation's group is published as
5824
+ x-resource-group. With 'messages' disabled, the KEY cannot access
5825
+ private messages; the ACCOUNT's pre-existing webhook subscriptions
5826
+ are a separate grant surface.
5784
5827
  ConnectedApp:
5785
5828
  type: object
5786
5829
  description: |
@@ -8708,6 +8751,7 @@ paths:
8708
8751
  # ============================================
8709
8752
  /v1/tools/validate/post-length:
8710
8753
  post:
8754
+ x-resource-group: "publishing"
8711
8755
  operationId: validatePostLength
8712
8756
  tags: [Validate]
8713
8757
  summary: Validate character count
@@ -8758,6 +8802,7 @@ paths:
8758
8802
 
8759
8803
  /v1/tools/validate/post:
8760
8804
  post:
8805
+ x-resource-group: "publishing"
8761
8806
  operationId: validatePost
8762
8807
  tags: [Validate]
8763
8808
  summary: Validate post content
@@ -8845,6 +8890,7 @@ paths:
8845
8890
 
8846
8891
  /v1/tools/validate/media:
8847
8892
  post:
8893
+ x-resource-group: "publishing"
8848
8894
  operationId: validateMedia
8849
8895
  tags: [Validate]
8850
8896
  summary: Validate media URL
@@ -8901,6 +8947,7 @@ paths:
8901
8947
 
8902
8948
  /v1/tools/validate/subreddit:
8903
8949
  get:
8950
+ x-resource-group: "publishing"
8904
8951
  operationId: validateSubreddit
8905
8952
  tags: [Validate]
8906
8953
  summary: Check subreddit existence
@@ -8957,6 +9004,7 @@ paths:
8957
9004
  # ============================================
8958
9005
  /v1/analytics:
8959
9006
  get:
9007
+ x-resource-group: "analytics"
8960
9008
  operationId: getAnalytics
8961
9009
  tags: [Analytics]
8962
9010
  summary: Get post analytics
@@ -9191,6 +9239,7 @@ paths:
9191
9239
 
9192
9240
  /v1/analytics/youtube/channel-insights:
9193
9241
  get:
9242
+ x-resource-group: "analytics"
9194
9243
  operationId: getYouTubeChannelInsights
9195
9244
  tags: [Analytics]
9196
9245
  summary: Get YouTube channel insights
@@ -9274,6 +9323,7 @@ paths:
9274
9323
 
9275
9324
  /v1/analytics/linkedin/org-aggregate-analytics:
9276
9325
  get:
9326
+ x-resource-group: "analytics"
9277
9327
  operationId: getLinkedInOrgAggregateAnalytics
9278
9328
  tags: [Analytics]
9279
9329
  summary: Get LinkedIn org analytics
@@ -9379,6 +9429,7 @@ paths:
9379
9429
 
9380
9430
  /v1/analytics/tiktok/account-insights:
9381
9431
  get:
9432
+ x-resource-group: "analytics"
9382
9433
  operationId: getTikTokAccountInsights
9383
9434
  tags: [Analytics]
9384
9435
  summary: Get TikTok account-level insights
@@ -9461,6 +9512,7 @@ paths:
9461
9512
 
9462
9513
  /v1/analytics/youtube/daily-views:
9463
9514
  get:
9515
+ x-resource-group: "analytics"
9464
9516
  operationId: getYouTubeDailyViews
9465
9517
  tags: [Analytics]
9466
9518
  summary: Get YouTube daily views
@@ -9597,6 +9649,7 @@ paths:
9597
9649
 
9598
9650
  /v1/analytics/youtube/video-retention:
9599
9651
  get:
9652
+ x-resource-group: "analytics"
9600
9653
  operationId: getYouTubeVideoRetention
9601
9654
  tags: [Analytics]
9602
9655
  summary: Get YouTube video retention curve
@@ -9737,6 +9790,7 @@ paths:
9737
9790
 
9738
9791
  /v1/analytics/facebook/page-insights:
9739
9792
  get:
9793
+ x-resource-group: "analytics"
9740
9794
  operationId: getFacebookPageInsights
9741
9795
  tags: [Analytics]
9742
9796
  summary: Get Facebook Page insights
@@ -9909,6 +9963,7 @@ paths:
9909
9963
 
9910
9964
  /v1/analytics/facebook/post-earnings:
9911
9965
  get:
9966
+ x-resource-group: "analytics"
9912
9967
  operationId: getFacebookPostEarnings
9913
9968
  tags: [Analytics]
9914
9969
  summary: Get Facebook post monetization earnings
@@ -10014,6 +10069,7 @@ paths:
10014
10069
 
10015
10070
  /v1/analytics/instagram/account-insights:
10016
10071
  get:
10072
+ x-resource-group: "analytics"
10017
10073
  operationId: getInstagramAccountInsights
10018
10074
  tags: [Analytics]
10019
10075
  summary: Get Instagram insights
@@ -10161,6 +10217,7 @@ paths:
10161
10217
 
10162
10218
  /v1/analytics/instagram/follower-history:
10163
10219
  get:
10220
+ x-resource-group: "analytics"
10164
10221
  operationId: getInstagramFollowerHistory
10165
10222
  tags: [Analytics]
10166
10223
  summary: Get Instagram follower history
@@ -10220,6 +10277,7 @@ paths:
10220
10277
 
10221
10278
  /v1/analytics/instagram/demographics:
10222
10279
  get:
10280
+ x-resource-group: "analytics"
10223
10281
  operationId: getInstagramDemographics
10224
10282
  tags: [Analytics]
10225
10283
  summary: Get Instagram demographics
@@ -10340,6 +10398,7 @@ paths:
10340
10398
 
10341
10399
  /v1/analytics/youtube/demographics:
10342
10400
  get:
10401
+ x-resource-group: "analytics"
10343
10402
  operationId: getYouTubeDemographics
10344
10403
  tags: [Analytics]
10345
10404
  summary: Get YouTube demographics
@@ -10496,6 +10555,7 @@ paths:
10496
10555
 
10497
10556
  /v1/analytics/daily-metrics:
10498
10557
  get:
10558
+ x-resource-group: "analytics"
10499
10559
  operationId: getDailyMetrics
10500
10560
  tags: [Analytics]
10501
10561
  summary: Get daily aggregated metrics
@@ -10626,6 +10686,7 @@ paths:
10626
10686
 
10627
10687
  /v1/analytics/best-time:
10628
10688
  get:
10689
+ x-resource-group: "analytics"
10629
10690
  operationId: getBestTimeToPost
10630
10691
  tags: [Analytics]
10631
10692
  summary: Get best times to post
@@ -10699,6 +10760,7 @@ paths:
10699
10760
 
10700
10761
  /v1/analytics/content-decay:
10701
10762
  get:
10763
+ x-resource-group: "analytics"
10702
10764
  operationId: getContentDecay
10703
10765
  tags: [Analytics]
10704
10766
  summary: Get content performance decay
@@ -10790,6 +10852,7 @@ paths:
10790
10852
 
10791
10853
  /v1/analytics/posting-frequency:
10792
10854
  get:
10855
+ x-resource-group: "analytics"
10793
10856
  operationId: getPostingFrequency
10794
10857
  tags: [Analytics]
10795
10858
  summary: Get frequency vs engagement
@@ -10868,6 +10931,7 @@ paths:
10868
10931
 
10869
10932
  /v1/analytics/post-timeline:
10870
10933
  get:
10934
+ x-resource-group: "analytics"
10871
10935
  operationId: getPostTimeline
10872
10936
  tags: [Analytics]
10873
10937
  summary: Get post analytics timeline
@@ -10982,6 +11046,7 @@ paths:
10982
11046
 
10983
11047
  /v1/analytics/googlebusiness/performance:
10984
11048
  get:
11049
+ x-resource-group: "analytics"
10985
11050
  operationId: getGoogleBusinessPerformance
10986
11051
  tags: [Analytics]
10987
11052
  summary: Get GBP performance metrics
@@ -11106,6 +11171,7 @@ paths:
11106
11171
 
11107
11172
  /v1/analytics/googlebusiness/search-keywords:
11108
11173
  get:
11174
+ x-resource-group: "analytics"
11109
11175
  operationId: getGoogleBusinessSearchKeywords
11110
11176
  tags: [Analytics]
11111
11177
  summary: Get GBP search keywords
@@ -11203,6 +11269,7 @@ paths:
11203
11269
  # at 365 days.
11204
11270
  /v1/analytics/inbox/volume:
11205
11271
  get:
11272
+ x-resource-group: "analytics"
11206
11273
  operationId: getInboxVolume
11207
11274
  tags: [Inbox Analytics]
11208
11275
  summary: Get inbox messaging volume
@@ -11294,6 +11361,7 @@ paths:
11294
11361
 
11295
11362
  /v1/analytics/inbox/heatmap:
11296
11363
  get:
11364
+ x-resource-group: "analytics"
11297
11365
  operationId: getInboxHeatmap
11298
11366
  tags: [Inbox Analytics]
11299
11367
  summary: Get day × hour heatmap
@@ -11368,6 +11436,7 @@ paths:
11368
11436
 
11369
11437
  /v1/analytics/inbox/source-breakdown:
11370
11438
  get:
11439
+ x-resource-group: "analytics"
11371
11440
  operationId: getInboxSourceBreakdown
11372
11441
  tags: [Inbox Analytics]
11373
11442
  summary: Get inbox source breakdown
@@ -11443,6 +11512,7 @@ paths:
11443
11512
 
11444
11513
  /v1/analytics/inbox/response-time:
11445
11514
  get:
11515
+ x-resource-group: "analytics"
11446
11516
  operationId: getInboxResponseTime
11447
11517
  tags: [Inbox Analytics]
11448
11518
  summary: Get inbox response-time stats
@@ -11525,6 +11595,7 @@ paths:
11525
11595
 
11526
11596
  /v1/analytics/inbox/top-accounts:
11527
11597
  get:
11598
+ x-resource-group: "analytics"
11528
11599
  operationId: getInboxTopAccounts
11529
11600
  tags: [Inbox Analytics]
11530
11601
  summary: Get top accounts by inbox volume
@@ -11601,6 +11672,7 @@ paths:
11601
11672
 
11602
11673
  /v1/analytics/inbox/conversations:
11603
11674
  get:
11675
+ x-resource-group: "messages"
11604
11676
  operationId: listInboxConversationAnalytics
11605
11677
  tags: [Inbox Analytics]
11606
11678
  summary: List conversation analytics
@@ -11706,6 +11778,7 @@ paths:
11706
11778
 
11707
11779
  /v1/analytics/inbox/conversations/{conversationId}:
11708
11780
  get:
11781
+ x-resource-group: "messages"
11709
11782
  operationId: getInboxConversationAnalytics
11710
11783
  tags: [Inbox Analytics]
11711
11784
  summary: Get conversation analytics
@@ -11804,6 +11877,7 @@ paths:
11804
11877
 
11805
11878
  /v1/account-groups:
11806
11879
  get:
11880
+ x-resource-group: "accounts"
11807
11881
  operationId: listAccountGroups
11808
11882
  tags: [Account Groups]
11809
11883
  summary: List groups
@@ -11851,6 +11925,7 @@ paths:
11851
11925
  - "64e1f0a9e2b5af0012ab34cf"
11852
11926
  '401': { $ref: '#/components/responses/Unauthorized' }
11853
11927
  post:
11928
+ x-resource-group: "accounts"
11854
11929
  operationId: createAccountGroup
11855
11930
  tags: [Account Groups]
11856
11931
  summary: Create group
@@ -11911,6 +11986,7 @@ paths:
11911
11986
  '409': { description: Group name already exists }
11912
11987
  /v1/account-groups/{groupId}:
11913
11988
  put:
11989
+ x-resource-group: "accounts"
11914
11990
  operationId: updateAccountGroup
11915
11991
  tags: [Account Groups]
11916
11992
  summary: Update group
@@ -11962,6 +12038,7 @@ paths:
11962
12038
  '404': { $ref: '#/components/responses/NotFound' }
11963
12039
  '409': { description: Group name already exists }
11964
12040
  delete:
12041
+ x-resource-group: "accounts"
11965
12042
  operationId: deleteAccountGroup
11966
12043
  tags: [Account Groups]
11967
12044
  summary: Delete group
@@ -11987,6 +12064,7 @@ paths:
11987
12064
  '404': { $ref: '#/components/responses/NotFound' }
11988
12065
  /v1/media/presign:
11989
12066
  post:
12067
+ x-resource-group: "publishing"
11990
12068
  operationId: getMediaPresignedUrl
11991
12069
  tags: [Media]
11992
12070
  summary: Get upload URL
@@ -12067,6 +12145,7 @@ paths:
12067
12145
  '401': { $ref: '#/components/responses/Unauthorized' }
12068
12146
  /v1/reddit/search:
12069
12147
  get:
12148
+ x-resource-group: "engagement"
12070
12149
  operationId: searchReddit
12071
12150
  tags: [Reddit Search]
12072
12151
  summary: Search posts
@@ -12142,6 +12221,7 @@ paths:
12142
12221
  '429': { $ref: '#/components/responses/RateLimited' }
12143
12222
  /v1/reddit/feed:
12144
12223
  get:
12224
+ x-resource-group: "engagement"
12145
12225
  operationId: getRedditFeed
12146
12226
  tags: [Reddit Search]
12147
12227
  summary: Get subreddit feed
@@ -12229,6 +12309,7 @@ paths:
12229
12309
  '429': { $ref: '#/components/responses/RateLimited' }
12230
12310
  /v1/billing:
12231
12311
  get:
12312
+ x-resource-group: "billing"
12232
12313
  operationId: getBilling
12233
12314
  tags: [Usage]
12234
12315
  summary: Account billing snapshot (plan, cycle, balance, caps, status)
@@ -12253,6 +12334,7 @@ paths:
12253
12334
  '404': { $ref: '#/components/responses/NotFound' }
12254
12335
  /v1/billing/x-pricing:
12255
12336
  get:
12337
+ x-resource-group: "billing"
12256
12338
  operationId: getXApiPricing
12257
12339
  tags: [Usage]
12258
12340
  summary: Get X/Twitter API pricing table
@@ -12314,6 +12396,7 @@ paths:
12314
12396
  '401': { $ref: '#/components/responses/Unauthorized' }
12315
12397
  /v1/usage:
12316
12398
  get:
12399
+ x-resource-group: "billing"
12317
12400
  operationId: getUsage
12318
12401
  tags: [Usage]
12319
12402
  summary: Usage snapshot (default) or billed-spend metering (with params)
@@ -12396,6 +12479,7 @@ paths:
12396
12479
  '404': { $ref: '#/components/responses/NotFound' }
12397
12480
  /v1/usage-stats:
12398
12481
  get:
12482
+ x-resource-group: "billing"
12399
12483
  operationId: getUsageStats
12400
12484
  tags: [Usage]
12401
12485
  summary: Get plan and usage snapshot (plan, limits, payment status)
@@ -12494,6 +12578,7 @@ paths:
12494
12578
  '404': { $ref: '#/components/responses/NotFound' }
12495
12579
  /v1/usage/calls:
12496
12580
  get:
12581
+ x-resource-group: "billing"
12497
12582
  operationId: getCallsUsage
12498
12583
  tags: [Usage]
12499
12584
  summary: Calling usage and cost
@@ -12554,6 +12639,7 @@ paths:
12554
12639
 
12555
12640
  /v1/usage/sms:
12556
12641
  get:
12642
+ x-resource-group: "billing"
12557
12643
  operationId: getSmsUsage
12558
12644
  tags: [Usage]
12559
12645
  summary: SMS usage (volumes)
@@ -12605,6 +12691,7 @@ paths:
12605
12691
 
12606
12692
  /v1/posts:
12607
12693
  get:
12694
+ x-resource-group: "publishing"
12608
12695
  operationId: listPosts
12609
12696
  tags: [Posts]
12610
12697
  summary: List posts
@@ -12745,6 +12832,7 @@ paths:
12745
12832
  '400': { $ref: '#/components/responses/BadRequest' }
12746
12833
  '401': { $ref: '#/components/responses/Unauthorized' }
12747
12834
  post:
12835
+ x-resource-group: "publishing"
12748
12836
  operationId: createPost
12749
12837
  tags: [Posts]
12750
12838
  summary: Create post
@@ -13185,6 +13273,7 @@ paths:
13185
13273
  schema: { type: integer }
13186
13274
  /v1/posts/sync-external:
13187
13275
  post:
13276
+ x-resource-group: "publishing"
13188
13277
  operationId: syncExternalPosts
13189
13278
  tags: [Analytics]
13190
13279
  summary: Sync an external post
@@ -13264,6 +13353,7 @@ paths:
13264
13353
  $ref: '#/components/schemas/ErrorResponse'
13265
13354
  /v1/posts/{postId}:
13266
13355
  get:
13356
+ x-resource-group: "publishing"
13267
13357
  operationId: getPost
13268
13358
  tags: [Posts]
13269
13359
  summary: Get post
@@ -13387,6 +13477,7 @@ paths:
13387
13477
  schema: { $ref: '#/components/schemas/ErrorResponse' }
13388
13478
  '404': { $ref: '#/components/responses/NotFound' }
13389
13479
  put:
13480
+ x-resource-group: "publishing"
13390
13481
  operationId: updatePost
13391
13482
  tags: [Posts]
13392
13483
  summary: Update post
@@ -13505,6 +13596,7 @@ paths:
13505
13596
  schema: { $ref: '#/components/schemas/ErrorResponse' }
13506
13597
  '404': { $ref: '#/components/responses/NotFound' }
13507
13598
  delete:
13599
+ x-resource-group: "publishing"
13508
13600
  operationId: deletePost
13509
13601
  tags: [Posts]
13510
13602
  summary: Delete post
@@ -13537,6 +13629,7 @@ paths:
13537
13629
  '404': { $ref: '#/components/responses/NotFound' }
13538
13630
  /v1/posts/bulk-upload:
13539
13631
  post:
13632
+ x-resource-group: "publishing"
13540
13633
  operationId: bulkUploadPosts
13541
13634
  tags: [Posts]
13542
13635
  summary: Bulk upload from CSV
@@ -13625,6 +13718,7 @@ paths:
13625
13718
  type: object
13626
13719
  /v1/posts/{postId}/retry:
13627
13720
  post:
13721
+ x-resource-group: "publishing"
13628
13722
  operationId: retryPost
13629
13723
  tags: [Posts]
13630
13724
  summary: Retry failed post
@@ -13699,6 +13793,7 @@ paths:
13699
13793
  type: object
13700
13794
  /v1/posts/{postId}/unpublish:
13701
13795
  post:
13796
+ x-resource-group: "publishing"
13702
13797
  operationId: unpublishPost
13703
13798
  tags: [Posts]
13704
13799
  summary: Unpublish post
@@ -13763,6 +13858,7 @@ paths:
13763
13858
  description: Platform API deletion failed
13764
13859
  /v1/posts/{postId}/edit:
13765
13860
  post:
13861
+ x-resource-group: "publishing"
13766
13862
  operationId: editPost
13767
13863
  tags: [Posts]
13768
13864
  summary: Edit published post
@@ -13853,6 +13949,7 @@ paths:
13853
13949
  description: Platform API edit failed for a reason the platform did not classify.
13854
13950
  /v1/posts/{postId}/update-metadata:
13855
13951
  post:
13952
+ x-resource-group: "publishing"
13856
13953
  operationId: updatePostMetadata
13857
13954
  tags: [Posts]
13858
13955
  summary: Update post metadata
@@ -13981,6 +14078,7 @@ paths:
13981
14078
  description: Platform API update failed
13982
14079
  /v1/users:
13983
14080
  get:
14081
+ x-resource-group: "accounts"
13984
14082
  operationId: listUsers
13985
14083
  tags: [Users]
13986
14084
  summary: List users
@@ -14030,6 +14128,7 @@ paths:
14030
14128
  '401': { $ref: '#/components/responses/Unauthorized' }
14031
14129
  /v1/users/{userId}:
14032
14130
  get:
14131
+ x-resource-group: "accounts"
14033
14132
  operationId: getUser
14034
14133
  tags: [Users]
14035
14134
  summary: Get user
@@ -14072,6 +14171,7 @@ paths:
14072
14171
  '404': { $ref: '#/components/responses/NotFound' }
14073
14172
  /v1/profiles:
14074
14173
  get:
14174
+ x-resource-group: "accounts"
14075
14175
  operationId: listProfiles
14076
14176
  tags: [Profiles]
14077
14177
  summary: List profiles
@@ -14121,6 +14221,7 @@ paths:
14121
14221
  '400': { $ref: '#/components/responses/BadRequest' }
14122
14222
  '401': { $ref: '#/components/responses/Unauthorized' }
14123
14223
  post:
14224
+ x-resource-group: "accounts"
14124
14225
  operationId: createProfile
14125
14226
  tags: [Profiles]
14126
14227
  summary: Create profile
@@ -14173,6 +14274,7 @@ paths:
14173
14274
  '422': { $ref: '#/components/responses/IdempotencyKeyReused' }
14174
14275
  /v1/profiles/{profileId}:
14175
14276
  get:
14277
+ x-resource-group: "accounts"
14176
14278
  operationId: getProfile
14177
14279
  tags: [Profiles]
14178
14280
  summary: Get profile
@@ -14201,6 +14303,7 @@ paths:
14201
14303
  '401': { $ref: '#/components/responses/Unauthorized' }
14202
14304
  '404': { $ref: '#/components/responses/NotFound' }
14203
14305
  put:
14306
+ x-resource-group: "accounts"
14204
14307
  operationId: updateProfile
14205
14308
  tags: [Profiles]
14206
14309
  summary: Update profile
@@ -14247,6 +14350,7 @@ paths:
14247
14350
  '404': { $ref: '#/components/responses/NotFound' }
14248
14351
  '409': { description: "A profile with this name already exists (code: profile_name_conflict)." }
14249
14352
  delete:
14353
+ x-resource-group: "accounts"
14250
14354
  operationId: deleteProfile
14251
14355
  tags: [Profiles]
14252
14356
  summary: Delete profile
@@ -14275,6 +14379,7 @@ paths:
14275
14379
  '404': { $ref: '#/components/responses/NotFound' }
14276
14380
  /v1/accounts:
14277
14381
  get:
14382
+ x-resource-group: "accounts"
14278
14383
  operationId: listAccounts
14279
14384
  tags: [Accounts]
14280
14385
  summary: List accounts
@@ -14341,6 +14446,7 @@ paths:
14341
14446
  '401': { $ref: '#/components/responses/Unauthorized' }
14342
14447
  /v1/accounts/follower-stats:
14343
14448
  get:
14449
+ x-resource-group: "analytics"
14344
14450
  operationId: getFollowerStats
14345
14451
  tags: [Accounts, Analytics]
14346
14452
  summary: Get follower stats
@@ -14409,6 +14515,7 @@ paths:
14409
14515
  requiresAddon: { type: boolean, example: true }
14410
14516
  /v1/accounts/{accountId}:
14411
14517
  put:
14518
+ x-resource-group: "accounts"
14412
14519
  operationId: updateAccount
14413
14520
  tags: [Accounts]
14414
14521
  summary: Update account
@@ -14493,6 +14600,7 @@ paths:
14493
14600
  '401': { $ref: '#/components/responses/Unauthorized' }
14494
14601
  '404': { $ref: '#/components/responses/NotFound' }
14495
14602
  patch:
14603
+ x-resource-group: "accounts"
14496
14604
  operationId: moveAccountToProfile
14497
14605
  tags: [Accounts]
14498
14606
  summary: Move account to another profile
@@ -14539,6 +14647,7 @@ paths:
14539
14647
  '403': { description: API key does not have access to the source account or target profile }
14540
14648
  '404': { description: Account or target profile not found }
14541
14649
  delete:
14650
+ x-resource-group: "accounts"
14542
14651
  operationId: deleteAccount
14543
14652
  tags: [Accounts]
14544
14653
  summary: Disconnect account
@@ -14563,6 +14672,7 @@ paths:
14563
14672
  '404': { $ref: '#/components/responses/NotFound' }
14564
14673
  /v1/accounts/health:
14565
14674
  get:
14675
+ x-resource-group: "accounts"
14566
14676
  operationId: getAllAccountsHealth
14567
14677
  tags: [Accounts]
14568
14678
  summary: Check accounts health
@@ -14648,6 +14758,7 @@ paths:
14648
14758
  '401': { $ref: '#/components/responses/Unauthorized' }
14649
14759
  /v1/accounts/{accountId}/whatsapp/register:
14650
14760
  post:
14761
+ x-resource-group: "accounts"
14651
14762
  operationId: registerWhatsAppNumber
14652
14763
  tags: [WhatsApp]
14653
14764
  summary: Register a connected WhatsApp number on the Cloud API
@@ -14697,6 +14808,7 @@ paths:
14697
14808
  description: 'Meta rejected the registration (e.g. PIN mismatch), or the number cannot be registered through the API.'
14698
14809
  /v1/accounts/{accountId}/health:
14699
14810
  get:
14811
+ x-resource-group: "accounts"
14700
14812
  operationId: getAccountHealth
14701
14813
  tags: [Accounts]
14702
14814
  summary: Check account health
@@ -14801,6 +14913,7 @@ paths:
14801
14913
  '404': { $ref: '#/components/responses/NotFound' }
14802
14914
  /v1/accounts/{accountId}/tiktok/creator-info:
14803
14915
  get:
14916
+ x-resource-group: "accounts"
14804
14917
  operationId: getTikTokCreatorInfo
14805
14918
  tags: [Accounts]
14806
14919
  summary: Get TikTok creator info
@@ -14909,6 +15022,7 @@ paths:
14909
15022
  error: "TikTok creator has reached the daily posting limit. Please try again later."
14910
15023
  /v1/auth/verify:
14911
15024
  get:
15025
+ x-resource-group: "public"
14912
15026
  operationId: verifyCredential
14913
15027
  tags: [API Keys]
14914
15028
  summary: Verify credential
@@ -14937,6 +15051,7 @@ paths:
14937
15051
  '401': { $ref: '#/components/responses/Unauthorized' }
14938
15052
  /v1/api-keys:
14939
15053
  get:
15054
+ x-resource-group: "admin-plane"
14940
15055
  operationId: listApiKeys
14941
15056
  tags: [API Keys]
14942
15057
  summary: List keys
@@ -14974,7 +15089,9 @@ paths:
14974
15089
  color: "#ffeda0"
14975
15090
  permission: "read"
14976
15091
  '401': { $ref: '#/components/responses/Unauthorized' }
15092
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
14977
15093
  post:
15094
+ x-resource-group: "admin-plane"
14978
15095
  operationId: createApiKey
14979
15096
  tags: [API Keys]
14980
15097
  summary: Create key
@@ -15005,11 +15122,25 @@ paths:
15005
15122
  enum: [read-write, read]
15006
15123
  description: "'read-write' allows all operations (default), 'read' restricts to GET requests only"
15007
15124
  default: read-write
15125
+ disabledResourceGroups:
15126
+ type: array
15127
+ items:
15128
+ type: string
15129
+ enum: [publishing, engagement, messages, contacts, analytics, ads, telephony, accounts, billing, webhooks]
15130
+ description: >-
15131
+ Resource groups to DISABLE on this key (opt-out denylist).
15132
+ Omit for a legacy full-access key. A key with any group
15133
+ disabled mints with the zrk_ prefix, gets 403 with
15134
+ code=insufficient_permissions and required_group on
15135
+ operations in disabled groups (each operation's group is
15136
+ published as x-resource-group), and can never manage API
15137
+ keys, invites, or member identity. With 'messages'
15138
+ disabled, the KEY cannot access private messages; the
15139
+ ACCOUNT's pre-existing webhook subscriptions are a
15140
+ separate grant surface.
15008
15141
  example:
15009
- name: "Analytics Read-Only Key"
15010
- scope: "profiles"
15011
- profileIds: ["6507a1b2c3d4e5f6a7b8c9d0"]
15012
- permission: "read"
15142
+ name: "No Private Messages Key"
15143
+ disabledResourceGroups: ["messages", "contacts", "webhooks"]
15013
15144
  responses:
15014
15145
  '201':
15015
15146
  description: Created
@@ -15024,21 +15155,21 @@ paths:
15024
15155
  message: "API key created successfully"
15025
15156
  apiKey:
15026
15157
  id: "6507a1b2c3d4e5f6a7b8c9d0"
15027
- name: "Analytics Read-Only Key"
15028
- keyPreview: "sk_12345678...90abcdef"
15029
- key: "sk_1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
15158
+ name: "No Private Messages Key"
15159
+ keyPreview: "zrk_12345678...90abcdef"
15160
+ key: "zrk_1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
15030
15161
  expiresAt: null
15031
15162
  createdAt: "2024-01-15T10:30:00Z"
15032
- scope: "profiles"
15033
- profileIds:
15034
- - _id: "6507a1b2c3d4e5f6a7b8c9d0"
15035
- name: "Main Brand"
15036
- color: "#ffeda0"
15037
- permission: "read"
15163
+ scope: "full"
15164
+ profileIds: []
15165
+ permission: "read-write"
15166
+ disabledResourceGroups: ["messages", "contacts", "webhooks"]
15038
15167
  '400': { description: "Invalid request (missing name, invalid scope/permission, or missing profileIds when scope is 'profiles')" }
15039
15168
  '401': { $ref: '#/components/responses/Unauthorized' }
15169
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
15040
15170
  /v1/api-keys/{keyId}:
15041
15171
  delete:
15172
+ x-resource-group: "admin-plane"
15042
15173
  operationId: deleteApiKey
15043
15174
  tags: [API Keys]
15044
15175
  summary: Delete key
@@ -15060,10 +15191,12 @@ paths:
15060
15191
  example:
15061
15192
  message: "API key deleted successfully"
15062
15193
  '401': { $ref: '#/components/responses/Unauthorized' }
15194
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
15063
15195
  '404': { $ref: '#/components/responses/NotFound' }
15064
15196
 
15065
15197
  /v1/me/connected-apps:
15066
15198
  get:
15199
+ x-resource-group: "admin-plane"
15067
15200
  operationId: listConnectedApps
15068
15201
  tags: [Connected Apps]
15069
15202
  summary: List connected apps
@@ -15071,9 +15204,10 @@ paths:
15071
15204
  Returns the OAuth clients (AI assistants and MCP connectors) the authenticated
15072
15205
  user has authorized and that still hold a live token.
15073
15206
 
15074
- Requires a session or a full-scope API key. A profile-scoped API key or an
15075
- OAuth access token is rejected with 403: an app must not be able to enumerate
15076
- its sibling authorizations.
15207
+ Requires a session or a full-access API key. A profile-scoped API key, a
15208
+ restricted (zrk_) API key, or an OAuth access token is rejected with 403: an
15209
+ app must not be able to enumerate its sibling authorizations, and connected-app
15210
+ management is admin-plane.
15077
15211
  responses:
15078
15212
  '200':
15079
15213
  description: Connected apps
@@ -15095,13 +15229,10 @@ paths:
15095
15229
  lastUsedAt: "2026-07-30T18:02:11Z"
15096
15230
  tokenCount: 2
15097
15231
  '401': { $ref: '#/components/responses/Unauthorized' }
15098
- '403':
15099
- description: 'The calling credential may not manage OAuth authorizations (profile-scoped API key or OAuth access token). Error code: insufficient_permissions.'
15100
- content:
15101
- application/json:
15102
- schema: { $ref: '#/components/schemas/ErrorResponse' }
15232
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
15103
15233
  /v1/me/connected-apps/{clientId}:
15104
15234
  delete:
15235
+ x-resource-group: "admin-plane"
15105
15236
  operationId: revokeConnectedApp
15106
15237
  tags: [Connected Apps]
15107
15238
  summary: Revoke connected app
@@ -15112,6 +15243,9 @@ paths:
15112
15243
 
15113
15244
  Idempotent while the authorization is still on record: revoking an app that
15114
15245
  was already revoked returns 200 with `revokedTokens: 0`.
15246
+
15247
+ Requires a session or a full-access API key. A profile-scoped API key, a
15248
+ restricted (zrk_) API key, or an OAuth access token is rejected with 403.
15115
15249
  parameters:
15116
15250
  - name: clientId
15117
15251
  in: path
@@ -15137,11 +15271,7 @@ paths:
15137
15271
  invalidatedCodes: 0
15138
15272
  '400': { $ref: '#/components/responses/BadRequest' }
15139
15273
  '401': { $ref: '#/components/responses/Unauthorized' }
15140
- '403':
15141
- description: 'The calling credential may not manage OAuth authorizations (profile-scoped API key or OAuth access token). Error code: insufficient_permissions.'
15142
- content:
15143
- application/json:
15144
- schema: { $ref: '#/components/schemas/ErrorResponse' }
15274
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
15145
15275
  '404':
15146
15276
  description: 'The authenticated user has never authorized this client. Error code: oauth_client_not_found.'
15147
15277
  content:
@@ -15150,12 +15280,16 @@ paths:
15150
15280
 
15151
15281
  /v1/invite/tokens:
15152
15282
  post:
15283
+ x-resource-group: "admin-plane"
15153
15284
  operationId: createInviteToken
15154
15285
  tags: [Invites]
15155
15286
  summary: Create invite token
15156
15287
  description: |
15157
15288
  Generate a secure invite link to grant team members access to your profiles.
15158
15289
  Invites expire after 7 days and are single-use.
15290
+
15291
+ Returns 403 when a requested profile is not found or not owned, or when
15292
+ called with a restricted (zrk_) API key: invite management is admin-plane.
15159
15293
  requestBody:
15160
15294
  required: true
15161
15295
  content:
@@ -15212,10 +15346,11 @@ paths:
15212
15346
  inviteUrl: "https://zernio.com/invite/inv_abc123def456ghi789"
15213
15347
  '400': { description: Invalid request }
15214
15348
  '401': { $ref: '#/components/responses/Unauthorized' }
15215
- '403': { description: One or more profiles not found or not owned }
15349
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
15216
15350
 
15217
15351
  /v1/connect/{platform}:
15218
15352
  get:
15353
+ x-resource-group: "accounts"
15219
15354
  operationId: getConnectUrl
15220
15355
  tags: [Connect]
15221
15356
  summary: Get OAuth connect URL
@@ -15272,6 +15407,7 @@ paths:
15272
15407
  '404':
15273
15408
  description: Profile not found
15274
15409
  post:
15410
+ x-resource-group: "accounts"
15275
15411
  operationId: handleOAuthCallback
15276
15412
  tags: [Connect]
15277
15413
  summary: Complete OAuth callback
@@ -15302,6 +15438,7 @@ paths:
15302
15438
 
15303
15439
  /v1/connect/{platform}/ads:
15304
15440
  get:
15441
+ x-resource-group: "accounts"
15305
15442
  operationId: connectAds
15306
15443
  tags: [Connect]
15307
15444
  summary: Connect ads for a platform
@@ -15439,6 +15576,7 @@ paths:
15439
15576
 
15440
15577
  /v1/connect/tiktok-ads:
15441
15578
  patch:
15579
+ x-resource-group: "accounts"
15442
15580
  operationId: configureTikTokAdsBrandIdentity
15443
15581
  tags: [Connect]
15444
15582
  summary: Set TikTok brand identity
@@ -15509,6 +15647,7 @@ paths:
15509
15647
 
15510
15648
  /v1/connect/facebook/select-page:
15511
15649
  get:
15650
+ x-resource-group: "accounts"
15512
15651
  operationId: listFacebookPages
15513
15652
  tags: [Connect]
15514
15653
  summary: List Facebook pages
@@ -15565,6 +15704,7 @@ paths:
15565
15704
  properties:
15566
15705
  error: { type: string }
15567
15706
  post:
15707
+ x-resource-group: "accounts"
15568
15708
  operationId: selectFacebookPage
15569
15709
  tags: [Connect]
15570
15710
  summary: Select Facebook page
@@ -15670,6 +15810,7 @@ paths:
15670
15810
 
15671
15811
  /v1/connect/googlebusiness/locations:
15672
15812
  get:
15813
+ x-resource-group: "accounts"
15673
15814
  operationId: listGoogleBusinessLocations
15674
15815
  tags: [Connect]
15675
15816
  summary: List GBP locations
@@ -15763,6 +15904,7 @@ paths:
15763
15904
 
15764
15905
  /v1/connect/googlebusiness/select-location:
15765
15906
  post:
15907
+ x-resource-group: "accounts"
15766
15908
  operationId: selectGoogleBusinessLocation
15767
15909
  tags: [Connect]
15768
15910
  summary: Select GBP location
@@ -15857,6 +15999,7 @@ paths:
15857
15999
 
15858
16000
  /v1/accounts/{accountId}/gmb-reviews:
15859
16001
  get:
16002
+ x-resource-group: "engagement"
15860
16003
  operationId: getGoogleBusinessReviews
15861
16004
  tags: [GMB Reviews]
15862
16005
  summary: Get reviews
@@ -15995,6 +16138,7 @@ paths:
15995
16138
 
15996
16139
  /v1/accounts/{accountId}/gmb-verifications:
15997
16140
  get:
16141
+ x-resource-group: "accounts"
15998
16142
  operationId: getGoogleBusinessVerifications
15999
16143
  tags: [GMB Verifications]
16000
16144
  summary: Get verification state
@@ -16074,6 +16218,7 @@ paths:
16074
16218
  schema: { $ref: '#/components/schemas/ErrorResponse' }
16075
16219
  '404': { $ref: '#/components/responses/NotFound' }
16076
16220
  post:
16221
+ x-resource-group: "accounts"
16077
16222
  operationId: startGoogleBusinessVerification
16078
16223
  tags: [GMB Verifications]
16079
16224
  summary: Start a verification
@@ -16145,6 +16290,7 @@ paths:
16145
16290
 
16146
16291
  /v1/accounts/{accountId}/gmb-verifications/options:
16147
16292
  post:
16293
+ x-resource-group: "accounts"
16148
16294
  operationId: fetchGoogleBusinessVerificationOptions
16149
16295
  tags: [GMB Verifications]
16150
16296
  summary: Fetch verification options
@@ -16209,6 +16355,7 @@ paths:
16209
16355
 
16210
16356
  /v1/accounts/{accountId}/gmb-verifications/{verificationId}/complete:
16211
16357
  post:
16358
+ x-resource-group: "accounts"
16212
16359
  operationId: completeGoogleBusinessVerification
16213
16360
  tags: [GMB Verifications]
16214
16361
  summary: Complete a verification
@@ -16276,6 +16423,7 @@ paths:
16276
16423
 
16277
16424
  /v1/accounts/{accountId}/gmb-food-menus:
16278
16425
  get:
16426
+ x-resource-group: "accounts"
16279
16427
  operationId: getGoogleBusinessFoodMenus
16280
16428
  tags: [GMB Food Menus]
16281
16429
  summary: Get food menus
@@ -16359,6 +16507,7 @@ paths:
16359
16507
  application/json:
16360
16508
  schema: { $ref: '#/components/schemas/ErrorResponse' }
16361
16509
  put:
16510
+ x-resource-group: "accounts"
16362
16511
  operationId: updateGoogleBusinessFoodMenus
16363
16512
  tags: [GMB Food Menus]
16364
16513
  summary: Update food menus
@@ -16451,6 +16600,7 @@ paths:
16451
16600
 
16452
16601
  /v1/accounts/{accountId}/gmb-location-details:
16453
16602
  get:
16603
+ x-resource-group: "accounts"
16454
16604
  operationId: getGoogleBusinessLocationDetails
16455
16605
  tags: [GMB Location Details]
16456
16606
  summary: Get location details
@@ -16631,6 +16781,7 @@ paths:
16631
16781
  schema: { $ref: '#/components/schemas/ErrorResponse' }
16632
16782
  '404': { $ref: '#/components/responses/NotFound' }
16633
16783
  put:
16784
+ x-resource-group: "accounts"
16634
16785
  operationId: updateGoogleBusinessLocationDetails
16635
16786
  tags: [GMB Location Details]
16636
16787
  summary: Update location details
@@ -16826,6 +16977,7 @@ paths:
16826
16977
 
16827
16978
  /v1/accounts/{accountId}/gmb-media:
16828
16979
  get:
16980
+ x-resource-group: "accounts"
16829
16981
  operationId: listGoogleBusinessMedia
16830
16982
  tags: [GMB Media]
16831
16983
  summary: List media
@@ -16891,6 +17043,7 @@ paths:
16891
17043
  application/json:
16892
17044
  schema: { $ref: '#/components/schemas/ErrorResponse' }
16893
17045
  post:
17046
+ x-resource-group: "accounts"
16894
17047
  operationId: createGoogleBusinessMedia
16895
17048
  tags: [GMB Media]
16896
17049
  summary: Upload photo
@@ -16951,6 +17104,7 @@ paths:
16951
17104
  application/json:
16952
17105
  schema: { $ref: '#/components/schemas/ErrorResponse' }
16953
17106
  delete:
17107
+ x-resource-group: "accounts"
16954
17108
  operationId: deleteGoogleBusinessMedia
16955
17109
  tags: [GMB Media]
16956
17110
  summary: Delete photo
@@ -16995,6 +17149,7 @@ paths:
16995
17149
 
16996
17150
  /v1/accounts/{accountId}/gmb-attribute-metadata:
16997
17151
  get:
17152
+ x-resource-group: "accounts"
16998
17153
  operationId: getGmbAttributeMetadata
16999
17154
  tags: [GMB Attributes]
17000
17155
  summary: Get attribute metadata
@@ -17134,6 +17289,7 @@ paths:
17134
17289
 
17135
17290
  /v1/accounts/{accountId}/gmb-attributes:
17136
17291
  get:
17292
+ x-resource-group: "accounts"
17137
17293
  operationId: getGoogleBusinessAttributes
17138
17294
  tags: [GMB Attributes]
17139
17295
  summary: Get attributes
@@ -17200,6 +17356,7 @@ paths:
17200
17356
  application/json:
17201
17357
  schema: { $ref: '#/components/schemas/ErrorResponse' }
17202
17358
  put:
17359
+ x-resource-group: "accounts"
17203
17360
  operationId: updateGoogleBusinessAttributes
17204
17361
  tags: [GMB Attributes]
17205
17362
  summary: Update attributes
@@ -17287,6 +17444,7 @@ paths:
17287
17444
 
17288
17445
  /v1/accounts/{accountId}/gmb-place-actions:
17289
17446
  get:
17447
+ x-resource-group: "accounts"
17290
17448
  operationId: listGoogleBusinessPlaceActions
17291
17449
  tags: [GMB Place Actions]
17292
17450
  summary: List action links
@@ -17353,6 +17511,7 @@ paths:
17353
17511
  application/json:
17354
17512
  schema: { $ref: '#/components/schemas/ErrorResponse' }
17355
17513
  post:
17514
+ x-resource-group: "accounts"
17356
17515
  operationId: createGoogleBusinessPlaceAction
17357
17516
  tags: [GMB Place Actions]
17358
17517
  summary: Create action link
@@ -17410,6 +17569,7 @@ paths:
17410
17569
  application/json:
17411
17570
  schema: { $ref: '#/components/schemas/ErrorResponse' }
17412
17571
  delete:
17572
+ x-resource-group: "accounts"
17413
17573
  operationId: deleteGoogleBusinessPlaceAction
17414
17574
  tags: [GMB Place Actions]
17415
17575
  summary: Delete action link
@@ -17452,6 +17612,7 @@ paths:
17452
17612
  application/json:
17453
17613
  schema: { $ref: '#/components/schemas/ErrorResponse' }
17454
17614
  patch:
17615
+ x-resource-group: "accounts"
17455
17616
  operationId: updateGoogleBusinessPlaceAction
17456
17617
  tags: [GMB Place Actions]
17457
17618
  summary: Update action link
@@ -17516,6 +17677,7 @@ paths:
17516
17677
 
17517
17678
  /v1/accounts/{accountId}/gmb-services:
17518
17679
  get:
17680
+ x-resource-group: "accounts"
17519
17681
  operationId: getGoogleBusinessServices
17520
17682
  tags: [GMB Services]
17521
17683
  summary: Get services
@@ -17580,6 +17742,7 @@ paths:
17580
17742
  application/json:
17581
17743
  schema: { $ref: '#/components/schemas/ErrorResponse' }
17582
17744
  put:
17745
+ x-resource-group: "accounts"
17583
17746
  operationId: updateGoogleBusinessServices
17584
17747
  tags: [GMB Services]
17585
17748
  summary: Replace services
@@ -17665,6 +17828,7 @@ paths:
17665
17828
 
17666
17829
  /v1/accounts/{accountId}/gmb-reviews/batch:
17667
17830
  post:
17831
+ x-resource-group: "engagement"
17668
17832
  operationId: batchGetGoogleBusinessReviews
17669
17833
  tags: [GMB Reviews]
17670
17834
  summary: Batch get reviews
@@ -17749,6 +17913,7 @@ paths:
17749
17913
 
17750
17914
  /v1/accounts/{accountId}/gmb-reviews/{reviewId}/reply:
17751
17915
  post:
17916
+ x-resource-group: "engagement"
17752
17917
  operationId: replyToGoogleBusinessReview
17753
17918
  tags: [GMB Reviews]
17754
17919
  summary: Reply to a review
@@ -17820,6 +17985,7 @@ paths:
17820
17985
  application/json:
17821
17986
  schema: { $ref: '#/components/schemas/ErrorResponse' }
17822
17987
  delete:
17988
+ x-resource-group: "engagement"
17823
17989
  operationId: deleteGoogleBusinessReviewReply
17824
17990
  tags: [GMB Reviews]
17825
17991
  summary: Delete a review reply
@@ -17874,6 +18040,7 @@ paths:
17874
18040
 
17875
18041
  /v1/connect/pending-data:
17876
18042
  get:
18043
+ x-resource-group: "public"
17877
18044
  operationId: getPendingOAuthData
17878
18045
  tags: [Connect]
17879
18046
  summary: Get pending OAuth data
@@ -17963,6 +18130,7 @@ paths:
17963
18130
 
17964
18131
  /v1/connect/linkedin/organizations:
17965
18132
  get:
18133
+ x-resource-group: "public"
17966
18134
  operationId: listLinkedInOrganizations
17967
18135
  tags: [Connect]
17968
18136
  summary: List LinkedIn orgs
@@ -18026,6 +18194,7 @@ paths:
18026
18194
 
18027
18195
  /v1/connect/linkedin/select-organization:
18028
18196
  post:
18197
+ x-resource-group: "accounts"
18029
18198
  operationId: selectLinkedInOrganization
18030
18199
  tags: [Connect]
18031
18200
  summary: Select LinkedIn org
@@ -18146,6 +18315,7 @@ paths:
18146
18315
 
18147
18316
  /v1/connect/pinterest/select-board:
18148
18317
  get:
18318
+ x-resource-group: "accounts"
18149
18319
  operationId: listPinterestBoardsForSelection
18150
18320
  tags: [Connect]
18151
18321
  summary: List Pinterest boards
@@ -18198,6 +18368,7 @@ paths:
18198
18368
  '403': { description: No access to profile }
18199
18369
  '500': { description: Failed to fetch boards }
18200
18370
  post:
18371
+ x-resource-group: "accounts"
18201
18372
  operationId: selectPinterestBoard
18202
18373
  tags: [Connect]
18203
18374
  summary: Select Pinterest board
@@ -18303,6 +18474,7 @@ paths:
18303
18474
 
18304
18475
  /v1/connect/snapchat/select-profile:
18305
18476
  get:
18477
+ x-resource-group: "accounts"
18306
18478
  operationId: listSnapchatProfiles
18307
18479
  tags: [Connect]
18308
18480
  summary: List Snapchat profiles
@@ -18358,6 +18530,7 @@ paths:
18358
18530
  '403': { description: No access to profile }
18359
18531
  '500': { description: Failed to fetch public profiles }
18360
18532
  post:
18533
+ x-resource-group: "accounts"
18361
18534
  operationId: selectSnapchatProfile
18362
18535
  tags: [Connect]
18363
18536
  summary: Select Snapchat profile
@@ -18486,6 +18659,7 @@ paths:
18486
18659
 
18487
18660
  /v1/connect/bluesky/credentials:
18488
18661
  post:
18662
+ x-resource-group: "accounts"
18489
18663
  operationId: connectBlueskyCredentials
18490
18664
  tags: [Connect]
18491
18665
  summary: Connect Bluesky account
@@ -18543,6 +18717,7 @@ paths:
18543
18717
 
18544
18718
  /v1/connect/openai-ads/credentials:
18545
18719
  post:
18720
+ x-resource-group: "accounts"
18546
18721
  operationId: connectOpenAIAdsCredentials
18547
18722
  tags: [Connect]
18548
18723
  summary: Connect an OpenAI Ads account
@@ -18600,6 +18775,7 @@ paths:
18600
18775
 
18601
18776
  /v1/connect/whatsapp/credentials:
18602
18777
  post:
18778
+ x-resource-group: "accounts"
18603
18779
  operationId: connectWhatsAppCredentials
18604
18780
  tags: [Connect]
18605
18781
  summary: Connect WhatsApp via credentials
@@ -18690,6 +18866,7 @@ paths:
18690
18866
 
18691
18867
  /v1/connect/whatsapp/select-phone-number:
18692
18868
  get:
18869
+ x-resource-group: "accounts"
18693
18870
  operationId: listWhatsAppPhoneNumbers
18694
18871
  tags: [Connect]
18695
18872
  summary: List numbers for selection
@@ -18763,6 +18940,7 @@ paths:
18763
18940
  application/json:
18764
18941
  schema: { $ref: '#/components/schemas/ErrorResponse' }
18765
18942
  post:
18943
+ x-resource-group: "accounts"
18766
18944
  operationId: completeWhatsAppPhoneSelection
18767
18945
  tags: [Connect]
18768
18946
  summary: Complete number selection
@@ -18848,6 +19026,7 @@ paths:
18848
19026
 
18849
19027
  /v1/connect/telegram:
18850
19028
  get:
19029
+ x-resource-group: "accounts"
18851
19030
  operationId: getTelegramConnectStatus
18852
19031
  tags: [Connect]
18853
19032
  summary: Generate Telegram code
@@ -18903,6 +19082,7 @@ paths:
18903
19082
  '404': { description: Profile not found }
18904
19083
  '500': { description: Internal error }
18905
19084
  post:
19085
+ x-resource-group: "accounts"
18906
19086
  operationId: initiateTelegramConnect
18907
19087
  tags: [Connect]
18908
19088
  summary: Connect Telegram directly
@@ -18957,6 +19137,7 @@ paths:
18957
19137
  '404': { description: Profile not found }
18958
19138
  '500': { description: Internal error }
18959
19139
  patch:
19140
+ x-resource-group: "accounts"
18960
19141
  operationId: completeTelegramConnect
18961
19142
  tags: [Connect]
18962
19143
  summary: Check Telegram status
@@ -19032,6 +19213,7 @@ paths:
19032
19213
 
19033
19214
  /v1/accounts/{accountId}/facebook-page:
19034
19215
  get:
19216
+ x-resource-group: "accounts"
19035
19217
  operationId: getFacebookPages
19036
19218
  tags: [Connect]
19037
19219
  summary: List Facebook pages
@@ -19086,6 +19268,7 @@ paths:
19086
19268
  '401': { $ref: '#/components/responses/Unauthorized' }
19087
19269
  '404': { description: Account not found }
19088
19270
  put:
19271
+ x-resource-group: "accounts"
19089
19272
  operationId: updateFacebookPage
19090
19273
  tags: [Connect]
19091
19274
  summary: Update Facebook page
@@ -19131,6 +19314,7 @@ paths:
19131
19314
 
19132
19315
  /v1/accounts/{accountId}/linkedin-organizations:
19133
19316
  get:
19317
+ x-resource-group: "accounts"
19134
19318
  operationId: getLinkedInOrganizations
19135
19319
  tags: [Connect]
19136
19320
  summary: List LinkedIn orgs
@@ -19172,6 +19356,7 @@ paths:
19172
19356
 
19173
19357
  /v1/accounts/{accountId}/linkedin-aggregate-analytics:
19174
19358
  get:
19359
+ x-resource-group: "analytics"
19175
19360
  operationId: getLinkedInAggregateAnalytics
19176
19361
  tags: [Analytics]
19177
19362
  summary: Get LinkedIn aggregate stats
@@ -19382,6 +19567,7 @@ paths:
19382
19567
 
19383
19568
  /v1/accounts/{accountId}/linkedin-post-analytics:
19384
19569
  get:
19570
+ x-resource-group: "analytics"
19385
19571
  operationId: getLinkedInPostAnalytics
19386
19572
  tags: [Analytics]
19387
19573
  summary: Get LinkedIn post stats
@@ -19498,6 +19684,7 @@ paths:
19498
19684
 
19499
19685
  /v1/accounts/{accountId}/linkedin-post-reactions:
19500
19686
  get:
19687
+ x-resource-group: "analytics"
19501
19688
  operationId: getLinkedInPostReactions
19502
19689
  tags: [Analytics]
19503
19690
  summary: Get LinkedIn post reactions
@@ -19600,6 +19787,7 @@ paths:
19600
19787
 
19601
19788
  /v1/accounts/{accountId}/linkedin-organization:
19602
19789
  put:
19790
+ x-resource-group: "accounts"
19603
19791
  operationId: updateLinkedInOrganization
19604
19792
  tags: [Connect]
19605
19793
  summary: Switch LinkedIn account type
@@ -19647,6 +19835,7 @@ paths:
19647
19835
 
19648
19836
  /v1/accounts/{accountId}/linkedin-mentions:
19649
19837
  get:
19838
+ x-resource-group: "accounts"
19650
19839
  operationId: getLinkedInMentions
19651
19840
  tags: [LinkedIn Mentions]
19652
19841
  summary: Resolve LinkedIn mention
@@ -19804,6 +19993,7 @@ paths:
19804
19993
 
19805
19994
  /v1/accounts/{accountId}/instagram/stories:
19806
19995
  get:
19996
+ x-resource-group: "analytics"
19807
19997
  operationId: listInstagramStories
19808
19998
  tags: [Instagram]
19809
19999
  summary: List active Instagram stories
@@ -19851,6 +20041,7 @@ paths:
19851
20041
 
19852
20042
  /v1/accounts/{accountId}/instagram/publishing-limit:
19853
20043
  get:
20044
+ x-resource-group: "accounts"
19854
20045
  operationId: getInstagramPublishingLimit
19855
20046
  tags: [Instagram]
19856
20047
  summary: Get Instagram publishing limit
@@ -19890,6 +20081,7 @@ paths:
19890
20081
 
19891
20082
  /v1/accounts/{accountId}/instagram/stories/{storyId}/insights:
19892
20083
  get:
20084
+ x-resource-group: "analytics"
19893
20085
  operationId: getInstagramStoryInsights
19894
20086
  tags: [Instagram]
19895
20087
  summary: Get Instagram story insights
@@ -19959,6 +20151,7 @@ paths:
19959
20151
 
19960
20152
  /v1/accounts/{accountId}/pinterest-boards:
19961
20153
  get:
20154
+ x-resource-group: "accounts"
19962
20155
  operationId: getPinterestBoards
19963
20156
  tags: [Connect]
19964
20157
  summary: List Pinterest boards
@@ -19999,6 +20192,7 @@ paths:
19999
20192
  '401': { $ref: '#/components/responses/Unauthorized' }
20000
20193
  '404': { description: Account not found }
20001
20194
  put:
20195
+ x-resource-group: "accounts"
20002
20196
  operationId: updatePinterestBoards
20003
20197
  tags: [Connect]
20004
20198
  summary: Set default Pinterest board
@@ -20043,6 +20237,7 @@ paths:
20043
20237
  '401': { $ref: '#/components/responses/Unauthorized' }
20044
20238
  '404': { description: Account not found }
20045
20239
  post:
20240
+ x-resource-group: "accounts"
20046
20241
  operationId: createPinterestBoard
20047
20242
  tags: [Connect]
20048
20243
  summary: Create Pinterest board
@@ -20104,6 +20299,7 @@ paths:
20104
20299
 
20105
20300
  /v1/accounts/{accountId}/youtube-playlists:
20106
20301
  get:
20302
+ x-resource-group: "accounts"
20107
20303
  operationId: getYoutubePlaylists
20108
20304
  tags: [Connect]
20109
20305
  summary: List YouTube playlists
@@ -20153,6 +20349,7 @@ paths:
20153
20349
  '401': { $ref: '#/components/responses/Unauthorized' }
20154
20350
  '404': { description: Account not found }
20155
20351
  put:
20352
+ x-resource-group: "accounts"
20156
20353
  operationId: updateYoutubeDefaultPlaylist
20157
20354
  tags: [Connect]
20158
20355
  summary: Set default YouTube playlist
@@ -20192,6 +20389,7 @@ paths:
20192
20389
 
20193
20390
  /v1/accounts/{accountId}/gmb-locations:
20194
20391
  get:
20392
+ x-resource-group: "accounts"
20195
20393
  operationId: getGmbLocations
20196
20394
  tags: [Connect]
20197
20395
  summary: List GBP locations
@@ -20262,6 +20460,7 @@ paths:
20262
20460
  '401': { $ref: '#/components/responses/Unauthorized' }
20263
20461
  '404': { description: Account not found }
20264
20462
  put:
20463
+ x-resource-group: "accounts"
20265
20464
  operationId: updateGmbLocation
20266
20465
  tags: [Connect]
20267
20466
  summary: Update GBP location
@@ -20319,6 +20518,7 @@ paths:
20319
20518
 
20320
20519
  /v1/accounts/{accountId}/gmb-locations/assign:
20321
20520
  post:
20521
+ x-resource-group: "accounts"
20322
20522
  operationId: assignGoogleBusinessLocation
20323
20523
  tags: [Connect]
20324
20524
  summary: Assign GBP location to another profile
@@ -20400,6 +20600,7 @@ paths:
20400
20600
 
20401
20601
  /v1/accounts/{accountId}/facebook-post-reactions:
20402
20602
  get:
20603
+ x-resource-group: "analytics"
20403
20604
  operationId: getFacebookPostReactions
20404
20605
  tags: [Analytics]
20405
20606
  summary: Get Facebook post reactions
@@ -20462,6 +20663,7 @@ paths:
20462
20663
 
20463
20664
  /v1/accounts/{accountId}/reddit-subreddits:
20464
20665
  get:
20666
+ x-resource-group: "accounts"
20465
20667
  operationId: getRedditSubreddits
20466
20668
  tags: [Connect]
20467
20669
  summary: List Reddit subreddits
@@ -20510,6 +20712,7 @@ paths:
20510
20712
  '404': { description: Account not found }
20511
20713
 
20512
20714
  put:
20715
+ x-resource-group: "accounts"
20513
20716
  operationId: updateRedditSubreddits
20514
20717
  tags: [Connect]
20515
20718
  summary: Set default subreddit
@@ -20547,6 +20750,7 @@ paths:
20547
20750
 
20548
20751
  /v1/accounts/{accountId}/reddit-subreddits/{subreddit}/rules:
20549
20752
  get:
20753
+ x-resource-group: "accounts"
20550
20754
  operationId: getSubredditRules
20551
20755
  tags: [Connect]
20552
20756
  summary: Get subreddit rules
@@ -20609,6 +20813,7 @@ paths:
20609
20813
 
20610
20814
  /v1/accounts/{accountId}/reddit-vote:
20611
20815
  post:
20816
+ x-resource-group: "engagement"
20612
20817
  operationId: voteRedditThing
20613
20818
  tags: [Connect]
20614
20819
  summary: Vote on a Reddit post or comment
@@ -20664,6 +20869,7 @@ paths:
20664
20869
 
20665
20870
  /v1/accounts/{accountId}/reddit-flairs:
20666
20871
  get:
20872
+ x-resource-group: "accounts"
20667
20873
  operationId: getRedditFlairs
20668
20874
  tags: [Connect]
20669
20875
  summary: List subreddit flairs
@@ -20709,6 +20915,7 @@ paths:
20709
20915
  '401': { $ref: '#/components/responses/Unauthorized' }
20710
20916
  '404': { description: Account not found }
20711
20917
  post:
20918
+ x-resource-group: "accounts"
20712
20919
  operationId: setRedditPostFlair
20713
20920
  tags: [Connect]
20714
20921
  summary: Set Reddit post flair
@@ -20760,6 +20967,7 @@ paths:
20760
20967
 
20761
20968
  /v1/accounts/{accountId}/slack-settings:
20762
20969
  get:
20970
+ x-resource-group: "accounts"
20763
20971
  operationId: getSlackSettings
20764
20972
  tags: [Accounts]
20765
20973
  summary: Get Slack account settings
@@ -20794,6 +21002,7 @@ paths:
20794
21002
  '401': { $ref: '#/components/responses/Unauthorized' }
20795
21003
  '404': { description: Account not found }
20796
21004
  patch:
21005
+ x-resource-group: "accounts"
20797
21006
  operationId: updateSlackSettings
20798
21007
  tags: [Accounts]
20799
21008
  summary: Update Slack account settings
@@ -20821,6 +21030,7 @@ paths:
20821
21030
 
20822
21031
  /v1/accounts/{accountId}/discord-settings:
20823
21032
  get:
21033
+ x-resource-group: "accounts"
20824
21034
  operationId: getDiscordSettings
20825
21035
  tags: [Discord]
20826
21036
  summary: Get Discord account settings
@@ -20870,6 +21080,7 @@ paths:
20870
21080
  '404': { description: Account not found }
20871
21081
 
20872
21082
  patch:
21083
+ x-resource-group: "accounts"
20873
21084
  operationId: updateDiscordSettings
20874
21085
  tags: [Discord]
20875
21086
  summary: Update Discord settings
@@ -20939,6 +21150,7 @@ paths:
20939
21150
 
20940
21151
  /v1/accounts/{accountId}/discord-channels:
20941
21152
  get:
21153
+ x-resource-group: "accounts"
20942
21154
  operationId: getDiscordChannels
20943
21155
  tags: [Discord]
20944
21156
  summary: List Discord guild channels
@@ -20981,6 +21193,7 @@ paths:
20981
21193
 
20982
21194
  /v1/accounts/{accountId}/slack-members:
20983
21195
  get:
21196
+ x-resource-group: "contacts"
20984
21197
  operationId: listSlackMembers
20985
21198
  tags: [Slack]
20986
21199
  summary: List Slack workspace members
@@ -21028,6 +21241,7 @@ paths:
21028
21241
 
21029
21242
  /v1/discord/dms:
21030
21243
  post:
21244
+ x-resource-group: "messages"
21031
21245
  operationId: sendDiscordDirectMessage
21032
21246
  tags: [Discord]
21033
21247
  summary: Send a Discord Direct Message
@@ -21136,6 +21350,7 @@ paths:
21136
21350
 
21137
21351
  /v1/discord/guilds/{guildId}/roles:
21138
21352
  get:
21353
+ x-resource-group: "engagement"
21139
21354
  operationId: listDiscordGuildRoles
21140
21355
  tags: [Discord]
21141
21356
  summary: List Discord guild roles
@@ -21179,6 +21394,7 @@ paths:
21179
21394
  '403': { description: Discord refused the request (bot lacks View Channels permission in the guild). }
21180
21395
  '502': { description: Discord was unreachable or returned an unclassified error. }
21181
21396
  post:
21397
+ x-resource-group: "engagement"
21182
21398
  operationId: createDiscordGuildRole
21183
21399
  tags: [Discord]
21184
21400
  summary: Create a Discord guild role
@@ -21230,6 +21446,7 @@ paths:
21230
21446
 
21231
21447
  /v1/discord/guilds/{guildId}/roles/{roleId}:
21232
21448
  patch:
21449
+ x-resource-group: "engagement"
21233
21450
  operationId: editDiscordGuildRole
21234
21451
  tags: [Discord]
21235
21452
  summary: Edit a Discord guild role
@@ -21274,6 +21491,7 @@ paths:
21274
21491
  '403': { description: "Discord refused the action (bot lacks Manage Roles, or the target role sits at or above the bot's highest role)." }
21275
21492
  '502': { description: Discord was unreachable or returned an unclassified error. }
21276
21493
  delete:
21494
+ x-resource-group: "engagement"
21277
21495
  operationId: deleteDiscordGuildRole
21278
21496
  tags: [Discord]
21279
21497
  summary: Delete a Discord guild role
@@ -21305,6 +21523,7 @@ paths:
21305
21523
 
21306
21524
  /v1/discord/guilds/{guildId}/members:
21307
21525
  get:
21526
+ x-resource-group: "contacts"
21308
21527
  operationId: listDiscordGuildMembers
21309
21528
  tags: [Discord]
21310
21529
  summary: List Discord guild members
@@ -21344,6 +21563,7 @@ paths:
21344
21563
 
21345
21564
  /v1/discord/guilds/{guildId}/members/search:
21346
21565
  get:
21566
+ x-resource-group: "contacts"
21347
21567
  operationId: searchDiscordGuildMembers
21348
21568
  tags: [Discord]
21349
21569
  summary: Search Discord guild members
@@ -21375,6 +21595,7 @@ paths:
21375
21595
 
21376
21596
  /v1/discord/guilds/{guildId}/members/{userId}:
21377
21597
  get:
21598
+ x-resource-group: "contacts"
21378
21599
  operationId: getDiscordGuildMember
21379
21600
  tags: [Discord]
21380
21601
  summary: Get a Discord guild member
@@ -21402,6 +21623,7 @@ paths:
21402
21623
 
21403
21624
  /v1/discord/guilds/{guildId}/members/{userId}/roles/{roleId}:
21404
21625
  put:
21626
+ x-resource-group: "contacts"
21405
21627
  operationId: addDiscordMemberRole
21406
21628
  tags: [Discord]
21407
21629
  summary: Assign a role to a guild member
@@ -21440,6 +21662,7 @@ paths:
21440
21662
  '502': { description: Discord was unreachable or returned an unclassified error. }
21441
21663
 
21442
21664
  delete:
21665
+ x-resource-group: "contacts"
21443
21666
  operationId: removeDiscordMemberRole
21444
21667
  tags: [Discord]
21445
21668
  summary: Remove a role from a guild member
@@ -21474,6 +21697,7 @@ paths:
21474
21697
 
21475
21698
  /v1/discord/channels/{channelId}/messages/{messageId}:
21476
21699
  delete:
21700
+ x-resource-group: "engagement"
21477
21701
  operationId: deleteDiscordMessage
21478
21702
  tags: [Discord]
21479
21703
  summary: Delete a Discord channel message
@@ -21508,6 +21732,7 @@ paths:
21508
21732
 
21509
21733
  /v1/discord/channels/{channelId}/messages/{messageId}/crosspost:
21510
21734
  post:
21735
+ x-resource-group: "engagement"
21511
21736
  operationId: crosspostDiscordMessage
21512
21737
  tags: [Discord]
21513
21738
  summary: Crosspost Discord message
@@ -21541,6 +21766,7 @@ paths:
21541
21766
 
21542
21767
  /v1/discord/channels/{channelId}/threads:
21543
21768
  post:
21769
+ x-resource-group: "engagement"
21544
21770
  operationId: createDiscordThread
21545
21771
  tags: [Discord]
21546
21772
  summary: Create a Discord public thread
@@ -21595,6 +21821,7 @@ paths:
21595
21821
 
21596
21822
  /v1/discord/channels/{channelId}/pins:
21597
21823
  get:
21824
+ x-resource-group: "engagement"
21598
21825
  operationId: listDiscordPinnedMessages
21599
21826
  tags: [Discord]
21600
21827
  summary: List pinned messages
@@ -21636,6 +21863,7 @@ paths:
21636
21863
 
21637
21864
  /v1/discord/channels/{channelId}/pins/{messageId}:
21638
21865
  put:
21866
+ x-resource-group: "engagement"
21639
21867
  operationId: pinDiscordMessage
21640
21868
  tags: [Discord]
21641
21869
  summary: Pin a Discord message
@@ -21671,6 +21899,7 @@ paths:
21671
21899
  '502': { description: Bot lacks MANAGE_MESSAGES in the channel. }
21672
21900
 
21673
21901
  delete:
21902
+ x-resource-group: "engagement"
21674
21903
  operationId: unpinDiscordMessage
21675
21904
  tags: [Discord]
21676
21905
  summary: Unpin a Discord message
@@ -21700,6 +21929,7 @@ paths:
21700
21929
 
21701
21930
  /v1/discord/guilds/{guildId}/events:
21702
21931
  get:
21932
+ x-resource-group: "engagement"
21703
21933
  operationId: listDiscordScheduledEvents
21704
21934
  tags: [Discord]
21705
21935
  summary: List Discord scheduled events
@@ -21732,6 +21962,7 @@ paths:
21732
21962
  '502': { description: Bot lacks access to the guild's events. }
21733
21963
 
21734
21964
  post:
21965
+ x-resource-group: "engagement"
21735
21966
  operationId: createDiscordScheduledEvent
21736
21967
  tags: [Discord]
21737
21968
  summary: Create a Discord scheduled event
@@ -21816,6 +22047,7 @@ paths:
21816
22047
 
21817
22048
  /v1/discord/guilds/{guildId}/events/{eventId}:
21818
22049
  get:
22050
+ x-resource-group: "engagement"
21819
22051
  operationId: getDiscordScheduledEvent
21820
22052
  tags: [Discord]
21821
22053
  summary: Get a Discord scheduled event
@@ -21836,6 +22068,7 @@ paths:
21836
22068
  '404': { description: Event or Discord account not found. }
21837
22069
 
21838
22070
  patch:
22071
+ x-resource-group: "engagement"
21839
22072
  operationId: updateDiscordScheduledEvent
21840
22073
  tags: [Discord]
21841
22074
  summary: Update a Discord scheduled event
@@ -21884,6 +22117,7 @@ paths:
21884
22117
  '502': { description: Discord was unreachable or returned an unclassified error. }
21885
22118
 
21886
22119
  delete:
22120
+ x-resource-group: "engagement"
21887
22121
  operationId: deleteDiscordScheduledEvent
21888
22122
  tags: [Discord]
21889
22123
  summary: Delete a Discord scheduled event
@@ -21910,6 +22144,7 @@ paths:
21910
22144
 
21911
22145
  /v1/queue/slots:
21912
22146
  get:
22147
+ x-resource-group: "publishing"
21913
22148
  operationId: listQueueSlots
21914
22149
  tags: [Queue]
21915
22150
  summary: List schedules
@@ -21989,6 +22224,7 @@ paths:
21989
22224
  '401': { $ref: '#/components/responses/Unauthorized' }
21990
22225
  '404': { description: Profile not found }
21991
22226
  post:
22227
+ x-resource-group: "publishing"
21992
22228
  operationId: createQueueSlot
21993
22229
  tags: [Queue]
21994
22230
  summary: Create schedule
@@ -22041,6 +22277,7 @@ paths:
22041
22277
  '401': { $ref: '#/components/responses/Unauthorized' }
22042
22278
  '404': { description: Profile not found }
22043
22279
  put:
22280
+ x-resource-group: "publishing"
22044
22281
  operationId: updateQueueSlot
22045
22282
  tags: [Queue]
22046
22283
  summary: Update schedule
@@ -22113,6 +22350,7 @@ paths:
22113
22350
  '401': { $ref: '#/components/responses/Unauthorized' }
22114
22351
  '404': { description: Profile not found }
22115
22352
  delete:
22353
+ x-resource-group: "publishing"
22116
22354
  operationId: deleteQueueSlot
22117
22355
  tags: [Queue]
22118
22356
  summary: Delete schedule
@@ -22145,6 +22383,7 @@ paths:
22145
22383
  '404': { description: Profile or queue not found }
22146
22384
  /v1/queue/preview:
22147
22385
  get:
22386
+ x-resource-group: "publishing"
22148
22387
  operationId: previewQueue
22149
22388
  tags: [Queue]
22150
22389
  summary: Preview upcoming slots
@@ -22187,6 +22426,7 @@ paths:
22187
22426
  '404': { description: Profile or queue schedule not found }
22188
22427
  /v1/queue/next-slot:
22189
22428
  get:
22429
+ x-resource-group: "publishing"
22190
22430
  operationId: getNextQueueSlot
22191
22431
  tags: [Queue]
22192
22432
  summary: Get next available slot
@@ -22224,6 +22464,7 @@ paths:
22224
22464
  # ============================================
22225
22465
  /v1/webhooks/settings:
22226
22466
  get:
22467
+ x-resource-group: "webhooks"
22227
22468
  operationId: getWebhookSettings
22228
22469
  tags: [Webhooks]
22229
22470
  summary: List webhooks
@@ -22259,6 +22500,7 @@ paths:
22259
22500
  failureCount: 0
22260
22501
  '401': { $ref: '#/components/responses/Unauthorized' }
22261
22502
  post:
22503
+ x-resource-group: "webhooks"
22262
22504
  operationId: createWebhookSettings
22263
22505
  tags: [Webhooks]
22264
22506
  summary: Create webhook
@@ -22268,6 +22510,11 @@ paths:
22268
22510
  `name`, `url` and `events` are required. `url` must be a valid URL and `events` must contain at least one event. Whitespace is trimmed from `url` before validation.
22269
22511
 
22270
22512
  Webhooks are automatically disabled after 10 consecutive delivery failures.
22513
+
22514
+ A restricted (zrk_) API key can only subscribe to events whose resource group
22515
+ the key holds; an event outside the key's groups is rejected with 403. Note
22516
+ that the KEY cannot access private messages; the ACCOUNT's pre-existing
22517
+ webhook subscriptions are a separate grant surface.
22271
22518
  security:
22272
22519
  - bearerAuth: []
22273
22520
  requestBody:
@@ -22331,7 +22578,9 @@ paths:
22331
22578
  $ref: '#/components/schemas/Webhook'
22332
22579
  '400': { description: Validation error or maximum webhooks reached }
22333
22580
  '401': { $ref: '#/components/responses/Unauthorized' }
22581
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
22334
22582
  put:
22583
+ x-resource-group: "webhooks"
22335
22584
  operationId: updateWebhookSettings
22336
22585
  tags: [Webhooks]
22337
22586
  summary: Update webhook
@@ -22341,6 +22590,9 @@ paths:
22341
22590
  When provided, `name` must be 1-50 characters, `url` must be a valid URL, and `events` must contain at least one event. Whitespace is trimmed from `url` before validation.
22342
22591
 
22343
22592
  Webhooks are automatically disabled after 10 consecutive delivery failures.
22593
+
22594
+ A restricted (zrk_) API key can only set `events` to events whose resource
22595
+ group the key holds; an event outside the key's groups is rejected with 403.
22344
22596
  security:
22345
22597
  - bearerAuth: []
22346
22598
  requestBody:
@@ -22407,8 +22659,10 @@ paths:
22407
22659
  $ref: '#/components/schemas/Webhook'
22408
22660
  '400': { description: Validation error or missing webhook ID }
22409
22661
  '401': { $ref: '#/components/responses/Unauthorized' }
22662
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
22410
22663
  '404': { description: Webhook not found }
22411
22664
  delete:
22665
+ x-resource-group: "webhooks"
22412
22666
  operationId: deleteWebhookSettings
22413
22667
  tags: [Webhooks]
22414
22668
  summary: Delete webhook
@@ -22436,6 +22690,7 @@ paths:
22436
22690
 
22437
22691
  /v1/webhooks/logs:
22438
22692
  get:
22693
+ x-resource-group: "webhooks"
22439
22694
  operationId: getWebhookLogs
22440
22695
  tags: [Webhooks]
22441
22696
  summary: List webhook delivery logs
@@ -22443,6 +22698,10 @@ paths:
22443
22698
  Retrieve recorded webhook delivery attempts for the authenticated user, most recent first.
22444
22699
  Logs are retained for 30 days. Supports filtering by status, event type, webhook ID, and event ID,
22445
22700
  plus offset-based pagination.
22701
+
22702
+ For a restricted (zrk_) API key, rows for events outside the key's resource
22703
+ groups are omitted (`pagination.total` may over-count), and an `event` filter
22704
+ naming such an event is rejected with 403.
22446
22705
  security:
22447
22706
  - bearerAuth: []
22448
22707
  parameters:
@@ -22521,9 +22780,11 @@ paths:
22521
22780
  description: Whether more logs are available beyond this page
22522
22781
  '400': { description: Invalid query parameter }
22523
22782
  '401': { $ref: '#/components/responses/Unauthorized' }
22783
+ '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
22524
22784
 
22525
22785
  /v1/webhooks/test:
22526
22786
  post:
22787
+ x-resource-group: "webhooks"
22527
22788
  operationId: testWebhook
22528
22789
  tags: [Webhooks]
22529
22790
  summary: Send test webhook
@@ -22576,6 +22837,7 @@ paths:
22576
22837
 
22577
22838
  /v1/logs:
22578
22839
  get:
22840
+ x-resource-group: "publishing"
22579
22841
  operationId: listLogs
22580
22842
  tags: [Logs]
22581
22843
  summary: List activity logs
@@ -22768,6 +23030,7 @@ paths:
22768
23030
  # Unified Inbox Endpoints
22769
23031
  /v1/inbox/conversations:
22770
23032
  get:
23033
+ x-resource-group: "messages"
22771
23034
  operationId: listInboxConversations
22772
23035
  summary: List conversations
22773
23036
  description: |
@@ -22973,6 +23236,7 @@ paths:
22973
23236
  '403':
22974
23237
  description: Inbox addon required
22975
23238
  post:
23239
+ x-resource-group: "messages"
22976
23240
  operationId: createInboxConversation
22977
23241
  summary: Create conversation
22978
23242
  description: |
@@ -23151,6 +23415,7 @@ paths:
23151
23415
  description: X API rate limit exceeded
23152
23416
  /v1/inbox/conversations/search:
23153
23417
  get:
23418
+ x-resource-group: "messages"
23154
23419
  operationId: searchInboxConversations
23155
23420
  summary: Search conversations
23156
23421
  description: |
@@ -23267,6 +23532,7 @@ paths:
23267
23532
  description: Inbox addon required
23268
23533
  /v1/inbox/conversations/{conversationId}:
23269
23534
  get:
23535
+ x-resource-group: "messages"
23270
23536
  operationId: getInboxConversation
23271
23537
  summary: Get conversation
23272
23538
  description: Retrieve details and metadata for a specific conversation. Requires accountId query parameter.
@@ -23403,6 +23669,7 @@ paths:
23403
23669
  '404':
23404
23670
  description: Conversation not found
23405
23671
  put:
23672
+ x-resource-group: "messages"
23406
23673
  operationId: updateInboxConversation
23407
23674
  summary: Update conversation status
23408
23675
  description: Archive or activate a conversation. Requires accountId in request body.
@@ -23449,6 +23716,7 @@ paths:
23449
23716
 
23450
23717
  /v1/inbox/conversations/{conversationId}/messages:
23451
23718
  get:
23719
+ x-resource-group: "messages"
23452
23720
  operationId: getInboxConversationMessages
23453
23721
  summary: List messages
23454
23722
  description: |
@@ -23645,6 +23913,7 @@ paths:
23645
23913
  '403':
23646
23914
  description: Inbox addon required
23647
23915
  post:
23916
+ x-resource-group: "messages"
23648
23917
  operationId: sendInboxMessage
23649
23918
  summary: Send message
23650
23919
  description: |
@@ -24202,6 +24471,7 @@ paths:
24202
24471
 
24203
24472
  /v1/whatsapp/media/{mediaId}:
24204
24473
  get:
24474
+ x-resource-group: "messages"
24205
24475
  operationId: getWhatsAppMedia
24206
24476
  tags: [WhatsApp]
24207
24477
  summary: Download WhatsApp media
@@ -24245,6 +24515,7 @@ paths:
24245
24515
 
24246
24516
  /v1/inbox/conversations/{conversationId}/messages/{messageId}:
24247
24517
  patch:
24518
+ x-resource-group: "messages"
24248
24519
  operationId: editInboxMessage
24249
24520
  summary: Edit message
24250
24521
  description: |
@@ -24307,6 +24578,7 @@ paths:
24307
24578
  '403':
24308
24579
  description: Inbox addon required
24309
24580
  delete:
24581
+ x-resource-group: "messages"
24310
24582
  operationId: deleteInboxMessage
24311
24583
  summary: Delete message
24312
24584
  description: |
@@ -24353,6 +24625,7 @@ paths:
24353
24625
 
24354
24626
  /v1/inbox/conversations/{conversationId}/typing:
24355
24627
  post:
24628
+ x-resource-group: "messages"
24356
24629
  operationId: sendTypingIndicator
24357
24630
  summary: Send typing indicator
24358
24631
  description: |
@@ -24399,6 +24672,7 @@ paths:
24399
24672
 
24400
24673
  /v1/inbox/conversations/{conversationId}/read:
24401
24674
  post:
24675
+ x-resource-group: "messages"
24402
24676
  operationId: markConversationRead
24403
24677
  summary: Mark a conversation as read
24404
24678
  description: |
@@ -24448,6 +24722,7 @@ paths:
24448
24722
 
24449
24723
  /v1/inbox/conversations/{conversationId}/messages/{messageId}/reactions:
24450
24724
  post:
24725
+ x-resource-group: "messages"
24451
24726
  operationId: addMessageReaction
24452
24727
  summary: Add reaction
24453
24728
  description: |
@@ -24495,6 +24770,7 @@ paths:
24495
24770
  '404':
24496
24771
  description: Account or conversation not found
24497
24772
  delete:
24773
+ x-resource-group: "messages"
24498
24774
  operationId: removeMessageReaction
24499
24775
  summary: Remove reaction
24500
24776
  description: |
@@ -24539,6 +24815,7 @@ paths:
24539
24815
 
24540
24816
  /v1/media/upload-direct:
24541
24817
  post:
24818
+ x-resource-group: "publishing"
24542
24819
  operationId: uploadMediaDirect
24543
24820
  summary: Upload media file
24544
24821
  description: |
@@ -24585,6 +24862,7 @@ paths:
24585
24862
 
24586
24863
  /v1/accounts/{accountId}/messenger-menu:
24587
24864
  get:
24865
+ x-resource-group: "accounts"
24588
24866
  operationId: getMessengerMenu
24589
24867
  summary: Get FB persistent menu
24590
24868
  description: Get the persistent menu configuration for a Facebook Messenger account.
@@ -24608,6 +24886,7 @@ paths:
24608
24886
  description: Not a Facebook account
24609
24887
  '401': { $ref: '#/components/responses/Unauthorized' }
24610
24888
  put:
24889
+ x-resource-group: "accounts"
24611
24890
  operationId: setMessengerMenu
24612
24891
  summary: Set FB persistent menu
24613
24892
  description: Set the persistent menu for a Facebook Messenger account. Max 3 top-level items, max 5 nested items.
@@ -24637,6 +24916,7 @@ paths:
24637
24916
  description: Invalid request
24638
24917
  '401': { $ref: '#/components/responses/Unauthorized' }
24639
24918
  delete:
24919
+ x-resource-group: "accounts"
24640
24920
  operationId: deleteMessengerMenu
24641
24921
  description: Removes the persistent menu from Facebook Messenger conversations for this account.
24642
24922
  summary: Delete FB persistent menu
@@ -24655,6 +24935,7 @@ paths:
24655
24935
 
24656
24936
  /v1/accounts/{accountId}/instagram-ice-breakers:
24657
24937
  get:
24938
+ x-resource-group: "accounts"
24658
24939
  operationId: getInstagramIceBreakers
24659
24940
  summary: Get IG ice breakers
24660
24941
  description: Get the ice breaker configuration for an Instagram account.
@@ -24678,6 +24959,7 @@ paths:
24678
24959
  description: Not an Instagram account
24679
24960
  '401': { $ref: '#/components/responses/Unauthorized' }
24680
24961
  put:
24962
+ x-resource-group: "accounts"
24681
24963
  operationId: setInstagramIceBreakers
24682
24964
  summary: Set IG ice breakers
24683
24965
  description: Set ice breakers for an Instagram account. Max 4 ice breakers, question max 80 chars.
@@ -24713,6 +24995,7 @@ paths:
24713
24995
  description: Invalid request
24714
24996
  '401': { $ref: '#/components/responses/Unauthorized' }
24715
24997
  delete:
24998
+ x-resource-group: "accounts"
24716
24999
  operationId: deleteInstagramIceBreakers
24717
25000
  description: Removes the ice breaker questions from an Instagram account's Messenger experience.
24718
25001
  summary: Delete IG ice breakers
@@ -24731,6 +25014,7 @@ paths:
24731
25014
 
24732
25015
  /v1/accounts/{accountId}/telegram-commands:
24733
25016
  get:
25017
+ x-resource-group: "accounts"
24734
25018
  operationId: getTelegramCommands
24735
25019
  summary: Get TG bot commands
24736
25020
  description: Get the bot commands configuration for a Telegram account.
@@ -24760,6 +25044,7 @@ paths:
24760
25044
  description: Not a Telegram account
24761
25045
  '401': { $ref: '#/components/responses/Unauthorized' }
24762
25046
  put:
25047
+ x-resource-group: "accounts"
24763
25048
  operationId: setTelegramCommands
24764
25049
  summary: Set TG bot commands
24765
25050
  description: Set bot commands for a Telegram account.
@@ -24794,6 +25079,7 @@ paths:
24794
25079
  description: Invalid request
24795
25080
  '401': { $ref: '#/components/responses/Unauthorized' }
24796
25081
  delete:
25082
+ x-resource-group: "accounts"
24797
25083
  operationId: deleteTelegramCommands
24798
25084
  description: Clears all bot commands configured for a Telegram bot account.
24799
25085
  summary: Delete TG bot commands
@@ -24812,6 +25098,7 @@ paths:
24812
25098
 
24813
25099
  /v1/inbox/comments:
24814
25100
  get:
25101
+ x-resource-group: "engagement"
24815
25102
  operationId: listInboxComments
24816
25103
  summary: List commented posts
24817
25104
  description: |
@@ -24924,6 +25211,7 @@ paths:
24924
25211
 
24925
25212
  /v1/inbox/comments/{postId}:
24926
25213
  get:
25214
+ x-resource-group: "engagement"
24927
25215
  operationId: getInboxPostComments
24928
25216
  summary: Get post comments
24929
25217
  description: Fetch comments for a specific post. Requires accountId query parameter.
@@ -25057,6 +25345,7 @@ paths:
25057
25345
  '502':
25058
25346
  description: 'Upstream platform error (code platform_api_error, type platform_error)'
25059
25347
  post:
25348
+ x-resource-group: "engagement"
25060
25349
  operationId: replyToInboxPost
25061
25350
  summary: Reply to comment
25062
25351
  description: Post a reply to a post or specific comment. Requires accountId in request body.
@@ -25110,6 +25399,7 @@ paths:
25110
25399
  '502':
25111
25400
  description: 'Upstream platform error (code platform_api_error, type platform_error)'
25112
25401
  delete:
25402
+ x-resource-group: "engagement"
25113
25403
  operationId: deleteInboxComment
25114
25404
  summary: Delete comment
25115
25405
  description: |
@@ -25161,6 +25451,7 @@ paths:
25161
25451
 
25162
25452
  /v1/inbox/comments/{postId}/{commentId}:
25163
25453
  patch:
25454
+ x-resource-group: "engagement"
25164
25455
  operationId: editInboxComment
25165
25456
  summary: Edit comment
25166
25457
  description: |
@@ -25220,6 +25511,7 @@ paths:
25220
25511
 
25221
25512
  /v1/inbox/comments/{postId}/{commentId}/moderation:
25222
25513
  post:
25514
+ x-resource-group: "engagement"
25223
25515
  operationId: setCommentModeration
25224
25516
  summary: Set comment moderation status
25225
25517
  description: |
@@ -25288,6 +25580,7 @@ paths:
25288
25580
 
25289
25581
  /v1/inbox/comments/{postId}/{commentId}/hide:
25290
25582
  post:
25583
+ x-resource-group: "engagement"
25291
25584
  operationId: hideInboxComment
25292
25585
  summary: Hide comment
25293
25586
  description: |
@@ -25332,6 +25625,7 @@ paths:
25332
25625
  '403':
25333
25626
  description: Inbox addon required
25334
25627
  delete:
25628
+ x-resource-group: "engagement"
25335
25629
  operationId: unhideInboxComment
25336
25630
  summary: Unhide comment
25337
25631
  description: |
@@ -25371,6 +25665,7 @@ paths:
25371
25665
 
25372
25666
  /v1/inbox/comments/{postId}/{commentId}/like:
25373
25667
  post:
25668
+ x-resource-group: "engagement"
25374
25669
  operationId: likeInboxComment
25375
25670
  summary: Like comment
25376
25671
  description: |
@@ -25416,6 +25711,7 @@ paths:
25416
25711
  '403':
25417
25712
  description: Inbox addon required
25418
25713
  delete:
25714
+ x-resource-group: "engagement"
25419
25715
  operationId: unlikeInboxComment
25420
25716
  summary: Unlike comment
25421
25717
  description: |
@@ -25460,6 +25756,7 @@ paths:
25460
25756
 
25461
25757
  /v1/inbox/comments/{postId}/{commentId}/private-reply:
25462
25758
  post:
25759
+ x-resource-group: "messages"
25463
25760
  operationId: sendPrivateReplyToComment
25464
25761
  summary: Send private reply
25465
25762
  description: |
@@ -25635,6 +25932,7 @@ paths:
25635
25932
 
25636
25933
  /v1/twitter/retweet:
25637
25934
  post:
25935
+ x-resource-group: "engagement"
25638
25936
  operationId: retweetPost
25639
25937
  summary: Retweet a post
25640
25938
  description: |
@@ -25669,6 +25967,7 @@ paths:
25669
25967
  '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25670
25968
  '404': { description: Account not found }
25671
25969
  delete:
25970
+ x-resource-group: "engagement"
25672
25971
  operationId: undoRetweet
25673
25972
  summary: Undo retweet
25674
25973
  description: |
@@ -25704,6 +26003,7 @@ paths:
25704
26003
 
25705
26004
  /v1/twitter/bookmark:
25706
26005
  post:
26006
+ x-resource-group: "engagement"
25707
26007
  operationId: bookmarkPost
25708
26008
  summary: Bookmark a tweet
25709
26009
  description: |
@@ -25739,6 +26039,7 @@ paths:
25739
26039
  '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25740
26040
  '404': { description: Account not found }
25741
26041
  delete:
26042
+ x-resource-group: "engagement"
25742
26043
  operationId: removeBookmark
25743
26044
  summary: Remove bookmark
25744
26045
  description: |
@@ -25774,6 +26075,7 @@ paths:
25774
26075
 
25775
26076
  /v1/twitter/follow:
25776
26077
  post:
26078
+ x-resource-group: "engagement"
25777
26079
  operationId: followUser
25778
26080
  summary: Follow a user
25779
26081
  description: |
@@ -25810,6 +26112,7 @@ paths:
25810
26112
  '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25811
26113
  '404': { description: Account not found }
25812
26114
  delete:
26115
+ x-resource-group: "engagement"
25813
26116
  operationId: unfollowUser
25814
26117
  summary: Unfollow a user
25815
26118
  description: |
@@ -25845,6 +26148,7 @@ paths:
25845
26148
 
25846
26149
  /v1/twitter/search:
25847
26150
  get:
26151
+ x-resource-group: "engagement"
25848
26152
  operationId: searchTweets
25849
26153
  summary: Search recent tweets
25850
26154
  description: |
@@ -25950,6 +26254,7 @@ paths:
25950
26254
 
25951
26255
  /v1/twitter/tweet:
25952
26256
  get:
26257
+ x-resource-group: "engagement"
25953
26258
  operationId: getTweet
25954
26259
  summary: Look up a tweet
25955
26260
  description: |
@@ -26014,6 +26319,7 @@ paths:
26014
26319
 
26015
26320
  /v1/inbox/mentions:
26016
26321
  get:
26322
+ x-resource-group: "engagement"
26017
26323
  operationId: listInboxMentions
26018
26324
  summary: List mentions
26019
26325
  description: |
@@ -26113,6 +26419,7 @@ paths:
26113
26419
 
26114
26420
  /v1/inbox/mentions/reply:
26115
26421
  post:
26422
+ x-resource-group: "engagement"
26116
26423
  operationId: replyToMention
26117
26424
  summary: Reply to a mention
26118
26425
  description: |
@@ -26175,6 +26482,7 @@ paths:
26175
26482
 
26176
26483
  /v1/inbox/reviews:
26177
26484
  get:
26485
+ x-resource-group: "engagement"
26178
26486
  operationId: listInboxReviews
26179
26487
  summary: List reviews
26180
26488
  description: |
@@ -26298,6 +26606,7 @@ paths:
26298
26606
 
26299
26607
  /v1/inbox/reviews/{reviewId}/reply:
26300
26608
  post:
26609
+ x-resource-group: "engagement"
26301
26610
  operationId: replyToInboxReview
26302
26611
  summary: Reply to review
26303
26612
  description: Post a reply to a review. Requires accountId in request body.
@@ -26339,6 +26648,7 @@ paths:
26339
26648
  '403':
26340
26649
  description: Inbox addon required
26341
26650
  delete:
26651
+ x-resource-group: "engagement"
26342
26652
  operationId: deleteInboxReviewReply
26343
26653
  summary: Delete review reply
26344
26654
  description: Delete a reply to a review (Google Business only). Requires accountId in request body.
@@ -26383,6 +26693,7 @@ paths:
26383
26693
 
26384
26694
  /v1/whatsapp/templates:
26385
26695
  get:
26696
+ x-resource-group: "accounts"
26386
26697
  operationId: getWhatsAppTemplates
26387
26698
  tags: [WhatsApp]
26388
26699
  summary: List templates
@@ -26425,6 +26736,7 @@ paths:
26425
26736
  '401': { $ref: '#/components/responses/Unauthorized' }
26426
26737
  '404': { description: WhatsApp account not found }
26427
26738
  post:
26739
+ x-resource-group: "accounts"
26428
26740
  operationId: createWhatsAppTemplate
26429
26741
  tags: [WhatsApp]
26430
26742
  summary: Create template
@@ -26563,6 +26875,7 @@ paths:
26563
26875
 
26564
26876
  /v1/whatsapp/templates/{templateName}:
26565
26877
  get:
26878
+ x-resource-group: "accounts"
26566
26879
  operationId: getWhatsAppTemplate
26567
26880
  tags: [WhatsApp]
26568
26881
  summary: Get template
@@ -26609,6 +26922,7 @@ paths:
26609
26922
  '404': { $ref: '#/components/responses/NotFound' }
26610
26923
  '502': { description: Meta rejected the request or was unreachable. Meta 4xx statuses are forwarded as-is. }
26611
26924
  patch:
26925
+ x-resource-group: "accounts"
26612
26926
  operationId: updateWhatsAppTemplate
26613
26927
  tags: [WhatsApp]
26614
26928
  summary: Update template
@@ -26674,6 +26988,7 @@ paths:
26674
26988
  '404': { $ref: '#/components/responses/NotFound' }
26675
26989
  '502': { description: Meta rejected the update or was unreachable. Meta 4xx statuses are forwarded as-is. }
26676
26990
  delete:
26991
+ x-resource-group: "accounts"
26677
26992
  operationId: deleteWhatsAppTemplate
26678
26993
  tags: [WhatsApp]
26679
26994
  summary: Delete template
@@ -26718,6 +27033,7 @@ paths:
26718
27033
 
26719
27034
  /v1/whatsapp/calling:
26720
27035
  get:
27036
+ x-resource-group: "accounts"
26721
27037
  operationId: getWhatsAppCallingConfig
26722
27038
  tags: [WhatsApp Calling]
26723
27039
  summary: Get calling config for an account
@@ -26765,6 +27081,7 @@ paths:
26765
27081
 
26766
27082
  /v1/whatsapp/phone-numbers/{id}/calling:
26767
27083
  post:
27084
+ x-resource-group: "telephony"
26768
27085
  operationId: enableWhatsAppCallingLegacy
26769
27086
  deprecated: true
26770
27087
  tags: [WhatsApp Calling]
@@ -26820,6 +27137,7 @@ paths:
26820
27137
  '404': { description: WhatsApp phone number not found }
26821
27138
  '422': { description: "Not eligible to enable calling: not on usage-based billing, or the number's messaging limit is below Meta's ~2,000-daily-recipient threshold (TIER_250). Warm the number up to raise the limit." }
26822
27139
  patch:
27140
+ x-resource-group: "telephony"
26823
27141
  operationId: updateWhatsAppCallingLegacy
26824
27142
  deprecated: true
26825
27143
  tags: [WhatsApp Calling]
@@ -26862,6 +27180,7 @@ paths:
26862
27180
  '404': { description: WhatsApp phone number not found }
26863
27181
  '422': { description: Calling must be enabled before settings can be updated }
26864
27182
  delete:
27183
+ x-resource-group: "telephony"
26865
27184
  operationId: disableWhatsAppCallingLegacy
26866
27185
  deprecated: true
26867
27186
  tags: [WhatsApp Calling]
@@ -26886,6 +27205,7 @@ paths:
26886
27205
 
26887
27206
  /v1/whatsapp/call-permissions:
26888
27207
  get:
27208
+ x-resource-group: "contacts"
26889
27209
  operationId: getWhatsAppCallPermissions
26890
27210
  tags: [WhatsApp Calling]
26891
27211
  summary: Check call permission
@@ -26924,6 +27244,7 @@ paths:
26924
27244
 
26925
27245
  /v1/whatsapp/calls:
26926
27246
  post:
27247
+ x-resource-group: "messages"
26927
27248
  operationId: initiateWhatsAppCall
26928
27249
  tags: [WhatsApp Calling]
26929
27250
  summary: Initiate outbound call
@@ -26999,6 +27320,7 @@ paths:
26999
27320
  '422': { description: "Calling not enabled, BIC country blocked, or missing Meta SIP credentials" }
27000
27321
  '502': { description: Telnyx-side originate failed; the Call doc has been marked failed. }
27001
27322
  get:
27323
+ x-resource-group: "messages"
27002
27324
  operationId: listWhatsAppCalls
27003
27325
  tags: [WhatsApp Calling]
27004
27326
  summary: List call history for an account
@@ -27057,6 +27379,7 @@ paths:
27057
27379
 
27058
27380
  /v1/whatsapp/calls/{id}:
27059
27381
  get:
27382
+ x-resource-group: "messages"
27060
27383
  operationId: getWhatsAppCall
27061
27384
  tags: [WhatsApp Calling]
27062
27385
  summary: Get a single call
@@ -27080,6 +27403,7 @@ paths:
27080
27403
 
27081
27404
  /v1/whatsapp/calls/{id}/recording:
27082
27405
  get:
27406
+ x-resource-group: "messages"
27083
27407
  operationId: getWhatsAppCallRecording
27084
27408
  tags: [WhatsApp Calling]
27085
27409
  summary: Get a call recording
@@ -27112,6 +27436,7 @@ paths:
27112
27436
 
27113
27437
  /v1/whatsapp/calls/estimate:
27114
27438
  get:
27439
+ x-resource-group: "messages"
27115
27440
  operationId: getWhatsAppCallEstimate
27116
27441
  tags: [WhatsApp Calling]
27117
27442
  summary: Estimate per-minute cost
@@ -27149,6 +27474,7 @@ paths:
27149
27474
 
27150
27475
  /v1/calls:
27151
27476
  get:
27477
+ x-resource-group: "messages"
27152
27478
  operationId: listCalls
27153
27479
  tags: [Calls]
27154
27480
  summary: List all calls (unified history)
@@ -27198,6 +27524,7 @@ paths:
27198
27524
 
27199
27525
  /v1/calls/{id}:
27200
27526
  get:
27527
+ x-resource-group: "messages"
27201
27528
  operationId: getCall
27202
27529
  tags: [Calls]
27203
27530
  summary: Get a call (any channel)
@@ -27232,6 +27559,7 @@ paths:
27232
27559
 
27233
27560
  /v1/calls/{id}/recording:
27234
27561
  get:
27562
+ x-resource-group: "messages"
27235
27563
  operationId: getCallRecording
27236
27564
  tags: [Calls]
27237
27565
  summary: Get a call recording
@@ -27264,6 +27592,7 @@ paths:
27264
27592
 
27265
27593
  /v1/voice/calls:
27266
27594
  post:
27595
+ x-resource-group: "messages"
27267
27596
  operationId: createVoiceCall
27268
27597
  tags: [Voice]
27269
27598
  summary: Place an outbound phone call
@@ -27327,6 +27656,7 @@ paths:
27327
27656
  '429': { description: Outbound call limit reached (per rolling hour). }
27328
27657
  '502': { description: Carrier-side originate failed; the call has been marked failed. }
27329
27658
  get:
27659
+ x-resource-group: "messages"
27330
27660
  operationId: listVoiceCalls
27331
27661
  tags: [Voice]
27332
27662
  summary: List phone calls
@@ -27360,6 +27690,7 @@ paths:
27360
27690
 
27361
27691
  /v1/voice/calls/{id}:
27362
27692
  get:
27693
+ x-resource-group: "messages"
27363
27694
  operationId: getVoiceCall
27364
27695
  tags: [Voice]
27365
27696
  summary: Get a phone call
@@ -27383,6 +27714,7 @@ paths:
27383
27714
 
27384
27715
  /v1/voice/calls/{id}/end:
27385
27716
  post:
27717
+ x-resource-group: "messages"
27386
27718
  operationId: endVoiceCall
27387
27719
  tags: [Voice]
27388
27720
  summary: Hang up a live call
@@ -27412,6 +27744,7 @@ paths:
27412
27744
 
27413
27745
  /v1/voice/calls/{id}/recording:
27414
27746
  get:
27747
+ x-resource-group: "messages"
27415
27748
  operationId: getVoiceCallRecording
27416
27749
  tags: [Voice]
27417
27750
  summary: Get a call recording
@@ -27441,6 +27774,7 @@ paths:
27441
27774
 
27442
27775
  /v1/voice/calls/{id}/transfer:
27443
27776
  post:
27777
+ x-resource-group: "messages"
27444
27778
  operationId: transferVoiceCall
27445
27779
  tags: [Voice]
27446
27780
  summary: Blind-transfer a live call
@@ -27479,6 +27813,7 @@ paths:
27479
27813
 
27480
27814
  /v1/voice/calls/estimate:
27481
27815
  get:
27816
+ x-resource-group: "messages"
27482
27817
  operationId: getVoiceCallEstimate
27483
27818
  tags: [Voice]
27484
27819
  summary: Estimate call cost
@@ -27522,6 +27857,7 @@ paths:
27522
27857
 
27523
27858
  /v1/voice/calls/web:
27524
27859
  post:
27860
+ x-resource-group: "messages"
27525
27861
  operationId: createVoiceWebSession
27526
27862
  tags: [Voice]
27527
27863
  summary: Mint a browser softphone session
@@ -27553,6 +27889,7 @@ paths:
27553
27889
 
27554
27890
  /v1/voice/calls/web/dial:
27555
27891
  post:
27892
+ x-resource-group: "messages"
27556
27893
  operationId: dialVoiceWebCall
27557
27894
  tags: [Voice]
27558
27895
  summary: Dial from the browser softphone
@@ -27599,6 +27936,7 @@ paths:
27599
27936
 
27600
27937
  /v1/sms/messages:
27601
27938
  post:
27939
+ x-resource-group: "messages"
27602
27940
  operationId: sendSms
27603
27941
  tags: [SMS]
27604
27942
  summary: Send an SMS/MMS
@@ -27658,6 +27996,7 @@ paths:
27658
27996
 
27659
27997
  /v1/sms/lookup:
27660
27998
  get:
27999
+ x-resource-group: "telephony"
27661
28000
  operationId: lookupSmsNumber
27662
28001
  tags: [SMS]
27663
28002
  summary: Look up carrier + line type
@@ -27688,6 +28027,7 @@ paths:
27688
28027
 
27689
28028
  /v1/sms/opt-outs:
27690
28029
  get:
28030
+ x-resource-group: "contacts"
27691
28031
  operationId: listSmsOptOuts
27692
28032
  tags: [SMS]
27693
28033
  summary: List SMS opt-outs
@@ -27725,6 +28065,7 @@ paths:
27725
28065
 
27726
28066
  /v1/sms/sender-ids:
27727
28067
  post:
28068
+ x-resource-group: "telephony"
27728
28069
  operationId: createSmsSenderId
27729
28070
  tags: [SMS]
27730
28071
  summary: Create an alphanumeric sender ID
@@ -27772,6 +28113,7 @@ paths:
27772
28113
  '403': { description: 'Workspace is not on usage-based billing, or already holds the maximum of 1,000 active sender IDs (code `sender_id_limit_reached`; raisable via support).' }
27773
28114
  '422': { description: 'Sender ID rejected: it appears to impersonate a protected brand or institution.' }
27774
28115
  get:
28116
+ x-resource-group: "telephony"
27775
28117
  operationId: listSmsSenderIds
27776
28118
  tags: [SMS]
27777
28119
  summary: List alphanumeric sender IDs
@@ -27812,6 +28154,7 @@ paths:
27812
28154
 
27813
28155
  /v1/sms/sender-ids/limit-request:
27814
28156
  post:
28157
+ x-resource-group: "telephony"
27815
28158
  operationId: requestSmsSenderIdLimitIncrease
27816
28159
  tags: [SMS]
27817
28160
  summary: Request a higher sender ID daily limit
@@ -27848,6 +28191,7 @@ paths:
27848
28191
 
27849
28192
  /v1/sms/sender-ids/{id}:
27850
28193
  delete:
28194
+ x-resource-group: "telephony"
27851
28195
  operationId: deleteSmsSenderId
27852
28196
  tags: [SMS]
27853
28197
  summary: Delete an alphanumeric sender ID
@@ -27873,6 +28217,7 @@ paths:
27873
28217
 
27874
28218
  /v1/sms/registrations:
27875
28219
  post:
28220
+ x-resource-group: "telephony"
27876
28221
  operationId: startSmsRegistration
27877
28222
  tags: [SMS]
27878
28223
  summary: Start a carrier registration
@@ -28022,6 +28367,7 @@ paths:
28022
28367
  '401': { $ref: '#/components/responses/Unauthorized' }
28023
28368
  '422': { description: Carrier registry rejected a field; `param` names it when known. }
28024
28369
  get:
28370
+ x-resource-group: "telephony"
28025
28371
  operationId: listSmsRegistrations
28026
28372
  tags: [SMS]
28027
28373
  summary: List carrier registrations
@@ -28071,6 +28417,7 @@ paths:
28071
28417
 
28072
28418
  /v1/sms/registrations/preflight:
28073
28419
  post:
28420
+ x-resource-group: "telephony"
28074
28421
  operationId: preflightSmsRegistration
28075
28422
  tags: [SMS]
28076
28423
  summary: Pre-check a carrier registration
@@ -28125,6 +28472,7 @@ paths:
28125
28472
  '401': { $ref: '#/components/responses/Unauthorized' }
28126
28473
  /v1/sms/registrations/{id}:
28127
28474
  delete:
28475
+ x-resource-group: "telephony"
28128
28476
  operationId: deactivateSmsRegistration
28129
28477
  tags: [SMS]
28130
28478
  summary: Deactivate a brand/campaign registration
@@ -28153,6 +28501,7 @@ paths:
28153
28501
  '401': { $ref: '#/components/responses/Unauthorized' }
28154
28502
  '404': { description: Registration not found }
28155
28503
  get:
28504
+ x-resource-group: "telephony"
28156
28505
  operationId: getSmsRegistration
28157
28506
  tags: [SMS]
28158
28507
  summary: Get a carrier registration
@@ -28193,6 +28542,7 @@ paths:
28193
28542
 
28194
28543
  /v1/sms/registrations/{id}/verify-otp:
28195
28544
  post:
28545
+ x-resource-group: "telephony"
28196
28546
  operationId: verifySmsRegistrationOtp
28197
28547
  tags: [SMS]
28198
28548
  summary: Submit the sole-prop OTP
@@ -28228,6 +28578,7 @@ paths:
28228
28578
 
28229
28579
  /v1/sms/registrations/{id}/resend-otp:
28230
28580
  post:
28581
+ x-resource-group: "telephony"
28231
28582
  operationId: resendSmsRegistrationOtp
28232
28583
  tags: [SMS]
28233
28584
  summary: Re-send the sole-prop OTP
@@ -28256,6 +28607,7 @@ paths:
28256
28607
 
28257
28608
  /v1/sms/registrations/{id}/appeal:
28258
28609
  post:
28610
+ x-resource-group: "telephony"
28259
28611
  operationId: appealSmsRegistration
28260
28612
  tags: [SMS]
28261
28613
  summary: Appeal a rejected campaign
@@ -28302,6 +28654,7 @@ paths:
28302
28654
 
28303
28655
  /v1/sms/registrations/{id}/respond:
28304
28656
  post:
28657
+ x-resource-group: "telephony"
28305
28658
  operationId: respondToSmsRegistrationReview
28306
28659
  tags: [SMS]
28307
28660
  summary: Reply to a change request
@@ -28346,6 +28699,7 @@ paths:
28346
28699
 
28347
28700
  /v1/sms/opt-in-proof:
28348
28701
  post:
28702
+ x-resource-group: "contacts"
28349
28703
  operationId: uploadSmsOptInProofFile
28350
28704
  tags: [SMS]
28351
28705
  summary: Upload opt-in form proof
@@ -28381,6 +28735,7 @@ paths:
28381
28735
 
28382
28736
  /v1/sms/registrations/{id}/opt-in-proof:
28383
28737
  post:
28738
+ x-resource-group: "contacts"
28384
28739
  operationId: uploadSmsOptInProof
28385
28740
  tags: [SMS]
28386
28741
  summary: Upload opt-in form proof for an appeal
@@ -28419,6 +28774,7 @@ paths:
28419
28774
 
28420
28775
  /v1/sms/registrations/share:
28421
28776
  post:
28777
+ x-resource-group: "telephony"
28422
28778
  operationId: shareSmsRegistration
28423
28779
  tags: [SMS]
28424
28780
  summary: Create a registration share link
@@ -28454,6 +28810,7 @@ paths:
28454
28810
 
28455
28811
  /v1/whatsapp/template-library:
28456
28812
  get:
28813
+ x-resource-group: "accounts"
28457
28814
  operationId: getWhatsAppLibraryTemplate
28458
28815
  tags: [WhatsApp Templates]
28459
28816
  summary: Look up a library template
@@ -28501,6 +28858,7 @@ paths:
28501
28858
 
28502
28859
  /v1/whatsapp/business-profile:
28503
28860
  get:
28861
+ x-resource-group: "accounts"
28504
28862
  operationId: getWhatsAppBusinessProfile
28505
28863
  tags: [WhatsApp]
28506
28864
  summary: Get business profile
@@ -28541,6 +28899,7 @@ paths:
28541
28899
  '401': { $ref: '#/components/responses/Unauthorized' }
28542
28900
  '404': { description: WhatsApp account not found }
28543
28901
  post:
28902
+ x-resource-group: "accounts"
28544
28903
  operationId: updateWhatsAppBusinessProfile
28545
28904
  tags: [WhatsApp]
28546
28905
  summary: Update business profile
@@ -28612,6 +28971,7 @@ paths:
28612
28971
 
28613
28972
  /v1/whatsapp/business-profile/photo:
28614
28973
  post:
28974
+ x-resource-group: "accounts"
28615
28975
  operationId: uploadWhatsAppProfilePhoto
28616
28976
  tags: [WhatsApp]
28617
28977
  summary: Upload profile picture
@@ -28670,6 +29030,7 @@ paths:
28670
29030
 
28671
29031
  /v1/whatsapp/business-profile/display-name:
28672
29032
  get:
29033
+ x-resource-group: "accounts"
28673
29034
  operationId: getWhatsAppDisplayName
28674
29035
  tags: [WhatsApp]
28675
29036
  summary: Get display name status
@@ -28707,6 +29068,7 @@ paths:
28707
29068
  '401': { $ref: '#/components/responses/Unauthorized' }
28708
29069
  '404': { description: WhatsApp account not found or accountId is not a valid ObjectId }
28709
29070
  post:
29071
+ x-resource-group: "accounts"
28710
29072
  operationId: updateWhatsAppDisplayName
28711
29073
  tags: [WhatsApp]
28712
29074
  summary: Request display name change
@@ -28756,6 +29118,7 @@ paths:
28756
29118
 
28757
29119
  /v1/whatsapp/business-profile/username:
28758
29120
  get:
29121
+ x-resource-group: "accounts"
28759
29122
  operationId: getWhatsappBusinessUsername
28760
29123
  tags: [WhatsApp]
28761
29124
  summary: Get business username
@@ -28790,6 +29153,7 @@ paths:
28790
29153
  '401': { $ref: '#/components/responses/Unauthorized' }
28791
29154
  '404': { description: WhatsApp account not found }
28792
29155
  post:
29156
+ x-resource-group: "accounts"
28793
29157
  operationId: setWhatsappBusinessUsername
28794
29158
  tags: [WhatsApp]
28795
29159
  summary: Set business username
@@ -28855,6 +29219,7 @@ paths:
28855
29219
  '401': { $ref: '#/components/responses/Unauthorized' }
28856
29220
  '404': { description: WhatsApp account not found }
28857
29221
  delete:
29222
+ x-resource-group: "accounts"
28858
29223
  operationId: deleteWhatsappBusinessUsername
28859
29224
  tags: [WhatsApp]
28860
29225
  summary: Delete business username
@@ -28892,6 +29257,7 @@ paths:
28892
29257
 
28893
29258
  /v1/whatsapp/business-profile/username/suggestions:
28894
29259
  get:
29260
+ x-resource-group: "accounts"
28895
29261
  operationId: getWhatsappBusinessUsernameSuggestions
28896
29262
  tags: [WhatsApp]
28897
29263
  summary: Get username suggestions
@@ -28928,6 +29294,7 @@ paths:
28928
29294
 
28929
29295
  /v1/whatsapp/number-info:
28930
29296
  get:
29297
+ x-resource-group: "contacts"
28931
29298
  operationId: getWhatsAppNumberInfo
28932
29299
  tags: [WhatsApp Phone Numbers]
28933
29300
  summary: Get number status
@@ -28976,6 +29343,7 @@ paths:
28976
29343
 
28977
29344
  /v1/whatsapp/block-users/status:
28978
29345
  get:
29346
+ x-resource-group: "contacts"
28979
29347
  operationId: getWhatsAppBlockStatus
28980
29348
  tags: [WhatsApp]
28981
29349
  summary: Check if a user is blocked
@@ -29004,6 +29372,7 @@ paths:
29004
29372
 
29005
29373
  /v1/whatsapp/block-users:
29006
29374
  get:
29375
+ x-resource-group: "contacts"
29007
29376
  operationId: getWhatsAppBlockedUsers
29008
29377
  tags: [WhatsApp]
29009
29378
  summary: List blocked users
@@ -29035,6 +29404,7 @@ paths:
29035
29404
  '401': { $ref: '#/components/responses/Unauthorized' }
29036
29405
  '404': { description: WhatsApp account not found }
29037
29406
  post:
29407
+ x-resource-group: "contacts"
29038
29408
  operationId: blockWhatsAppUsers
29039
29409
  tags: [WhatsApp]
29040
29410
  summary: Block users
@@ -29093,6 +29463,7 @@ paths:
29093
29463
  '401': { $ref: '#/components/responses/Unauthorized' }
29094
29464
  '404': { description: WhatsApp account not found }
29095
29465
  delete:
29466
+ x-resource-group: "contacts"
29096
29467
  operationId: unblockWhatsAppUsers
29097
29468
  tags: [WhatsApp]
29098
29469
  summary: Unblock users
@@ -29146,6 +29517,7 @@ paths:
29146
29517
 
29147
29518
  /v1/whatsapp/dataset:
29148
29519
  get:
29520
+ x-resource-group: "accounts"
29149
29521
  operationId: getWhatsAppDataset
29150
29522
  tags: [WhatsApp]
29151
29523
  summary: Get CTWA conversions dataset
@@ -29173,6 +29545,7 @@ paths:
29173
29545
  '401': { $ref: '#/components/responses/Unauthorized' }
29174
29546
  '404': { description: WhatsApp account not found }
29175
29547
  post:
29548
+ x-resource-group: "accounts"
29176
29549
  operationId: createWhatsAppDataset
29177
29550
  tags: [WhatsApp]
29178
29551
  summary: Provision CTWA dataset
@@ -29234,6 +29607,7 @@ paths:
29234
29607
 
29235
29608
  /v1/phone-numbers:
29236
29609
  get:
29610
+ x-resource-group: "telephony"
29237
29611
  operationId: listPhoneNumbers
29238
29612
  tags: [Phone Numbers]
29239
29613
  summary: List phone numbers
@@ -29333,6 +29707,7 @@ paths:
29333
29707
 
29334
29708
  /v1/phone-numbers/{id}:
29335
29709
  get:
29710
+ x-resource-group: "telephony"
29336
29711
  operationId: getPhoneNumber
29337
29712
  tags: [Phone Numbers]
29338
29713
  summary: Get phone number
@@ -29378,6 +29753,7 @@ paths:
29378
29753
  '401': { $ref: '#/components/responses/Unauthorized' }
29379
29754
  '404': { $ref: '#/components/responses/NotFound' }
29380
29755
  delete:
29756
+ x-resource-group: "telephony"
29381
29757
  operationId: releasePhoneNumber
29382
29758
  tags: [Phone Numbers]
29383
29759
  summary: Release phone number
@@ -29418,6 +29794,7 @@ paths:
29418
29794
 
29419
29795
  /v1/phone-numbers/purchase:
29420
29796
  post:
29797
+ x-resource-group: "telephony"
29421
29798
  operationId: purchasePhoneNumber
29422
29799
  tags: [Phone Numbers]
29423
29800
  summary: Purchase phone number
@@ -29603,6 +29980,7 @@ paths:
29603
29980
 
29604
29981
  /v1/phone-numbers/countries:
29605
29982
  get:
29983
+ x-resource-group: "telephony"
29606
29984
  operationId: listPhoneNumberCountries
29607
29985
  tags: [Phone Numbers]
29608
29986
  summary: List offerable number countries
@@ -29659,6 +30037,7 @@ paths:
29659
30037
 
29660
30038
  /v1/phone-numbers/available:
29661
30039
  get:
30040
+ x-resource-group: "telephony"
29662
30041
  operationId: searchAvailablePhoneNumbers
29663
30042
  tags: [Phone Numbers]
29664
30043
  summary: Search available numbers
@@ -29701,6 +30080,7 @@ paths:
29701
30080
 
29702
30081
  /v1/phone-numbers/availability:
29703
30082
  get:
30083
+ x-resource-group: "telephony"
29704
30084
  operationId: checkPhoneNumberAvailability
29705
30085
  tags: [Phone Numbers]
29706
30086
  summary: Check country availability
@@ -29762,6 +30142,7 @@ paths:
29762
30142
 
29763
30143
  /v1/whatsapp/phone-numbers:
29764
30144
  get:
30145
+ x-resource-group: "telephony"
29765
30146
  operationId: getWhatsAppPhoneNumbers
29766
30147
  deprecated: true
29767
30148
  tags: [WhatsApp Phone Numbers]
@@ -29866,6 +30247,7 @@ paths:
29866
30247
 
29867
30248
  /v1/whatsapp/phone-numbers/purchase:
29868
30249
  post:
30250
+ x-resource-group: "telephony"
29869
30251
  operationId: purchaseWhatsAppPhoneNumber
29870
30252
  deprecated: true
29871
30253
  tags: [WhatsApp Phone Numbers]
@@ -29993,6 +30375,7 @@ paths:
29993
30375
 
29994
30376
  /v1/whatsapp/phone-numbers/countries:
29995
30377
  get:
30378
+ x-resource-group: "telephony"
29996
30379
  operationId: listWhatsAppNumberCountries
29997
30380
  deprecated: true
29998
30381
  tags: [WhatsApp Phone Numbers]
@@ -30029,6 +30412,7 @@ paths:
30029
30412
 
30030
30413
  /v1/whatsapp/phone-numbers/available:
30031
30414
  get:
30415
+ x-resource-group: "telephony"
30032
30416
  operationId: searchAvailableWhatsAppNumbers
30033
30417
  deprecated: true
30034
30418
  tags: [WhatsApp Phone Numbers]
@@ -30070,6 +30454,7 @@ paths:
30070
30454
 
30071
30455
  /v1/whatsapp/phone-numbers/availability:
30072
30456
  get:
30457
+ x-resource-group: "telephony"
30073
30458
  operationId: checkWhatsAppNumberAvailability
30074
30459
  deprecated: true
30075
30460
  tags: [WhatsApp Phone Numbers]
@@ -30135,6 +30520,7 @@ paths:
30135
30520
 
30136
30521
  /v1/phone-numbers/kyc:
30137
30522
  get:
30523
+ x-resource-group: "telephony"
30138
30524
  operationId: getPhoneNumberKycForm
30139
30525
  tags: [Phone Numbers]
30140
30526
  summary: Get KYC form spec
@@ -30202,6 +30588,7 @@ paths:
30202
30588
  '400': { description: Country not available }
30203
30589
  '401': { $ref: '#/components/responses/Unauthorized' }
30204
30590
  post:
30591
+ x-resource-group: "telephony"
30205
30592
  operationId: submitPhoneNumberKyc
30206
30593
  tags: [Phone Numbers]
30207
30594
  summary: Submit KYC
@@ -30307,6 +30694,7 @@ paths:
30307
30694
 
30308
30695
  /v1/phone-numbers/kyc/document/{documentId}:
30309
30696
  get:
30697
+ x-resource-group: "telephony"
30310
30698
  operationId: viewPhoneNumberKycDocument
30311
30699
  tags: [Phone Numbers]
30312
30700
  summary: View a KYC document on file
@@ -30335,6 +30723,7 @@ paths:
30335
30723
 
30336
30724
  /v1/phone-numbers/kyc/upload-document:
30337
30725
  post:
30726
+ x-resource-group: "telephony"
30338
30727
  operationId: uploadPhoneNumberKycDocument
30339
30728
  tags: [Phone Numbers]
30340
30729
  summary: Upload a KYC document
@@ -30368,6 +30757,7 @@ paths:
30368
30757
 
30369
30758
  /v1/phone-numbers/kyc/validate-address:
30370
30759
  post:
30760
+ x-resource-group: "telephony"
30371
30761
  operationId: validatePhoneNumberKycAddress
30372
30762
  tags: [Phone Numbers]
30373
30763
  summary: Pre-validate KYC address
@@ -30437,6 +30827,7 @@ paths:
30437
30827
 
30438
30828
  /v1/phone-numbers/kyc/share:
30439
30829
  post:
30830
+ x-resource-group: "telephony"
30440
30831
  operationId: createPhoneNumberKycLink
30441
30832
  tags: [Phone Numbers]
30442
30833
  summary: Create a hosted KYC link
@@ -30497,6 +30888,7 @@ paths:
30497
30888
 
30498
30889
  /v1/phone-numbers/port-in:
30499
30890
  post:
30891
+ x-resource-group: "telephony"
30500
30892
  operationId: createPhoneNumberPortIn
30501
30893
  tags: [Phone Numbers]
30502
30894
  summary: Port numbers in
@@ -30608,6 +31000,7 @@ paths:
30608
31000
  '409': { description: "A number is already provisioned, or already in an in-flight port" }
30609
31001
  '422': { description: "A number is not portable (reason included), numbers span multiple non-US/CA countries, or every split order failed to submit" }
30610
31002
  get:
31003
+ x-resource-group: "telephony"
30611
31004
  operationId: listPhoneNumberPortIns
30612
31005
  tags: [Phone Numbers]
30613
31006
  summary: List port-in orders
@@ -30644,6 +31037,7 @@ paths:
30644
31037
 
30645
31038
  /v1/phone-numbers/port-in/check:
30646
31039
  post:
31040
+ x-resource-group: "telephony"
30647
31041
  operationId: checkPhoneNumberPortability
30648
31042
  tags: [Phone Numbers]
30649
31043
  summary: Check portability
@@ -30692,6 +31086,7 @@ paths:
30692
31086
 
30693
31087
  /v1/phone-numbers/port-in/documents:
30694
31088
  post:
31089
+ x-resource-group: "telephony"
30695
31090
  operationId: uploadPhoneNumberPortInDocument
30696
31091
  tags: [Phone Numbers]
30697
31092
  summary: Upload a porting document
@@ -30729,6 +31124,7 @@ paths:
30729
31124
 
30730
31125
  /v1/phone-numbers/port-in/requirements:
30731
31126
  get:
31127
+ x-resource-group: "telephony"
30732
31128
  operationId: getPhoneNumberPortInRequirements
30733
31129
  tags: [Phone Numbers]
30734
31130
  summary: Country porting requirements
@@ -30772,6 +31168,7 @@ paths:
30772
31168
 
30773
31169
  /v1/phone-numbers/port-in/{id}/requirements:
30774
31170
  get:
31171
+ x-resource-group: "telephony"
30775
31172
  operationId: getPhoneNumberPortInOrderRequirements
30776
31173
  tags: [Phone Numbers]
30777
31174
  summary: A port-in order's pending requirements
@@ -30813,6 +31210,7 @@ paths:
30813
31210
 
30814
31211
  /v1/phone-numbers/port-in/{id}:
30815
31212
  delete:
31213
+ x-resource-group: "telephony"
30816
31214
  operationId: cancelPhoneNumberPortIn
30817
31215
  tags: [Phone Numbers]
30818
31216
  summary: Cancel a port-in
@@ -30842,6 +31240,7 @@ paths:
30842
31240
 
30843
31241
  /v1/phone-numbers/kyc/review-packet:
30844
31242
  post:
31243
+ x-resource-group: "telephony"
30845
31244
  operationId: reviewPhoneNumberKycPacket
30846
31245
  tags: [Phone Numbers]
30847
31246
  summary: Pre-review a KYC packet
@@ -30896,6 +31295,7 @@ paths:
30896
31295
 
30897
31296
  /v1/phone-numbers/{id}/remediate:
30898
31297
  get:
31298
+ x-resource-group: "telephony"
30899
31299
  operationId: getPhoneNumberRemediation
30900
31300
  tags: [Phone Numbers]
30901
31301
  summary: Get declined requirements
@@ -30925,6 +31325,7 @@ paths:
30925
31325
  '401': { $ref: '#/components/responses/Unauthorized' }
30926
31326
  '404': { description: Number not found }
30927
31327
  post:
31328
+ x-resource-group: "telephony"
30928
31329
  operationId: remediatePhoneNumber
30929
31330
  tags: [Phone Numbers]
30930
31331
  summary: Resubmit a declined number
@@ -30969,6 +31370,7 @@ paths:
30969
31370
 
30970
31371
  /v1/phone-numbers/{id}/remediate/reply:
30971
31372
  post:
31373
+ x-resource-group: "telephony"
30972
31374
  operationId: replyToPhoneNumberReviewer
30973
31375
  tags: [Phone Numbers]
30974
31376
  summary: Reply to the regulatory reviewer
@@ -31021,6 +31423,7 @@ paths:
31021
31423
 
31022
31424
  /v1/phone-numbers/{id}/remediate/respond:
31023
31425
  post:
31426
+ x-resource-group: "telephony"
31024
31427
  operationId: respondToPhoneNumberReviewer
31025
31428
  tags: [Phone Numbers]
31026
31429
  summary: Respond to the regulatory reviewer (message + corrections)
@@ -31098,6 +31501,7 @@ paths:
31098
31501
 
31099
31502
  /v1/whatsapp/phone-numbers/kyc:
31100
31503
  get:
31504
+ x-resource-group: "telephony"
31101
31505
  operationId: getWhatsAppNumberKycForm
31102
31506
  deprecated: true
31103
31507
  tags: [WhatsApp Phone Numbers]
@@ -31170,6 +31574,7 @@ paths:
31170
31574
  '400': { description: Country not available }
31171
31575
  '401': { $ref: '#/components/responses/Unauthorized' }
31172
31576
  post:
31577
+ x-resource-group: "telephony"
31173
31578
  operationId: submitWhatsAppNumberKyc
31174
31579
  deprecated: true
31175
31580
  tags: [WhatsApp Phone Numbers]
@@ -31279,6 +31684,7 @@ paths:
31279
31684
 
31280
31685
  /v1/whatsapp/phone-numbers/kyc/upload-document:
31281
31686
  post:
31687
+ x-resource-group: "telephony"
31282
31688
  operationId: uploadWhatsAppNumberKycDocument
31283
31689
  deprecated: true
31284
31690
  tags: [WhatsApp Phone Numbers]
@@ -31316,6 +31722,7 @@ paths:
31316
31722
 
31317
31723
  /v1/whatsapp/phone-numbers/kyc/validate-address:
31318
31724
  post:
31725
+ x-resource-group: "telephony"
31319
31726
  operationId: validateWhatsAppNumberKycAddress
31320
31727
  deprecated: true
31321
31728
  tags: [WhatsApp Phone Numbers]
@@ -31389,6 +31796,7 @@ paths:
31389
31796
 
31390
31797
  /v1/whatsapp/phone-numbers/kyc/share:
31391
31798
  post:
31799
+ x-resource-group: "telephony"
31392
31800
  operationId: createWhatsAppNumberKycLink
31393
31801
  deprecated: true
31394
31802
  tags: [WhatsApp Phone Numbers]
@@ -31453,6 +31861,7 @@ paths:
31453
31861
 
31454
31862
  /v1/whatsapp/phone-numbers/{id}/remediate:
31455
31863
  get:
31864
+ x-resource-group: "telephony"
31456
31865
  operationId: getWhatsAppNumberRemediation
31457
31866
  deprecated: true
31458
31867
  tags: [WhatsApp Phone Numbers]
@@ -31486,6 +31895,7 @@ paths:
31486
31895
  '401': { $ref: '#/components/responses/Unauthorized' }
31487
31896
  '404': { description: Number not found }
31488
31897
  post:
31898
+ x-resource-group: "telephony"
31489
31899
  operationId: remediateWhatsAppNumber
31490
31900
  deprecated: true
31491
31901
  tags: [WhatsApp Phone Numbers]
@@ -31534,6 +31944,7 @@ paths:
31534
31944
 
31535
31945
  /v1/phone-numbers/{id}/voice:
31536
31946
  post:
31947
+ x-resource-group: "telephony"
31537
31948
  operationId: enableVoiceOnNumber
31538
31949
  tags: [Voice]
31539
31950
  summary: Enable phone calling on a number
@@ -31623,6 +32034,7 @@ paths:
31623
32034
  '404': { description: Number not found }
31624
32035
  '422': { description: "This number is hosted by your own carrier (brought via WhatsApp embedded signup), so calls can't be enabled on it." }
31625
32036
  delete:
32037
+ x-resource-group: "telephony"
31626
32038
  operationId: disableVoiceOnNumber
31627
32039
  tags: [Voice]
31628
32040
  summary: Disable phone calling on a number
@@ -31648,6 +32060,7 @@ paths:
31648
32060
 
31649
32061
  /v1/phone-numbers/{id}/sms:
31650
32062
  post:
32063
+ x-resource-group: "telephony"
31651
32064
  operationId: enableSmsOnNumber
31652
32065
  tags: [SMS]
31653
32066
  summary: Enable SMS on a number
@@ -31704,6 +32117,7 @@ paths:
31704
32117
  '404': { description: Number not found }
31705
32118
  '422': { description: "This number is hosted by your own carrier (brought via WhatsApp embedded signup), so SMS can't be enabled on it." }
31706
32119
  delete:
32120
+ x-resource-group: "telephony"
31707
32121
  operationId: disableSmsOnNumber
31708
32122
  tags: [SMS]
31709
32123
  summary: Disable SMS on a number
@@ -31731,6 +32145,7 @@ paths:
31731
32145
 
31732
32146
  /v1/phone-numbers/{id}/sms/reuse-registration:
31733
32147
  post:
32148
+ x-resource-group: "telephony"
31734
32149
  operationId: reuseSmsRegistrationForNumber
31735
32150
  tags: [SMS]
31736
32151
  summary: Add number to SMS registration
@@ -31760,6 +32175,7 @@ paths:
31760
32175
 
31761
32176
  /v1/phone-numbers/{id}/whatsapp/calling:
31762
32177
  get:
32178
+ x-resource-group: "telephony"
31763
32179
  operationId: getWhatsAppCalling
31764
32180
  tags: [WhatsApp Calling]
31765
32181
  summary: Get calling config for a number
@@ -31805,6 +32221,7 @@ paths:
31805
32221
  '401': { $ref: '#/components/responses/Unauthorized' }
31806
32222
  '404': { description: Number not found }
31807
32223
  post:
32224
+ x-resource-group: "telephony"
31808
32225
  operationId: enableWhatsAppCalling
31809
32226
  tags: [WhatsApp Calling]
31810
32227
  summary: Enable calling on a number
@@ -31856,6 +32273,7 @@ paths:
31856
32273
  '404': { description: Phone number not found }
31857
32274
  '422': { description: "Not eligible to enable calling: not on usage-based billing, or the number's messaging limit is below Meta's ~2,000-daily-recipient threshold (TIER_250). Warm the number up to raise the limit." }
31858
32275
  patch:
32276
+ x-resource-group: "telephony"
31859
32277
  operationId: updateWhatsAppCalling
31860
32278
  tags: [WhatsApp Calling]
31861
32279
  summary: Update calling config
@@ -31894,6 +32312,7 @@ paths:
31894
32312
  '404': { description: Phone number not found }
31895
32313
  '422': { description: Calling must be enabled before settings can be updated }
31896
32314
  delete:
32315
+ x-resource-group: "telephony"
31897
32316
  operationId: disableWhatsAppCalling
31898
32317
  tags: [WhatsApp Calling]
31899
32318
  summary: Disable calling on a number
@@ -31914,6 +32333,7 @@ paths:
31914
32333
 
31915
32334
  /v1/phone-numbers/{id}/whatsapp/caller-id-verification:
31916
32335
  post:
32336
+ x-resource-group: "telephony"
31917
32337
  operationId: startWhatsAppCallerIdVerification
31918
32338
  tags: [WhatsApp Calling]
31919
32339
  summary: Start caller-ID verification for a customer-brought number
@@ -31954,6 +32374,7 @@ paths:
31954
32374
 
31955
32375
  /v1/phone-numbers/{id}/whatsapp/caller-id-verification/verify:
31956
32376
  post:
32377
+ x-resource-group: "telephony"
31957
32378
  operationId: verifyWhatsAppCallerId
31958
32379
  tags: [WhatsApp Calling]
31959
32380
  summary: Confirm the caller-ID verification code
@@ -31990,6 +32411,7 @@ paths:
31990
32411
 
31991
32412
  /v1/whatsapp/phone-numbers/{phoneNumberId}:
31992
32413
  get:
32414
+ x-resource-group: "telephony"
31993
32415
  operationId: getWhatsAppPhoneNumber
31994
32416
  deprecated: true
31995
32417
  tags: [WhatsApp Phone Numbers]
@@ -32039,6 +32461,7 @@ paths:
32039
32461
  '401': { $ref: '#/components/responses/Unauthorized' }
32040
32462
  '404': { $ref: '#/components/responses/NotFound' }
32041
32463
  delete:
32464
+ x-resource-group: "telephony"
32042
32465
  operationId: releaseWhatsAppPhoneNumber
32043
32466
  deprecated: true
32044
32467
  tags: [WhatsApp Phone Numbers]
@@ -32097,6 +32520,7 @@ paths:
32097
32520
 
32098
32521
  /v1/whatsapp/sandbox/sessions:
32099
32522
  get:
32523
+ x-resource-group: "messages"
32100
32524
  operationId: listWhatsAppSandboxSessions
32101
32525
  tags: [WhatsApp Sandbox]
32102
32526
  summary: List your sandbox sessions
@@ -32125,6 +32549,7 @@ paths:
32125
32549
  '401': { $ref: '#/components/responses/Unauthorized' }
32126
32550
  '403': { description: Inbox addon required }
32127
32551
  post:
32552
+ x-resource-group: "messages"
32128
32553
  operationId: createWhatsAppSandboxSession
32129
32554
  tags: [WhatsApp Sandbox]
32130
32555
  summary: Start a sandbox activation
@@ -32178,6 +32603,7 @@ paths:
32178
32603
 
32179
32604
  /v1/whatsapp/sandbox/sessions/{sessionId}:
32180
32605
  delete:
32606
+ x-resource-group: "messages"
32181
32607
  operationId: deleteWhatsAppSandboxSession
32182
32608
  tags: [WhatsApp Sandbox]
32183
32609
  summary: Revoke a sandbox session
@@ -32214,6 +32640,7 @@ paths:
32214
32640
 
32215
32641
  /v1/whatsapp/wa-groups:
32216
32642
  get:
32643
+ x-resource-group: "messages"
32217
32644
  operationId: listWhatsAppGroupChats
32218
32645
  tags: [WhatsApp]
32219
32646
  summary: List active groups
@@ -32255,6 +32682,7 @@ paths:
32255
32682
  '400': { $ref: '#/components/responses/BadRequest' }
32256
32683
  '401': { $ref: '#/components/responses/Unauthorized' }
32257
32684
  post:
32685
+ x-resource-group: "messages"
32258
32686
  operationId: createWhatsAppGroupChat
32259
32687
  tags: [WhatsApp]
32260
32688
  summary: Create group
@@ -32298,6 +32726,7 @@ paths:
32298
32726
 
32299
32727
  /v1/whatsapp/wa-groups/{groupId}:
32300
32728
  get:
32729
+ x-resource-group: "messages"
32301
32730
  operationId: getWhatsAppGroupChat
32302
32731
  tags: [WhatsApp]
32303
32732
  summary: Get group info
@@ -32341,6 +32770,7 @@ paths:
32341
32770
  '401': { $ref: '#/components/responses/Unauthorized' }
32342
32771
  '404': { $ref: '#/components/responses/NotFound' }
32343
32772
  post:
32773
+ x-resource-group: "messages"
32344
32774
  operationId: updateWhatsAppGroupChat
32345
32775
  tags: [WhatsApp]
32346
32776
  summary: Update group settings
@@ -32377,6 +32807,7 @@ paths:
32377
32807
  '401': { $ref: '#/components/responses/Unauthorized' }
32378
32808
  '404': { $ref: '#/components/responses/NotFound' }
32379
32809
  delete:
32810
+ x-resource-group: "messages"
32380
32811
  operationId: deleteWhatsAppGroupChat
32381
32812
  tags: [WhatsApp]
32382
32813
  summary: Delete group
@@ -32405,6 +32836,7 @@ paths:
32405
32836
 
32406
32837
  /v1/whatsapp/wa-groups/{groupId}/participants:
32407
32838
  post:
32839
+ x-resource-group: "messages"
32408
32840
  operationId: addWhatsAppGroupParticipants
32409
32841
  tags: [WhatsApp]
32410
32842
  summary: Add participants
@@ -32443,6 +32875,7 @@ paths:
32443
32875
  '400': { $ref: '#/components/responses/BadRequest' }
32444
32876
  '401': { $ref: '#/components/responses/Unauthorized' }
32445
32877
  delete:
32878
+ x-resource-group: "messages"
32446
32879
  operationId: removeWhatsAppGroupParticipants
32447
32880
  tags: [WhatsApp]
32448
32881
  summary: Remove participants
@@ -32482,6 +32915,7 @@ paths:
32482
32915
 
32483
32916
  /v1/whatsapp/wa-groups/{groupId}/invite-link:
32484
32917
  post:
32918
+ x-resource-group: "messages"
32485
32919
  operationId: createWhatsAppGroupInviteLink
32486
32920
  tags: [WhatsApp]
32487
32921
  summary: Create invite link
@@ -32509,6 +32943,7 @@ paths:
32509
32943
 
32510
32944
  /v1/whatsapp/wa-groups/{groupId}/join-requests:
32511
32945
  get:
32946
+ x-resource-group: "messages"
32512
32947
  operationId: listWhatsAppGroupJoinRequests
32513
32948
  tags: [WhatsApp]
32514
32949
  summary: List join requests
@@ -32540,6 +32975,7 @@ paths:
32540
32975
  '400': { $ref: '#/components/responses/BadRequest' }
32541
32976
  '401': { $ref: '#/components/responses/Unauthorized' }
32542
32977
  post:
32978
+ x-resource-group: "messages"
32543
32979
  operationId: approveWhatsAppGroupJoinRequests
32544
32980
  tags: [WhatsApp]
32545
32981
  summary: Approve join requests
@@ -32577,6 +33013,7 @@ paths:
32577
33013
  '400': { $ref: '#/components/responses/BadRequest' }
32578
33014
  '401': { $ref: '#/components/responses/Unauthorized' }
32579
33015
  delete:
33016
+ x-resource-group: "messages"
32580
33017
  operationId: rejectWhatsAppGroupJoinRequests
32581
33018
  tags: [WhatsApp]
32582
33019
  summary: Reject join requests
@@ -32618,6 +33055,7 @@ paths:
32618
33055
 
32619
33056
  /v1/whatsapp/flows:
32620
33057
  get:
33058
+ x-resource-group: "accounts"
32621
33059
  operationId: listWhatsAppFlows
32622
33060
  tags: [WhatsApp Flows]
32623
33061
  summary: List flows
@@ -32660,6 +33098,7 @@ paths:
32660
33098
  '401': { $ref: '#/components/responses/Unauthorized' }
32661
33099
  '404': { description: WhatsApp account not found }
32662
33100
  post:
33101
+ x-resource-group: "accounts"
32663
33102
  operationId: createWhatsAppFlow
32664
33103
  tags: [WhatsApp Flows]
32665
33104
  summary: Create flow
@@ -32720,6 +33159,7 @@ paths:
32720
33159
 
32721
33160
  /v1/whatsapp/flows/{flowId}:
32722
33161
  get:
33162
+ x-resource-group: "accounts"
32723
33163
  operationId: getWhatsAppFlow
32724
33164
  tags: [WhatsApp Flows]
32725
33165
  summary: Get flow
@@ -32761,6 +33201,7 @@ paths:
32761
33201
  '401': { $ref: '#/components/responses/Unauthorized' }
32762
33202
  '404': { description: Flow or account not found }
32763
33203
  patch:
33204
+ x-resource-group: "accounts"
32764
33205
  operationId: updateWhatsAppFlow
32765
33206
  tags: [WhatsApp Flows]
32766
33207
  summary: Update flow
@@ -32799,6 +33240,7 @@ paths:
32799
33240
  '401': { $ref: '#/components/responses/Unauthorized' }
32800
33241
  '404': { description: WhatsApp account or flow not found }
32801
33242
  delete:
33243
+ x-resource-group: "accounts"
32802
33244
  operationId: deleteWhatsAppFlow
32803
33245
  tags: [WhatsApp Flows]
32804
33246
  summary: Delete flow
@@ -32824,6 +33266,7 @@ paths:
32824
33266
 
32825
33267
  /v1/whatsapp/flows/{flowId}/json:
32826
33268
  get:
33269
+ x-resource-group: "accounts"
32827
33270
  operationId: getWhatsAppFlowJson
32828
33271
  tags: [WhatsApp Flows]
32829
33272
  summary: Get flow JSON asset
@@ -32854,6 +33297,7 @@ paths:
32854
33297
  '401': { $ref: '#/components/responses/Unauthorized' }
32855
33298
  '404': { description: WhatsApp account not found }
32856
33299
  put:
33300
+ x-resource-group: "accounts"
32857
33301
  operationId: uploadWhatsAppFlowJson
32858
33302
  tags: [WhatsApp Flows]
32859
33303
  summary: Upload flow JSON
@@ -32941,6 +33385,7 @@ paths:
32941
33385
 
32942
33386
  /v1/whatsapp/flows/{flowId}/preview:
32943
33387
  get:
33388
+ x-resource-group: "accounts"
32944
33389
  operationId: getWhatsAppFlowPreview
32945
33390
  tags: [WhatsApp Flows]
32946
33391
  summary: Get flow preview URL
@@ -32969,6 +33414,7 @@ paths:
32969
33414
 
32970
33415
  /v1/whatsapp/flows/{flowId}/versions:
32971
33416
  get:
33417
+ x-resource-group: "accounts"
32972
33418
  operationId: listWhatsAppFlowVersions
32973
33419
  tags: [WhatsApp Flows]
32974
33420
  summary: List flow versions
@@ -33005,6 +33451,7 @@ paths:
33005
33451
 
33006
33452
  /v1/whatsapp/flows/{flowId}/publish:
33007
33453
  post:
33454
+ x-resource-group: "accounts"
33008
33455
  operationId: publishWhatsAppFlow
33009
33456
  tags: [WhatsApp Flows]
33010
33457
  summary: Publish flow
@@ -33040,6 +33487,7 @@ paths:
33040
33487
 
33041
33488
  /v1/whatsapp/flows/{flowId}/deprecate:
33042
33489
  post:
33490
+ x-resource-group: "accounts"
33043
33491
  operationId: deprecateWhatsAppFlow
33044
33492
  tags: [WhatsApp Flows]
33045
33493
  summary: Deprecate flow
@@ -33074,6 +33522,7 @@ paths:
33074
33522
 
33075
33523
  /v1/whatsapp/flows/send:
33076
33524
  post:
33525
+ x-resource-group: "messages"
33077
33526
  operationId: sendWhatsAppFlowMessage
33078
33527
  tags: [WhatsApp Flows]
33079
33528
  summary: Send flow message
@@ -33144,6 +33593,7 @@ paths:
33144
33593
 
33145
33594
  /v1/whatsapp/flow-responses:
33146
33595
  get:
33596
+ x-resource-group: "messages"
33147
33597
  operationId: listWhatsAppFlowResponses
33148
33598
  tags: [WhatsApp Flows]
33149
33599
  summary: List flow responses
@@ -33187,6 +33637,7 @@ paths:
33187
33637
 
33188
33638
  /v1/contacts:
33189
33639
  get:
33640
+ x-resource-group: "contacts"
33190
33641
  operationId: listContacts
33191
33642
  summary: List contacts
33192
33643
  description: List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and full-text search.
@@ -33247,6 +33698,7 @@ paths:
33247
33698
  '400': { description: Invalid request }
33248
33699
  '401': { $ref: '#/components/responses/Unauthorized' }
33249
33700
  post:
33701
+ x-resource-group: "contacts"
33250
33702
  operationId: createContact
33251
33703
  summary: Create contact
33252
33704
  description: Create a new contact. Optionally create a platform channel in the same request by providing accountId, platform, and platformIdentifier.
@@ -33307,6 +33759,7 @@ paths:
33307
33759
 
33308
33760
  /v1/contacts/{contactId}:
33309
33761
  get:
33762
+ x-resource-group: "contacts"
33310
33763
  operationId: getContact
33311
33764
  summary: Get contact
33312
33765
  description: Returns a contact with all associated messaging channels.
@@ -33360,6 +33813,7 @@ paths:
33360
33813
  '401': { $ref: '#/components/responses/Unauthorized' }
33361
33814
  '404': { $ref: '#/components/responses/NotFound' }
33362
33815
  patch:
33816
+ x-resource-group: "contacts"
33363
33817
  operationId: updateContact
33364
33818
  summary: Update contact
33365
33819
  description: Update one or more fields on a contact. Only provided fields are changed.
@@ -33406,6 +33860,7 @@ paths:
33406
33860
  '401': { $ref: '#/components/responses/Unauthorized' }
33407
33861
  '404': { $ref: '#/components/responses/NotFound' }
33408
33862
  delete:
33863
+ x-resource-group: "contacts"
33409
33864
  operationId: deleteContact
33410
33865
  summary: Delete contact
33411
33866
  description: Permanently deletes a contact and all associated channels.
@@ -33420,6 +33875,7 @@ paths:
33420
33875
 
33421
33876
  /v1/contacts/{contactId}/channels:
33422
33877
  get:
33878
+ x-resource-group: "contacts"
33423
33879
  operationId: getContactChannels
33424
33880
  summary: List channels for a contact
33425
33881
  description: Returns all messaging channels linked to a contact (e.g. Instagram DM, Telegram, WhatsApp).
@@ -33455,6 +33911,7 @@ paths:
33455
33911
 
33456
33912
  /v1/contacts/bulk:
33457
33913
  post:
33914
+ x-resource-group: "contacts"
33458
33915
  operationId: bulkCreateContacts
33459
33916
  summary: Bulk create contacts
33460
33917
  description: 'Import up to 1000 contacts at a time. Skips duplicates, merging any new tags onto the existing contact. accountId is required whenever contacts carry a platformIdentifier (or a row-level accountId); platform is always derived from the resolved account, never used to decide whether channels are created, and a mismatched platform 404s as account not found. When accountId is set, each contact must carry a platformIdentifier; a row missing it is rejected individually (reported in errors[], HTTP 200), not a 400 for the whole import. On phone platforms (whatsapp, sms) the platformIdentifier is normalized to digits and a value that is not phone-shaped is rejected per contact and reported in errors[], not imported.'
@@ -33501,6 +33958,7 @@ paths:
33501
33958
 
33502
33959
  /v1/contacts/{contactId}/fields/{slug}:
33503
33960
  put:
33961
+ x-resource-group: "contacts"
33504
33962
  operationId: setContactFieldValue
33505
33963
  summary: Set custom field value
33506
33964
  description: Set or overwrite a custom field value on a contact. The value type must match the field definition.
@@ -33522,6 +33980,7 @@ paths:
33522
33980
  '401': { $ref: '#/components/responses/Unauthorized' }
33523
33981
  '404': { $ref: '#/components/responses/NotFound' }
33524
33982
  delete:
33983
+ x-resource-group: "contacts"
33525
33984
  operationId: clearContactFieldValue
33526
33985
  summary: Clear custom field value
33527
33986
  description: Remove a custom field value from a contact. The field definition is not affected.
@@ -33538,6 +33997,7 @@ paths:
33538
33997
 
33539
33998
  /v1/custom-fields:
33540
33999
  get:
34000
+ x-resource-group: "accounts"
33541
34001
  operationId: listCustomFields
33542
34002
  summary: List custom field definitions
33543
34003
  description: Returns all custom field definitions. Optionally filter by profile.
@@ -33567,6 +34027,7 @@ paths:
33567
34027
  '400': { description: Invalid profileId format }
33568
34028
  '401': { $ref: '#/components/responses/Unauthorized' }
33569
34029
  post:
34030
+ x-resource-group: "accounts"
33570
34031
  operationId: createCustomField
33571
34032
  summary: Create custom field
33572
34033
  description: Create a new custom field definition. Supported types are text, number, date, boolean, and select.
@@ -33608,6 +34069,7 @@ paths:
33608
34069
 
33609
34070
  /v1/custom-fields/{fieldId}:
33610
34071
  patch:
34072
+ x-resource-group: "accounts"
33611
34073
  operationId: updateCustomField
33612
34074
  summary: Update custom field
33613
34075
  description: Update a custom field definition. The field type cannot be changed after creation.
@@ -33644,6 +34106,7 @@ paths:
33644
34106
  '401': { $ref: '#/components/responses/Unauthorized' }
33645
34107
  '404': { $ref: '#/components/responses/NotFound' }
33646
34108
  delete:
34109
+ x-resource-group: "accounts"
33647
34110
  operationId: deleteCustomField
33648
34111
  summary: Delete custom field
33649
34112
  description: Delete a custom field definition and remove its values from all contacts.
@@ -33660,6 +34123,7 @@ paths:
33660
34123
 
33661
34124
  /v1/broadcasts:
33662
34125
  get:
34126
+ x-resource-group: "messages"
33663
34127
  operationId: listBroadcasts
33664
34128
  summary: List broadcasts
33665
34129
  description: Returns broadcasts with delivery stats. Filter by status, platform, or profile.
@@ -33711,6 +34175,7 @@ paths:
33711
34175
  '400': { description: Invalid request }
33712
34176
  '401': { $ref: '#/components/responses/Unauthorized' }
33713
34177
  post:
34178
+ x-resource-group: "messages"
33714
34179
  operationId: createBroadcast
33715
34180
  summary: Create broadcast draft
33716
34181
  description: Create a broadcast in draft status. Add recipients and then send or schedule it.
@@ -33777,6 +34242,7 @@ paths:
33777
34242
 
33778
34243
  /v1/broadcasts/{broadcastId}:
33779
34244
  get:
34245
+ x-resource-group: "messages"
33780
34246
  operationId: getBroadcast
33781
34247
  summary: Get broadcast details
33782
34248
  description: Returns a broadcast with its full configuration and delivery stats.
@@ -33817,6 +34283,7 @@ paths:
33817
34283
  '401': { $ref: '#/components/responses/Unauthorized' }
33818
34284
  '404': { $ref: '#/components/responses/NotFound' }
33819
34285
  patch:
34286
+ x-resource-group: "messages"
33820
34287
  operationId: updateBroadcast
33821
34288
  summary: Update broadcast
33822
34289
  description: Update a broadcast's name, message, template, or segment filters. Only draft broadcasts can be updated.
@@ -33873,6 +34340,7 @@ paths:
33873
34340
  '401': { $ref: '#/components/responses/Unauthorized' }
33874
34341
  '404': { $ref: '#/components/responses/NotFound' }
33875
34342
  delete:
34343
+ x-resource-group: "messages"
33876
34344
  operationId: deleteBroadcast
33877
34345
  summary: Delete broadcast
33878
34346
  description: Permanently delete a broadcast. Only drafts can be deleted.
@@ -33886,6 +34354,7 @@ paths:
33886
34354
 
33887
34355
  /v1/broadcasts/{broadcastId}/send:
33888
34356
  post:
34357
+ x-resource-group: "messages"
33889
34358
  operationId: sendBroadcast
33890
34359
  summary: Send broadcast now
33891
34360
  description: Immediately start sending a draft broadcast to its recipients.
@@ -33911,6 +34380,7 @@ paths:
33911
34380
 
33912
34381
  /v1/broadcasts/{broadcastId}/schedule:
33913
34382
  post:
34383
+ x-resource-group: "messages"
33914
34384
  operationId: scheduleBroadcast
33915
34385
  summary: Schedule broadcast for later
33916
34386
  description: Schedule a draft broadcast to be sent at a future date and time.
@@ -33947,6 +34417,7 @@ paths:
33947
34417
 
33948
34418
  /v1/broadcasts/{broadcastId}/cancel:
33949
34419
  post:
34420
+ x-resource-group: "messages"
33950
34421
  operationId: cancelBroadcast
33951
34422
  summary: Cancel broadcast
33952
34423
  description: Cancel a scheduled or in-progress broadcast. Already-sent messages are not affected.
@@ -33973,6 +34444,7 @@ paths:
33973
34444
 
33974
34445
  /v1/broadcasts/{broadcastId}/recipients:
33975
34446
  get:
34447
+ x-resource-group: "messages"
33976
34448
  operationId: listBroadcastRecipients
33977
34449
  summary: List broadcast recipients
33978
34450
  description: Returns recipients for a broadcast with individual delivery status. Filter by status.
@@ -34020,6 +34492,7 @@ paths:
34020
34492
  '401': { $ref: '#/components/responses/Unauthorized' }
34021
34493
  '404': { $ref: '#/components/responses/NotFound' }
34022
34494
  post:
34495
+ x-resource-group: "messages"
34023
34496
  operationId: addBroadcastRecipients
34024
34497
  summary: Add recipients to a broadcast
34025
34498
  description: Add recipients by contact IDs, raw phone numbers, or from the broadcast's segment filters.
@@ -34055,6 +34528,7 @@ paths:
34055
34528
 
34056
34529
  /v1/workflows:
34057
34530
  get:
34531
+ x-resource-group: "accounts"
34058
34532
  operationId: listWorkflows
34059
34533
  summary: List workflows
34060
34534
  description: Returns workflows with run stats. Filter by status or profile.
@@ -34099,6 +34573,7 @@ paths:
34099
34573
  hasMore: { type: boolean }
34100
34574
  '401': { $ref: '#/components/responses/Unauthorized' }
34101
34575
  post:
34576
+ x-resource-group: "accounts"
34102
34577
  operationId: createWorkflow
34103
34578
  summary: Create workflow
34104
34579
  description: >
@@ -34147,6 +34622,7 @@ paths:
34147
34622
 
34148
34623
  /v1/workflows/{workflowId}:
34149
34624
  get:
34625
+ x-resource-group: "accounts"
34150
34626
  operationId: getWorkflow
34151
34627
  summary: Get workflow with graph
34152
34628
  description: Returns a workflow including its full node/edge graph and run stats.
@@ -34183,6 +34659,7 @@ paths:
34183
34659
  '401': { $ref: '#/components/responses/Unauthorized' }
34184
34660
  '404': { $ref: '#/components/responses/NotFound' }
34185
34661
  patch:
34662
+ x-resource-group: "accounts"
34186
34663
  operationId: updateWorkflow
34187
34664
  summary: Update workflow
34188
34665
  description: >
@@ -34236,6 +34713,7 @@ paths:
34236
34713
  '401': { $ref: '#/components/responses/Unauthorized' }
34237
34714
  '404': { $ref: '#/components/responses/NotFound' }
34238
34715
  delete:
34716
+ x-resource-group: "accounts"
34239
34717
  operationId: deleteWorkflow
34240
34718
  summary: Delete workflow
34241
34719
  description: Permanently delete a workflow and all of its executions.
@@ -34249,6 +34727,7 @@ paths:
34249
34727
 
34250
34728
  /v1/workflows/{workflowId}/activate:
34251
34729
  post:
34730
+ x-resource-group: "accounts"
34252
34731
  operationId: activateWorkflow
34253
34732
  summary: Activate workflow
34254
34733
  description: Validate the graph is runnable and set the workflow live. Once active, matching inbound messages start executions. Idempotent.
@@ -34276,6 +34755,7 @@ paths:
34276
34755
 
34277
34756
  /v1/workflows/{workflowId}/pause:
34278
34757
  post:
34758
+ x-resource-group: "accounts"
34279
34759
  operationId: pauseWorkflow
34280
34760
  summary: Pause workflow
34281
34761
  description: Stop matching new inbound messages. In-flight executions continue to completion. Idempotent.
@@ -34302,6 +34782,7 @@ paths:
34302
34782
 
34303
34783
  /v1/workflows/{workflowId}/executions:
34304
34784
  get:
34785
+ x-resource-group: "messages"
34305
34786
  operationId: listWorkflowExecutions
34306
34787
  summary: List workflow runs
34307
34788
  description: Returns recent executions (runs) with their status, current node, and accumulated variables.
@@ -34353,6 +34834,7 @@ paths:
34353
34834
  '401': { $ref: '#/components/responses/Unauthorized' }
34354
34835
  '404': { $ref: '#/components/responses/NotFound' }
34355
34836
  post:
34837
+ x-resource-group: "messages"
34356
34838
  operationId: triggerWorkflow
34357
34839
  summary: Manually start a workflow run
34358
34840
  description: >
@@ -34397,6 +34879,7 @@ paths:
34397
34879
 
34398
34880
  /v1/workflows/{workflowId}/executions/{executionId}/events:
34399
34881
  get:
34882
+ x-resource-group: "messages"
34400
34883
  operationId: listWorkflowExecutionEvents
34401
34884
  summary: Get an execution's timeline
34402
34885
  description: >
@@ -34433,6 +34916,7 @@ paths:
34433
34916
 
34434
34917
  /v1/workflows/{workflowId}/duplicate:
34435
34918
  post:
34919
+ x-resource-group: "accounts"
34436
34920
  operationId: duplicateWorkflow
34437
34921
  summary: Duplicate a workflow
34438
34922
  description: >
@@ -34471,6 +34955,7 @@ paths:
34471
34955
 
34472
34956
  /v1/workflows/{workflowId}/versions:
34473
34957
  get:
34958
+ x-resource-group: "accounts"
34474
34959
  operationId: listWorkflowVersions
34475
34960
  summary: List a workflow's version history
34476
34961
  description: >
@@ -34508,6 +34993,7 @@ paths:
34508
34993
 
34509
34994
  /v1/workflows/{workflowId}/versions/{version}:
34510
34995
  get:
34996
+ x-resource-group: "accounts"
34511
34997
  operationId: getWorkflowVersion
34512
34998
  summary: Get a specific workflow version
34513
34999
  description: Returns the full snapshot for a single historical version, including the graph.
@@ -34546,6 +35032,7 @@ paths:
34546
35032
 
34547
35033
  /v1/workflows/{workflowId}/versions/{version}/restore:
34548
35034
  post:
35035
+ x-resource-group: "accounts"
34549
35036
  operationId: restoreWorkflowVersion
34550
35037
  summary: Restore a workflow version
34551
35038
  description: >
@@ -34583,6 +35070,7 @@ paths:
34583
35070
 
34584
35071
  /v1/sequences:
34585
35072
  get:
35073
+ x-resource-group: "messages"
34586
35074
  operationId: listSequences
34587
35075
  summary: List sequences
34588
35076
  description: Returns sequences with enrollment stats. Filter by status, platform, or profile.
@@ -34631,6 +35119,7 @@ paths:
34631
35119
  '400': { description: Invalid request }
34632
35120
  '401': { $ref: '#/components/responses/Unauthorized' }
34633
35121
  post:
35122
+ x-resource-group: "messages"
34634
35123
  operationId: createSequence
34635
35124
  summary: Create sequence
34636
35125
  description: Create a multi-step messaging sequence. Each step has a delay and a message or WhatsApp template.
@@ -34696,6 +35185,7 @@ paths:
34696
35185
 
34697
35186
  /v1/sequences/{sequenceId}:
34698
35187
  get:
35188
+ x-resource-group: "messages"
34699
35189
  operationId: getSequence
34700
35190
  summary: Get sequence with steps
34701
35191
  description: Returns a sequence with all its steps and enrollment stats.
@@ -34740,6 +35230,7 @@ paths:
34740
35230
  '401': { $ref: '#/components/responses/Unauthorized' }
34741
35231
  '404': { $ref: '#/components/responses/NotFound' }
34742
35232
  patch:
35233
+ x-resource-group: "messages"
34743
35234
  operationId: updateSequence
34744
35235
  summary: Update sequence
34745
35236
  description: Update a sequence's name, steps, or exit conditions. Steps can only be modified while the sequence is draft or paused.
@@ -34805,6 +35296,7 @@ paths:
34805
35296
  '401': { $ref: '#/components/responses/Unauthorized' }
34806
35297
  '404': { $ref: '#/components/responses/NotFound' }
34807
35298
  delete:
35299
+ x-resource-group: "messages"
34808
35300
  operationId: deleteSequence
34809
35301
  summary: Delete sequence
34810
35302
  description: Permanently delete a sequence. Active enrollments are stopped.
@@ -34819,6 +35311,7 @@ paths:
34819
35311
 
34820
35312
  /v1/sequences/{sequenceId}/activate:
34821
35313
  post:
35314
+ x-resource-group: "messages"
34822
35315
  operationId: activateSequence
34823
35316
  summary: Activate sequence
34824
35317
  description: Start a draft or paused sequence. The sequence must have at least one step.
@@ -34845,6 +35338,7 @@ paths:
34845
35338
 
34846
35339
  /v1/sequences/{sequenceId}/pause:
34847
35340
  post:
35341
+ x-resource-group: "messages"
34848
35342
  operationId: pauseSequence
34849
35343
  summary: Pause sequence
34850
35344
  description: Pause an active sequence. Enrolled contacts stop receiving messages until the sequence is reactivated.
@@ -34871,6 +35365,7 @@ paths:
34871
35365
 
34872
35366
  /v1/sequences/{sequenceId}/enroll:
34873
35367
  post:
35368
+ x-resource-group: "messages"
34874
35369
  operationId: enrollContacts
34875
35370
  summary: Enroll contacts in a sequence
34876
35371
  description: Enroll one or more contacts into a sequence. Contacts already enrolled are skipped.
@@ -34913,6 +35408,7 @@ paths:
34913
35408
 
34914
35409
  /v1/sequences/{sequenceId}/enroll/{contactId}:
34915
35410
  delete:
35411
+ x-resource-group: "messages"
34916
35412
  operationId: unenrollContact
34917
35413
  summary: Unenroll contact
34918
35414
  description: Remove a contact from a sequence. No further messages will be sent to this contact.
@@ -34928,6 +35424,7 @@ paths:
34928
35424
 
34929
35425
  /v1/sequences/{sequenceId}/enrollments:
34930
35426
  get:
35427
+ x-resource-group: "messages"
34931
35428
  operationId: listSequenceEnrollments
34932
35429
  summary: List enrollments for a sequence
34933
35430
  description: Returns enrolled contacts with their progress, status, and next scheduled step.
@@ -34980,6 +35477,7 @@ paths:
34980
35477
 
34981
35478
  /v1/comment-automations:
34982
35479
  get:
35480
+ x-resource-group: "messages"
34983
35481
  operationId: listCommentAutomations
34984
35482
  tags: [Comment Automations]
34985
35483
  summary: List comment-to-DM automations
@@ -35038,6 +35536,7 @@ paths:
35038
35536
  '400': { description: Invalid request }
35039
35537
  '401': { $ref: '#/components/responses/Unauthorized' }
35040
35538
  post:
35539
+ x-resource-group: "messages"
35041
35540
  operationId: createCommentAutomation
35042
35541
  tags: [Comment Automations]
35043
35542
  summary: Create comment-to-DM automation
@@ -35142,6 +35641,7 @@ paths:
35142
35641
 
35143
35642
  /v1/comment-automations/{automationId}:
35144
35643
  get:
35644
+ x-resource-group: "messages"
35145
35645
  operationId: getCommentAutomation
35146
35646
  tags: [Comment Automations]
35147
35647
  summary: Get automation details
@@ -35204,6 +35704,7 @@ paths:
35204
35704
  '401': { $ref: '#/components/responses/Unauthorized' }
35205
35705
  '404': { $ref: '#/components/responses/NotFound' }
35206
35706
  patch:
35707
+ x-resource-group: "messages"
35207
35708
  operationId: updateCommentAutomation
35208
35709
  tags: [Comment Automations]
35209
35710
  summary: Update automation settings
@@ -35273,6 +35774,7 @@ paths:
35273
35774
  '401': { $ref: '#/components/responses/Unauthorized' }
35274
35775
  '404': { $ref: '#/components/responses/NotFound' }
35275
35776
  delete:
35777
+ x-resource-group: "messages"
35276
35778
  operationId: deleteCommentAutomation
35277
35779
  tags: [Comment Automations]
35278
35780
  summary: Delete automation
@@ -35288,6 +35790,7 @@ paths:
35288
35790
 
35289
35791
  /v1/comment-automations/{automationId}/logs:
35290
35792
  get:
35793
+ x-resource-group: "messages"
35291
35794
  operationId: listCommentAutomationLogs
35292
35795
  tags: [Comment Automations]
35293
35796
  summary: List automation logs
@@ -35337,6 +35840,7 @@ paths:
35337
35840
 
35338
35841
  /v1/ads:
35339
35842
  get:
35843
+ x-resource-group: "ads"
35340
35844
  operationId: listAds
35341
35845
  tags: ["Ad Campaigns"]
35342
35846
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35393,6 +35897,7 @@ paths:
35393
35897
 
35394
35898
  /v1/ads/keywords:
35395
35899
  get:
35900
+ x-resource-group: "ads"
35396
35901
  operationId: listAdKeywords
35397
35902
  tags: ["Ad Campaigns"]
35398
35903
  x-platforms: ["google"]
@@ -35459,6 +35964,7 @@ paths:
35459
35964
 
35460
35965
  /v1/ads/campaigns:
35461
35966
  get:
35967
+ x-resource-group: "ads"
35462
35968
  operationId: listAdCampaigns
35463
35969
  tags: ["Ad Campaigns"]
35464
35970
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35511,6 +36017,7 @@ paths:
35511
36017
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
35512
36018
 
35513
36019
  post:
36020
+ x-resource-group: "ads"
35514
36021
  operationId: createAdCampaign
35515
36022
  tags: ["Ad Campaigns"]
35516
36023
  x-platforms: ["meta"]
@@ -35581,6 +36088,7 @@ paths:
35581
36088
 
35582
36089
  /v1/ads/campaigns/{campaignId}/status:
35583
36090
  put:
36091
+ x-resource-group: "ads"
35584
36092
  operationId: updateAdCampaignStatus
35585
36093
  tags: ["Ad Campaigns"]
35586
36094
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35622,6 +36130,7 @@ paths:
35622
36130
 
35623
36131
  /v1/ads/campaigns/{campaignId}:
35624
36132
  put:
36133
+ x-resource-group: "ads"
35625
36134
  operationId: updateAdCampaign
35626
36135
  tags: ["Ad Campaigns"]
35627
36136
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35696,6 +36205,7 @@ paths:
35696
36205
  '501': { description: Operation not supported on this platform }
35697
36206
 
35698
36207
  delete:
36208
+ x-resource-group: "ads"
35699
36209
  operationId: deleteAdCampaign
35700
36210
  tags: ["Ad Campaigns"]
35701
36211
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35745,6 +36255,7 @@ paths:
35745
36255
 
35746
36256
  /v1/ads/campaigns/bulk-status:
35747
36257
  post:
36258
+ x-resource-group: "ads"
35748
36259
  operationId: bulkUpdateAdCampaignStatus
35749
36260
  tags: ["Ad Campaigns"]
35750
36261
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35803,6 +36314,7 @@ paths:
35803
36314
 
35804
36315
  /v1/ads/campaigns/{campaignId}/duplicate:
35805
36316
  post:
36317
+ x-resource-group: "ads"
35806
36318
  operationId: duplicateAdCampaign
35807
36319
  tags: ["Ad Campaigns"]
35808
36320
  x-platforms: ["meta", "tiktok", "linkedin"]
@@ -35899,6 +36411,7 @@ paths:
35899
36411
 
35900
36412
  /v1/ads/ad-sets/{adSetId}/duplicate:
35901
36413
  post:
36414
+ x-resource-group: "ads"
35902
36415
  operationId: duplicateAdSet
35903
36416
  tags: ["Ad Campaigns"]
35904
36417
  x-platforms: ["meta"]
@@ -35959,6 +36472,7 @@ paths:
35959
36472
 
35960
36473
  /v1/ads/{adId}/duplicate:
35961
36474
  post:
36475
+ x-resource-group: "ads"
35962
36476
  operationId: duplicateAd
35963
36477
  tags: ["Ad Campaigns"]
35964
36478
  x-platforms: ["meta"]
@@ -36013,6 +36527,7 @@ paths:
36013
36527
 
36014
36528
  /v1/ads/ad-sets/{adSetId}:
36015
36529
  get:
36530
+ x-resource-group: "ads"
36016
36531
  operationId: getAdSetDetails
36017
36532
  tags: ["Ad Campaigns"]
36018
36533
  x-platforms: ["meta"]
@@ -36042,6 +36557,7 @@ paths:
36042
36557
  '401': { $ref: '#/components/responses/Unauthorized' }
36043
36558
  '501': { description: Only supported on Meta (facebook/instagram) }
36044
36559
  put:
36560
+ x-resource-group: "ads"
36045
36561
  operationId: updateAdSet
36046
36562
  tags: ["Ad Campaigns"]
36047
36563
  x-platforms: ["meta", "tiktok", "openai"]
@@ -36190,6 +36706,7 @@ paths:
36190
36706
 
36191
36707
  /v1/ads/ad-sets/{adSetId}/status:
36192
36708
  put:
36709
+ x-resource-group: "ads"
36193
36710
  operationId: updateAdSetStatus
36194
36711
  tags: ["Ad Campaigns"]
36195
36712
  x-platforms: ["meta", "tiktok"]
@@ -36229,6 +36746,7 @@ paths:
36229
36746
 
36230
36747
  /v1/ads/tree:
36231
36748
  get:
36749
+ x-resource-group: "ads"
36232
36750
  operationId: getAdTree
36233
36751
  tags: ["Ad Campaigns"]
36234
36752
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36292,6 +36810,7 @@ paths:
36292
36810
 
36293
36811
  /v1/ads/timeline:
36294
36812
  get:
36813
+ x-resource-group: "ads"
36295
36814
  operationId: getAdsTimeline
36296
36815
  tags: ["Ad Campaigns"]
36297
36816
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36364,6 +36883,7 @@ paths:
36364
36883
 
36365
36884
  /v1/ads/{adId}:
36366
36885
  get:
36886
+ x-resource-group: "ads"
36367
36887
  operationId: getAd
36368
36888
  tags: ["Ad Campaigns"]
36369
36889
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36399,6 +36919,7 @@ paths:
36399
36919
  '401': { $ref: '#/components/responses/Unauthorized' }
36400
36920
  '404': { $ref: '#/components/responses/NotFound' }
36401
36921
  put:
36922
+ x-resource-group: "ads"
36402
36923
  operationId: updateAd
36403
36924
  tags: ["Ad Campaigns"]
36404
36925
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36484,6 +37005,7 @@ paths:
36484
37005
  '404': { $ref: '#/components/responses/NotFound' }
36485
37006
  '501': { description: "targeting or creative not supported on the platform (Meta + TikTok only)" }
36486
37007
  delete:
37008
+ x-resource-group: "ads"
36487
37009
  operationId: deleteAd
36488
37010
  tags: ["Ad Campaigns"]
36489
37011
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36507,6 +37029,7 @@ paths:
36507
37029
 
36508
37030
  /v1/ads/{adId}/status:
36509
37031
  put:
37032
+ x-resource-group: "ads"
36510
37033
  operationId: updateAdStatus
36511
37034
  tags: ["Ad Campaigns"]
36512
37035
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36552,6 +37075,7 @@ paths:
36552
37075
 
36553
37076
  /v1/ads/campaigns/{campaignId}/analytics:
36554
37077
  get:
37078
+ x-resource-group: "ads"
36555
37079
  operationId: getCampaignAnalytics
36556
37080
  tags: ["Ad Insights"]
36557
37081
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36636,6 +37160,7 @@ paths:
36636
37160
 
36637
37161
  /v1/ads/preview:
36638
37162
  post:
37163
+ x-resource-group: "ads"
36639
37164
  operationId: generateAdPreviews
36640
37165
  tags: ["Ad Creatives"]
36641
37166
  x-platforms: ["meta"]
@@ -36690,6 +37215,7 @@ paths:
36690
37215
 
36691
37216
  /v1/ads/{adId}/preview:
36692
37217
  get:
37218
+ x-resource-group: "ads"
36693
37219
  operationId: getAdPreviews
36694
37220
  tags: ["Ad Creatives"]
36695
37221
  x-platforms: ["meta"]
@@ -36726,6 +37252,7 @@ paths:
36726
37252
 
36727
37253
  /v1/ads/keywords/ideas:
36728
37254
  post:
37255
+ x-resource-group: "ads"
36729
37256
  operationId: generateKeywordIdeas
36730
37257
  tags: ["Ad Insights"]
36731
37258
  x-platforms: ["google"]
@@ -36779,6 +37306,7 @@ paths:
36779
37306
 
36780
37307
  /v1/ads/keywords/historical-metrics:
36781
37308
  post:
37309
+ x-resource-group: "ads"
36782
37310
  operationId: generateKeywordHistoricalMetrics
36783
37311
  tags: ["Ad Insights"]
36784
37312
  x-platforms: ["google"]
@@ -36826,6 +37354,7 @@ paths:
36826
37354
 
36827
37355
  /v1/ads/insights:
36828
37356
  get:
37357
+ x-resource-group: "ads"
36829
37358
  operationId: queryAdInsights
36830
37359
  tags: ["Ad Insights"]
36831
37360
  x-platforms: ["meta", "google"]
@@ -36894,6 +37423,7 @@ paths:
36894
37423
 
36895
37424
  /v1/ads/insights/reports:
36896
37425
  post:
37426
+ x-resource-group: "ads"
36897
37427
  operationId: createAdInsightsReport
36898
37428
  tags: ["Ad Insights"]
36899
37429
  x-platforms: ["meta"]
@@ -36957,6 +37487,7 @@ paths:
36957
37487
 
36958
37488
  /v1/ads/insights/reports/{reportRunId}:
36959
37489
  get:
37490
+ x-resource-group: "ads"
36960
37491
  operationId: getAdInsightsReport
36961
37492
  tags: ["Ad Insights"]
36962
37493
  x-platforms: ["meta"]
@@ -37000,6 +37531,7 @@ paths:
37000
37531
 
37001
37532
  /v1/ads/{adId}/analytics:
37002
37533
  get:
37534
+ x-resource-group: "ads"
37003
37535
  operationId: getAdAnalytics
37004
37536
  tags: ["Ad Insights"]
37005
37537
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -37081,6 +37613,7 @@ paths:
37081
37613
 
37082
37614
  /v1/ads/{adId}/tracking-tags:
37083
37615
  get:
37616
+ x-resource-group: "ads"
37084
37617
  operationId: getAdTrackingTags
37085
37618
  tags: ["Tracking Tags"]
37086
37619
  x-platforms: ["meta"]
@@ -37121,6 +37654,7 @@ paths:
37121
37654
  '404': { description: "Ad not found" }
37122
37655
  '405': { description: "Platform has no click-URL tracking surface" }
37123
37656
  patch:
37657
+ x-resource-group: "ads"
37124
37658
  operationId: updateAdTrackingTags
37125
37659
  tags: ["Tracking Tags"]
37126
37660
  x-platforms: ["meta"]
@@ -37179,6 +37713,7 @@ paths:
37179
37713
  '422': { description: "Meta creative cannot be rebuilt (e.g. placement-customized/asset-feed/dark creative)" }
37180
37714
  /v1/ads/{adId}/comments:
37181
37715
  get:
37716
+ x-resource-group: "engagement"
37182
37717
  operationId: getAdComments
37183
37718
  tags: ["Ad Accounts"]
37184
37719
  x-platforms: ["meta"]
@@ -37278,6 +37813,7 @@ paths:
37278
37813
 
37279
37814
  /v1/ads/business-centers:
37280
37815
  get:
37816
+ x-resource-group: "ads"
37281
37817
  operationId: listAdsBusinessCenters
37282
37818
  tags: ["Ad Accounts"]
37283
37819
  x-platforms: ["tiktok"]
@@ -37310,6 +37846,7 @@ paths:
37310
37846
 
37311
37847
  /v1/ads/activity:
37312
37848
  get:
37849
+ x-resource-group: "ads"
37313
37850
  operationId: getAdsActivityLog
37314
37851
  tags: ["Ad Accounts"]
37315
37852
  x-platforms: ["meta"]
@@ -37352,6 +37889,7 @@ paths:
37352
37889
 
37353
37890
  /v1/ads/rf-predictions:
37354
37891
  post:
37892
+ x-resource-group: "ads"
37355
37893
  operationId: createRfPrediction
37356
37894
  tags: ["Reach and Frequency"]
37357
37895
  x-platforms: ["meta"]
@@ -37405,6 +37943,7 @@ paths:
37405
37943
 
37406
37944
  /v1/ads/rf-predictions/{predictionId}:
37407
37945
  get:
37946
+ x-resource-group: "ads"
37408
37947
  operationId: getRfPrediction
37409
37948
  tags: ["Reach and Frequency"]
37410
37949
  x-platforms: ["meta"]
@@ -37430,6 +37969,7 @@ paths:
37430
37969
  '401': { $ref: '#/components/responses/Unauthorized' }
37431
37970
  '501': { description: Only supported on Meta (facebook/instagram) }
37432
37971
  delete:
37972
+ x-resource-group: "ads"
37433
37973
  operationId: cancelRfReservation
37434
37974
  tags: ["Reach and Frequency"]
37435
37975
  x-platforms: ["meta"]
@@ -37450,6 +37990,7 @@ paths:
37450
37990
 
37451
37991
  /v1/ads/rf-predictions/{predictionId}/reserve:
37452
37992
  post:
37993
+ x-resource-group: "ads"
37453
37994
  operationId: reserveRfPrediction
37454
37995
  tags: ["Reach and Frequency"]
37455
37996
  x-platforms: ["meta"]
@@ -37488,6 +38029,7 @@ paths:
37488
38029
 
37489
38030
  /v1/ads/studies:
37490
38031
  get:
38032
+ x-resource-group: "ads"
37491
38033
  operationId: listAdStudies
37492
38034
  tags: ["Ad Accounts"]
37493
38035
  x-platforms: ["meta"]
@@ -37526,6 +38068,7 @@ paths:
37526
38068
 
37527
38069
  /v1/ads/businesses:
37528
38070
  get:
38071
+ x-resource-group: "ads"
37529
38072
  operationId: listMetaBusinesses
37530
38073
  tags: ["Ad Accounts"]
37531
38074
  x-platforms: ["meta"]
@@ -37562,6 +38105,7 @@ paths:
37562
38105
 
37563
38106
  /v1/ads/labels:
37564
38107
  get:
38108
+ x-resource-group: "ads"
37565
38109
  operationId: listAdLabels
37566
38110
  tags: ["Ad Accounts"]
37567
38111
  x-platforms: ["meta"]
@@ -37598,6 +38142,7 @@ paths:
37598
38142
 
37599
38143
  /v1/ads/high-demand-periods:
37600
38144
  get:
38145
+ x-resource-group: "ads"
37601
38146
  operationId: listHighDemandPeriods
37602
38147
  tags: ["Ad Accounts"]
37603
38148
  x-platforms: ["meta"]
@@ -37637,6 +38182,7 @@ paths:
37637
38182
 
37638
38183
  /v1/ads/creatives:
37639
38184
  get:
38185
+ x-resource-group: "ads"
37640
38186
  operationId: listAdCreatives
37641
38187
  tags: ["Ad Creatives"]
37642
38188
  x-platforms: ["meta"]
@@ -37675,6 +38221,7 @@ paths:
37675
38221
  '401': { $ref: '#/components/responses/Unauthorized' }
37676
38222
  '501': { description: Only supported on Meta (facebook/instagram) }
37677
38223
  post:
38224
+ x-resource-group: "ads"
37678
38225
  operationId: createAdCreative
37679
38226
  tags: ["Ad Creatives"]
37680
38227
  x-platforms: ["meta"]
@@ -37739,6 +38286,7 @@ paths:
37739
38286
 
37740
38287
  /v1/ads/creatives/{creativeId}:
37741
38288
  get:
38289
+ x-resource-group: "ads"
37742
38290
  operationId: getAdCreative
37743
38291
  tags: ["Ad Creatives"]
37744
38292
  x-platforms: ["meta"]
@@ -37765,6 +38313,7 @@ paths:
37765
38313
  '401': { $ref: '#/components/responses/Unauthorized' }
37766
38314
  '501': { description: Only supported on Meta (facebook/instagram) }
37767
38315
  put:
38316
+ x-resource-group: "ads"
37768
38317
  operationId: updateAdCreative
37769
38318
  tags: ["Ad Creatives"]
37770
38319
  x-platforms: ["meta"]
@@ -37802,6 +38351,7 @@ paths:
37802
38351
  '401': { $ref: '#/components/responses/Unauthorized' }
37803
38352
  '501': { description: Only supported on Meta (facebook/instagram) }
37804
38353
  delete:
38354
+ x-resource-group: "ads"
37805
38355
  operationId: deleteAdCreative
37806
38356
  tags: ["Ad Creatives"]
37807
38357
  x-platforms: ["meta"]
@@ -37830,6 +38380,7 @@ paths:
37830
38380
 
37831
38381
  /v1/ads/value-rule-sets:
37832
38382
  get:
38383
+ x-resource-group: "ads"
37833
38384
  operationId: listValueRuleSets
37834
38385
  tags: ["Ad Accounts"]
37835
38386
  x-platforms: ["meta"]
@@ -37880,6 +38431,7 @@ paths:
37880
38431
  '501': { description: Only supported on Meta (facebook/instagram) }
37881
38432
 
37882
38433
  post:
38434
+ x-resource-group: "ads"
37883
38435
  operationId: createValueRuleSet
37884
38436
  tags: ["Ad Accounts"]
37885
38437
  x-platforms: ["meta"]
@@ -37950,6 +38502,7 @@ paths:
37950
38502
 
37951
38503
  /v1/ads/value-rule-sets/{valueRuleSetId}:
37952
38504
  get:
38505
+ x-resource-group: "ads"
37953
38506
  operationId: getValueRuleSet
37954
38507
  tags: ["Ad Accounts"]
37955
38508
  x-platforms: ["meta"]
@@ -37981,6 +38534,7 @@ paths:
37981
38534
  '501': { description: Only supported on Meta (facebook/instagram) }
37982
38535
 
37983
38536
  put:
38537
+ x-resource-group: "ads"
37984
38538
  operationId: updateValueRuleSet
37985
38539
  tags: ["Ad Accounts"]
37986
38540
  x-platforms: ["meta"]
@@ -38041,6 +38595,7 @@ paths:
38041
38595
  '501': { description: Only supported on Meta (facebook/instagram) }
38042
38596
 
38043
38597
  delete:
38598
+ x-resource-group: "ads"
38044
38599
  operationId: deleteValueRuleSet
38045
38600
  tags: ["Ad Accounts"]
38046
38601
  x-platforms: ["meta"]
@@ -38071,6 +38626,7 @@ paths:
38071
38626
 
38072
38627
  /v1/ads/accounts/finance:
38073
38628
  get:
38629
+ x-resource-group: "ads"
38074
38630
  operationId: getAdAccountFinance
38075
38631
  tags: ["Ad Accounts"]
38076
38632
  x-platforms: ["meta"]
@@ -38108,6 +38664,7 @@ paths:
38108
38664
 
38109
38665
  /v1/ads/accounts:
38110
38666
  get:
38667
+ x-resource-group: "ads"
38111
38668
  operationId: listAdAccounts
38112
38669
  tags: ["Ad Accounts"]
38113
38670
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -38182,6 +38739,7 @@ paths:
38182
38739
  description: Platform ads connection required (TikTok Ads, X Ads) or Instagram missing linked Facebook account
38183
38740
  '429': { $ref: '#/components/responses/RateLimited' }
38184
38741
  patch:
38742
+ x-resource-group: "ads"
38185
38743
  operationId: updateAdAccount
38186
38744
  tags: ["Ad Accounts"]
38187
38745
  x-platforms: ["meta"]
@@ -38239,6 +38797,7 @@ paths:
38239
38797
 
38240
38798
  /v1/ads/dsa-defaults:
38241
38799
  get:
38800
+ x-resource-group: "ads"
38242
38801
  operationId: getDsaDefaults
38243
38802
  tags: ["Ad Accounts"]
38244
38803
  x-platforms: ["meta"]
@@ -38274,6 +38833,7 @@ paths:
38274
38833
 
38275
38834
  /v1/ads/dsa-recommendations:
38276
38835
  get:
38836
+ x-resource-group: "ads"
38277
38837
  operationId: getDsaRecommendations
38278
38838
  tags: ["Ad Accounts"]
38279
38839
  x-platforms: ["meta"]
@@ -38312,6 +38872,7 @@ paths:
38312
38872
 
38313
38873
  /v1/ads/boost:
38314
38874
  post:
38875
+ x-resource-group: "ads"
38315
38876
  operationId: boostPost
38316
38877
  tags: ["Ad Campaigns"]
38317
38878
  x-platforms: ["meta"]
@@ -38567,6 +39128,7 @@ paths:
38567
39128
 
38568
39129
  /v1/ads/create:
38569
39130
  post:
39131
+ x-resource-group: "ads"
38570
39132
  operationId: createStandaloneAd
38571
39133
  tags: ["Ad Campaigns"]
38572
39134
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -39450,6 +40012,7 @@ paths:
39450
40012
 
39451
40013
  /v1/ads/leads:
39452
40014
  get:
40015
+ x-resource-group: "contacts"
39453
40016
  operationId: listLeads
39454
40017
  tags: ["Lead Gen"]
39455
40018
  x-platforms: ["meta", "linkedin"]
@@ -39508,6 +40071,7 @@ paths:
39508
40071
 
39509
40072
  /v1/ads/lead-forms:
39510
40073
  get:
40074
+ x-resource-group: "ads"
39511
40075
  operationId: listLeadForms
39512
40076
  tags: ["Lead Gen"]
39513
40077
  x-platforms: ["meta", "linkedin"]
@@ -39537,6 +40101,7 @@ paths:
39537
40101
  '401': { $ref: '#/components/responses/Unauthorized' }
39538
40102
  '403': { description: Ads add-on required. }
39539
40103
  post:
40104
+ x-resource-group: "ads"
39540
40105
  operationId: createLeadForm
39541
40106
  tags: ["Lead Gen"]
39542
40107
  x-platforms: ["meta", "linkedin"]
@@ -39693,6 +40258,7 @@ paths:
39693
40258
 
39694
40259
  /v1/ads/lead-forms/{formId}:
39695
40260
  get:
40261
+ x-resource-group: "ads"
39696
40262
  operationId: getLeadForm
39697
40263
  tags: ["Lead Gen"]
39698
40264
  x-platforms: ["meta", "linkedin"]
@@ -39709,6 +40275,7 @@ paths:
39709
40275
  '400': { $ref: '#/components/responses/BadRequest' }
39710
40276
  '401': { $ref: '#/components/responses/Unauthorized' }
39711
40277
  delete:
40278
+ x-resource-group: "ads"
39712
40279
  operationId: archiveLeadForm
39713
40280
  tags: ["Lead Gen"]
39714
40281
  x-platforms: ["meta", "linkedin"]
@@ -39728,6 +40295,7 @@ paths:
39728
40295
 
39729
40296
  /v1/ads/lead-forms/{formId}/leads:
39730
40297
  get:
40298
+ x-resource-group: "contacts"
39731
40299
  operationId: listFormLeads
39732
40300
  tags: ["Lead Gen"]
39733
40301
  x-platforms: ["meta"]
@@ -39767,6 +40335,7 @@ paths:
39767
40335
 
39768
40336
  /v1/ads/lead-forms/{formId}/test-leads:
39769
40337
  post:
40338
+ x-resource-group: "contacts"
39770
40339
  operationId: createTestLead
39771
40340
  tags: ["Lead Gen"]
39772
40341
  x-platforms: ["meta"]
@@ -39806,6 +40375,7 @@ paths:
39806
40375
 
39807
40376
  /v1/ads/images:
39808
40377
  post:
40378
+ x-resource-group: "ads"
39809
40379
  operationId: uploadAdImage
39810
40380
  tags: ["Ad Creatives"]
39811
40381
  x-platforms: ["meta"]
@@ -39848,6 +40418,7 @@ paths:
39848
40418
  '501': { description: Only supported on Meta (facebook/instagram) }
39849
40419
 
39850
40420
  get:
40421
+ x-resource-group: "ads"
39851
40422
  operationId: listAdImages
39852
40423
  tags: ["Ad Creatives"]
39853
40424
  x-platforms: ["meta"]
@@ -39887,6 +40458,7 @@ paths:
39887
40458
 
39888
40459
  /v1/ads/interests:
39889
40460
  get:
40461
+ x-resource-group: "ads"
39890
40462
  operationId: searchAdInterests
39891
40463
  deprecated: true
39892
40464
  tags: ["Ad Targeting"]
@@ -39924,6 +40496,7 @@ paths:
39924
40496
 
39925
40497
  /v1/ads/targeting/search:
39926
40498
  get:
40499
+ x-resource-group: "ads"
39927
40500
  operationId: searchAdTargeting
39928
40501
  tags: ["Ad Targeting"]
39929
40502
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest"]
@@ -39986,6 +40559,7 @@ paths:
39986
40559
 
39987
40560
  /v1/ads/targeting/reach-estimate:
39988
40561
  post:
40562
+ x-resource-group: "ads"
39989
40563
  operationId: estimateAdReach
39990
40564
  tags: ["Ad Targeting"]
39991
40565
  x-platforms: ["meta"]
@@ -40044,6 +40618,7 @@ paths:
40044
40618
 
40045
40619
  /v1/ads/targeting/bid-pricing:
40046
40620
  post:
40621
+ x-resource-group: "ads"
40047
40622
  operationId: getLinkedInBidPricing
40048
40623
  tags: ["Ad Targeting"]
40049
40624
  x-platforms: ["linkedin"]
@@ -40115,6 +40690,7 @@ paths:
40115
40690
 
40116
40691
  /v1/ads/targeting/supply-forecast:
40117
40692
  post:
40693
+ x-resource-group: "ads"
40118
40694
  operationId: getLinkedInSupplyForecast
40119
40695
  tags: ["Ad Targeting"]
40120
40696
  x-platforms: ["linkedin"]
@@ -40198,6 +40774,7 @@ paths:
40198
40774
 
40199
40775
  /v1/ads/catalogs:
40200
40776
  get:
40777
+ x-resource-group: "ads"
40201
40778
  operationId: listAdCatalogs
40202
40779
  tags: ["Ad Creatives"]
40203
40780
  x-platforms: ["meta"]
@@ -40231,6 +40808,7 @@ paths:
40231
40808
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
40232
40809
  /v1/ads/catalogs/{catalogId}/product-sets:
40233
40810
  get:
40811
+ x-resource-group: "ads"
40234
40812
  operationId: listAdCatalogProductSets
40235
40813
  tags: ["Ad Creatives"]
40236
40814
  x-platforms: ["meta"]
@@ -40263,6 +40841,7 @@ paths:
40263
40841
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
40264
40842
  /v1/ads/audiences:
40265
40843
  get:
40844
+ x-resource-group: "ads"
40266
40845
  operationId: listAdAudiences
40267
40846
  tags: ["Ad Audiences"]
40268
40847
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40306,6 +40885,7 @@ paths:
40306
40885
  '403':
40307
40886
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
40308
40887
  post:
40888
+ x-resource-group: "ads"
40309
40889
  operationId: createAdAudience
40310
40890
  tags: ["Ad Audiences"]
40311
40891
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40457,6 +41037,7 @@ paths:
40457
41037
 
40458
41038
  /v1/ads/audiences/{audienceId}:
40459
41039
  get:
41040
+ x-resource-group: "ads"
40460
41041
  operationId: getAdAudience
40461
41042
  tags: ["Ad Audiences"]
40462
41043
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40481,6 +41062,7 @@ paths:
40481
41062
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
40482
41063
  '404': { $ref: '#/components/responses/NotFound' }
40483
41064
  put:
41065
+ x-resource-group: "ads"
40484
41066
  operationId: updateAdAudience
40485
41067
  tags: ["Ad Audiences"]
40486
41068
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40531,6 +41113,7 @@ paths:
40531
41113
  '501':
40532
41114
  description: Platform audience updates are only supported on Meta
40533
41115
  delete:
41116
+ x-resource-group: "ads"
40534
41117
  operationId: deleteAdAudience
40535
41118
  tags: ["Ad Audiences"]
40536
41119
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40556,6 +41139,7 @@ paths:
40556
41139
 
40557
41140
  /v1/ads/audiences/{audienceId}/users:
40558
41141
  post:
41142
+ x-resource-group: "ads"
40559
41143
  operationId: addUsersToAdAudience
40560
41144
  tags: ["Ad Audiences"]
40561
41145
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40607,6 +41191,7 @@ paths:
40607
41191
 
40608
41192
  /v1/ads/conversions/quality:
40609
41193
  get:
41194
+ x-resource-group: "ads"
40610
41195
  operationId: getConversionsQuality
40611
41196
  tags: [Conversions]
40612
41197
  x-platforms: ["meta"]
@@ -40649,6 +41234,7 @@ paths:
40649
41234
  '405': { description: "Platform does not expose Event Match Quality (non-Meta)." }
40650
41235
  /v1/ads/conversions:
40651
41236
  post:
41237
+ x-resource-group: "ads"
40652
41238
  operationId: sendConversions
40653
41239
  tags: [Conversions]
40654
41240
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -40799,6 +41385,7 @@ paths:
40799
41385
 
40800
41386
  /v1/ads/conversions/adjustments:
40801
41387
  post:
41388
+ x-resource-group: "ads"
40802
41389
  operationId: adjustConversions
40803
41390
  tags: [Conversions]
40804
41391
  x-platforms: ["meta"]
@@ -40920,6 +41507,7 @@ paths:
40920
41507
 
40921
41508
  /v1/accounts/{accountId}/conversion-destinations:
40922
41509
  get:
41510
+ x-resource-group: "ads"
40923
41511
  operationId: listConversionDestinations
40924
41512
  tags: [Conversions]
40925
41513
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -40995,6 +41583,7 @@ paths:
40995
41583
  description: LinkedIn rate limit hit. Retry with backoff.
40996
41584
 
40997
41585
  post:
41586
+ x-resource-group: "ads"
40998
41587
  operationId: createConversionDestination
40999
41588
  tags: [Conversions]
41000
41589
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41165,6 +41754,7 @@ paths:
41165
41754
 
41166
41755
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}:
41167
41756
  get:
41757
+ x-resource-group: "ads"
41168
41758
  operationId: getConversionDestination
41169
41759
  tags: [Conversions]
41170
41760
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41201,6 +41791,7 @@ paths:
41201
41791
  '429': { description: LinkedIn rate limit hit. Retry with backoff. }
41202
41792
 
41203
41793
  patch:
41794
+ x-resource-group: "ads"
41204
41795
  operationId: updateConversionDestination
41205
41796
  tags: [Conversions]
41206
41797
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41276,6 +41867,7 @@ paths:
41276
41867
  '429': { description: LinkedIn rate limit hit. Retry with backoff. }
41277
41868
 
41278
41869
  delete:
41870
+ x-resource-group: "ads"
41279
41871
  operationId: deleteConversionDestination
41280
41872
  tags: [Conversions]
41281
41873
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41309,6 +41901,7 @@ paths:
41309
41901
 
41310
41902
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}/associations:
41311
41903
  get:
41904
+ x-resource-group: "ads"
41312
41905
  operationId: listConversionAssociations
41313
41906
  tags: [Conversions]
41314
41907
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41352,6 +41945,7 @@ paths:
41352
41945
  '429': { description: LinkedIn rate limit hit. Retry with backoff. }
41353
41946
 
41354
41947
  post:
41948
+ x-resource-group: "ads"
41355
41949
  operationId: addConversionAssociations
41356
41950
  tags: [Conversions]
41357
41951
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41413,6 +42007,7 @@ paths:
41413
42007
  '429': { description: LinkedIn rate limit hit. Retry with backoff. }
41414
42008
 
41415
42009
  delete:
42010
+ x-resource-group: "ads"
41416
42011
  operationId: removeConversionAssociations
41417
42012
  tags: [Conversions]
41418
42013
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41467,6 +42062,7 @@ paths:
41467
42062
 
41468
42063
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}/metrics:
41469
42064
  get:
42065
+ x-resource-group: "ads"
41470
42066
  operationId: getConversionMetrics
41471
42067
  tags: [Conversions]
41472
42068
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41528,6 +42124,7 @@ paths:
41528
42124
 
41529
42125
  /v1/whatsapp/conversions:
41530
42126
  get:
42127
+ x-resource-group: "ads"
41531
42128
  operationId: listWhatsAppConversions
41532
42129
  tags: [WhatsApp]
41533
42130
  summary: List conversion events
@@ -41592,6 +42189,7 @@ paths:
41592
42189
  '401': { $ref: '#/components/responses/Unauthorized' }
41593
42190
  '404': { description: WhatsApp account not found }
41594
42191
  post:
42192
+ x-resource-group: "ads"
41595
42193
  operationId: sendWhatsAppConversion
41596
42194
  tags: [WhatsApp]
41597
42195
  summary: Send WhatsApp conversion event
@@ -41768,6 +42366,7 @@ paths:
41768
42366
 
41769
42367
  /v1/ads/messaging:
41770
42368
  post:
42369
+ x-resource-group: "ads"
41771
42370
  operationId: createMessagingAd
41772
42371
  tags: ["Messaging Ads"]
41773
42372
  x-platforms: ["meta"]
@@ -41805,6 +42404,7 @@ paths:
41805
42404
 
41806
42405
  /v1/ads/call:
41807
42406
  post:
42407
+ x-resource-group: "ads"
41808
42408
  operationId: createCallAd
41809
42409
  tags: ["Messaging Ads"]
41810
42410
  x-platforms: ["meta"]
@@ -41843,6 +42443,7 @@ paths:
41843
42443
 
41844
42444
  /v1/ads/ctwa:
41845
42445
  post:
42446
+ x-resource-group: "ads"
41846
42447
  operationId: createCtwaAd
41847
42448
  tags: ["Messaging Ads"]
41848
42449
  x-platforms: ["meta"]
@@ -41907,6 +42508,7 @@ paths:
41907
42508
 
41908
42509
  /v1/accounts/{accountId}/tracking-tags:
41909
42510
  get:
42511
+ x-resource-group: "ads"
41910
42512
  operationId: listTrackingTags
41911
42513
  tags: ["Tracking Tags"]
41912
42514
  x-platforms: ["meta"]
@@ -41950,6 +42552,7 @@ paths:
41950
42552
  '405': { description: Platform does not support listing tracking tags. }
41951
42553
 
41952
42554
  post:
42555
+ x-resource-group: "ads"
41953
42556
  operationId: createTrackingTag
41954
42557
  tags: ["Tracking Tags"]
41955
42558
  x-platforms: ["meta"]
@@ -42015,6 +42618,7 @@ paths:
42015
42618
 
42016
42619
  /v1/accounts/{accountId}/tracking-tags/{tagId}:
42017
42620
  get:
42621
+ x-resource-group: "ads"
42018
42622
  operationId: getTrackingTag
42019
42623
  tags: ["Tracking Tags"]
42020
42624
  x-platforms: ["meta"]
@@ -42046,6 +42650,7 @@ paths:
42046
42650
  '405': { description: Platform does not support fetching a tracking tag. }
42047
42651
 
42048
42652
  patch:
42653
+ x-resource-group: "ads"
42049
42654
  operationId: updateTrackingTag
42050
42655
  tags: ["Tracking Tags"]
42051
42656
  x-platforms: ["meta"]
@@ -42112,6 +42717,7 @@ paths:
42112
42717
 
42113
42718
  /v1/accounts/{accountId}/tracking-tags/{tagId}/shared-accounts:
42114
42719
  get:
42720
+ x-resource-group: "ads"
42115
42721
  operationId: listTrackingTagSharedAccounts
42116
42722
  tags: ["Tracking Tags"]
42117
42723
  x-platforms: ["meta"]
@@ -42140,6 +42746,7 @@ paths:
42140
42746
  '405': { description: Platform does not support shared accounts. }
42141
42747
 
42142
42748
  post:
42749
+ x-resource-group: "ads"
42143
42750
  operationId: addTrackingTagSharedAccount
42144
42751
  tags: ["Tracking Tags"]
42145
42752
  x-platforms: ["meta"]
@@ -42181,6 +42788,7 @@ paths:
42181
42788
  '405': { description: Platform does not support shared accounts. }
42182
42789
 
42183
42790
  delete:
42791
+ x-resource-group: "ads"
42184
42792
  operationId: removeTrackingTagSharedAccount
42185
42793
  tags: ["Tracking Tags"]
42186
42794
  x-platforms: ["meta"]
@@ -42205,6 +42813,7 @@ paths:
42205
42813
 
42206
42814
  /v1/accounts/{accountId}/tracking-tags/{tagId}/stats:
42207
42815
  get:
42816
+ x-resource-group: "ads"
42208
42817
  operationId: getTrackingTagStats
42209
42818
  tags: ["Tracking Tags"]
42210
42819
  x-platforms: ["meta"]
@@ -42271,6 +42880,7 @@ paths:
42271
42880
 
42272
42881
  /v1/verify/verifications:
42273
42882
  post:
42883
+ x-resource-group: "telephony"
42274
42884
  operationId: createVerification
42275
42885
  tags: [Verify]
42276
42886
  summary: Send a verification code
@@ -42328,6 +42938,7 @@ paths:
42328
42938
 
42329
42939
  /v1/verify/verifications/{verificationId}:
42330
42940
  get:
42941
+ x-resource-group: "telephony"
42331
42942
  operationId: getVerification
42332
42943
  tags: [Verify]
42333
42944
  summary: Get a verification
@@ -42352,6 +42963,7 @@ paths:
42352
42963
 
42353
42964
  /v1/verify/verifications/{verificationId}/check:
42354
42965
  post:
42966
+ x-resource-group: "telephony"
42355
42967
  operationId: checkVerification
42356
42968
  tags: [Verify]
42357
42969
  summary: Check a verification code