late-sdk 0.0.671 → 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: |
@@ -25666,8 +25964,10 @@ paths:
25666
25964
  platform: { type: string, example: twitter }
25667
25965
  '400': { description: Bad request or platform limitation }
25668
25966
  '401': { $ref: '#/components/responses/Unauthorized' }
25967
+ '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25669
25968
  '404': { description: Account not found }
25670
25969
  delete:
25970
+ x-resource-group: "engagement"
25671
25971
  operationId: undoRetweet
25672
25972
  summary: Undo retweet
25673
25973
  description: |
@@ -25698,10 +25998,12 @@ paths:
25698
25998
  platform: { type: string, example: twitter }
25699
25999
  '400': { description: Bad request }
25700
26000
  '401': { $ref: '#/components/responses/Unauthorized' }
26001
+ '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25701
26002
  '404': { description: Account not found }
25702
26003
 
25703
26004
  /v1/twitter/bookmark:
25704
26005
  post:
26006
+ x-resource-group: "engagement"
25705
26007
  operationId: bookmarkPost
25706
26008
  summary: Bookmark a tweet
25707
26009
  description: |
@@ -25734,8 +26036,10 @@ paths:
25734
26036
  platform: { type: string, example: twitter }
25735
26037
  '400': { description: Bad request or platform limitation }
25736
26038
  '401': { $ref: '#/components/responses/Unauthorized' }
26039
+ '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25737
26040
  '404': { description: Account not found }
25738
26041
  delete:
26042
+ x-resource-group: "engagement"
25739
26043
  operationId: removeBookmark
25740
26044
  summary: Remove bookmark
25741
26045
  description: |
@@ -25766,10 +26070,12 @@ paths:
25766
26070
  platform: { type: string, example: twitter }
25767
26071
  '400': { description: Bad request }
25768
26072
  '401': { $ref: '#/components/responses/Unauthorized' }
26073
+ '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25769
26074
  '404': { description: Account not found }
25770
26075
 
25771
26076
  /v1/twitter/follow:
25772
26077
  post:
26078
+ x-resource-group: "engagement"
25773
26079
  operationId: followUser
25774
26080
  summary: Follow a user
25775
26081
  description: |
@@ -25803,8 +26109,10 @@ paths:
25803
26109
  platform: { type: string, example: twitter }
25804
26110
  '400': { description: Bad request or platform limitation }
25805
26111
  '401': { $ref: '#/components/responses/Unauthorized' }
26112
+ '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25806
26113
  '404': { description: Account not found }
25807
26114
  delete:
26115
+ x-resource-group: "engagement"
25808
26116
  operationId: unfollowUser
25809
26117
  summary: Unfollow a user
25810
26118
  description: |
@@ -25835,10 +26143,12 @@ paths:
25835
26143
  platform: { type: string, example: twitter }
25836
26144
  '400': { description: Bad request }
25837
26145
  '401': { $ref: '#/components/responses/Unauthorized' }
26146
+ '403': { description: 'X rejected the request (e.g. suspended account, missing OAuth scope)' }
25838
26147
  '404': { description: Account not found }
25839
26148
 
25840
26149
  /v1/twitter/search:
25841
26150
  get:
26151
+ x-resource-group: "engagement"
25842
26152
  operationId: searchTweets
25843
26153
  summary: Search recent tweets
25844
26154
  description: |
@@ -25944,6 +26254,7 @@ paths:
25944
26254
 
25945
26255
  /v1/twitter/tweet:
25946
26256
  get:
26257
+ x-resource-group: "engagement"
25947
26258
  operationId: getTweet
25948
26259
  summary: Look up a tweet
25949
26260
  description: |
@@ -26008,6 +26319,7 @@ paths:
26008
26319
 
26009
26320
  /v1/inbox/mentions:
26010
26321
  get:
26322
+ x-resource-group: "engagement"
26011
26323
  operationId: listInboxMentions
26012
26324
  summary: List mentions
26013
26325
  description: |
@@ -26107,6 +26419,7 @@ paths:
26107
26419
 
26108
26420
  /v1/inbox/mentions/reply:
26109
26421
  post:
26422
+ x-resource-group: "engagement"
26110
26423
  operationId: replyToMention
26111
26424
  summary: Reply to a mention
26112
26425
  description: |
@@ -26169,6 +26482,7 @@ paths:
26169
26482
 
26170
26483
  /v1/inbox/reviews:
26171
26484
  get:
26485
+ x-resource-group: "engagement"
26172
26486
  operationId: listInboxReviews
26173
26487
  summary: List reviews
26174
26488
  description: |
@@ -26292,6 +26606,7 @@ paths:
26292
26606
 
26293
26607
  /v1/inbox/reviews/{reviewId}/reply:
26294
26608
  post:
26609
+ x-resource-group: "engagement"
26295
26610
  operationId: replyToInboxReview
26296
26611
  summary: Reply to review
26297
26612
  description: Post a reply to a review. Requires accountId in request body.
@@ -26333,6 +26648,7 @@ paths:
26333
26648
  '403':
26334
26649
  description: Inbox addon required
26335
26650
  delete:
26651
+ x-resource-group: "engagement"
26336
26652
  operationId: deleteInboxReviewReply
26337
26653
  summary: Delete review reply
26338
26654
  description: Delete a reply to a review (Google Business only). Requires accountId in request body.
@@ -26377,6 +26693,7 @@ paths:
26377
26693
 
26378
26694
  /v1/whatsapp/templates:
26379
26695
  get:
26696
+ x-resource-group: "accounts"
26380
26697
  operationId: getWhatsAppTemplates
26381
26698
  tags: [WhatsApp]
26382
26699
  summary: List templates
@@ -26419,6 +26736,7 @@ paths:
26419
26736
  '401': { $ref: '#/components/responses/Unauthorized' }
26420
26737
  '404': { description: WhatsApp account not found }
26421
26738
  post:
26739
+ x-resource-group: "accounts"
26422
26740
  operationId: createWhatsAppTemplate
26423
26741
  tags: [WhatsApp]
26424
26742
  summary: Create template
@@ -26557,6 +26875,7 @@ paths:
26557
26875
 
26558
26876
  /v1/whatsapp/templates/{templateName}:
26559
26877
  get:
26878
+ x-resource-group: "accounts"
26560
26879
  operationId: getWhatsAppTemplate
26561
26880
  tags: [WhatsApp]
26562
26881
  summary: Get template
@@ -26603,6 +26922,7 @@ paths:
26603
26922
  '404': { $ref: '#/components/responses/NotFound' }
26604
26923
  '502': { description: Meta rejected the request or was unreachable. Meta 4xx statuses are forwarded as-is. }
26605
26924
  patch:
26925
+ x-resource-group: "accounts"
26606
26926
  operationId: updateWhatsAppTemplate
26607
26927
  tags: [WhatsApp]
26608
26928
  summary: Update template
@@ -26668,6 +26988,7 @@ paths:
26668
26988
  '404': { $ref: '#/components/responses/NotFound' }
26669
26989
  '502': { description: Meta rejected the update or was unreachable. Meta 4xx statuses are forwarded as-is. }
26670
26990
  delete:
26991
+ x-resource-group: "accounts"
26671
26992
  operationId: deleteWhatsAppTemplate
26672
26993
  tags: [WhatsApp]
26673
26994
  summary: Delete template
@@ -26712,6 +27033,7 @@ paths:
26712
27033
 
26713
27034
  /v1/whatsapp/calling:
26714
27035
  get:
27036
+ x-resource-group: "accounts"
26715
27037
  operationId: getWhatsAppCallingConfig
26716
27038
  tags: [WhatsApp Calling]
26717
27039
  summary: Get calling config for an account
@@ -26759,6 +27081,7 @@ paths:
26759
27081
 
26760
27082
  /v1/whatsapp/phone-numbers/{id}/calling:
26761
27083
  post:
27084
+ x-resource-group: "telephony"
26762
27085
  operationId: enableWhatsAppCallingLegacy
26763
27086
  deprecated: true
26764
27087
  tags: [WhatsApp Calling]
@@ -26814,6 +27137,7 @@ paths:
26814
27137
  '404': { description: WhatsApp phone number not found }
26815
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." }
26816
27139
  patch:
27140
+ x-resource-group: "telephony"
26817
27141
  operationId: updateWhatsAppCallingLegacy
26818
27142
  deprecated: true
26819
27143
  tags: [WhatsApp Calling]
@@ -26856,6 +27180,7 @@ paths:
26856
27180
  '404': { description: WhatsApp phone number not found }
26857
27181
  '422': { description: Calling must be enabled before settings can be updated }
26858
27182
  delete:
27183
+ x-resource-group: "telephony"
26859
27184
  operationId: disableWhatsAppCallingLegacy
26860
27185
  deprecated: true
26861
27186
  tags: [WhatsApp Calling]
@@ -26880,6 +27205,7 @@ paths:
26880
27205
 
26881
27206
  /v1/whatsapp/call-permissions:
26882
27207
  get:
27208
+ x-resource-group: "contacts"
26883
27209
  operationId: getWhatsAppCallPermissions
26884
27210
  tags: [WhatsApp Calling]
26885
27211
  summary: Check call permission
@@ -26918,6 +27244,7 @@ paths:
26918
27244
 
26919
27245
  /v1/whatsapp/calls:
26920
27246
  post:
27247
+ x-resource-group: "messages"
26921
27248
  operationId: initiateWhatsAppCall
26922
27249
  tags: [WhatsApp Calling]
26923
27250
  summary: Initiate outbound call
@@ -26993,6 +27320,7 @@ paths:
26993
27320
  '422': { description: "Calling not enabled, BIC country blocked, or missing Meta SIP credentials" }
26994
27321
  '502': { description: Telnyx-side originate failed; the Call doc has been marked failed. }
26995
27322
  get:
27323
+ x-resource-group: "messages"
26996
27324
  operationId: listWhatsAppCalls
26997
27325
  tags: [WhatsApp Calling]
26998
27326
  summary: List call history for an account
@@ -27051,6 +27379,7 @@ paths:
27051
27379
 
27052
27380
  /v1/whatsapp/calls/{id}:
27053
27381
  get:
27382
+ x-resource-group: "messages"
27054
27383
  operationId: getWhatsAppCall
27055
27384
  tags: [WhatsApp Calling]
27056
27385
  summary: Get a single call
@@ -27074,6 +27403,7 @@ paths:
27074
27403
 
27075
27404
  /v1/whatsapp/calls/{id}/recording:
27076
27405
  get:
27406
+ x-resource-group: "messages"
27077
27407
  operationId: getWhatsAppCallRecording
27078
27408
  tags: [WhatsApp Calling]
27079
27409
  summary: Get a call recording
@@ -27106,6 +27436,7 @@ paths:
27106
27436
 
27107
27437
  /v1/whatsapp/calls/estimate:
27108
27438
  get:
27439
+ x-resource-group: "messages"
27109
27440
  operationId: getWhatsAppCallEstimate
27110
27441
  tags: [WhatsApp Calling]
27111
27442
  summary: Estimate per-minute cost
@@ -27143,6 +27474,7 @@ paths:
27143
27474
 
27144
27475
  /v1/calls:
27145
27476
  get:
27477
+ x-resource-group: "messages"
27146
27478
  operationId: listCalls
27147
27479
  tags: [Calls]
27148
27480
  summary: List all calls (unified history)
@@ -27192,6 +27524,7 @@ paths:
27192
27524
 
27193
27525
  /v1/calls/{id}:
27194
27526
  get:
27527
+ x-resource-group: "messages"
27195
27528
  operationId: getCall
27196
27529
  tags: [Calls]
27197
27530
  summary: Get a call (any channel)
@@ -27226,6 +27559,7 @@ paths:
27226
27559
 
27227
27560
  /v1/calls/{id}/recording:
27228
27561
  get:
27562
+ x-resource-group: "messages"
27229
27563
  operationId: getCallRecording
27230
27564
  tags: [Calls]
27231
27565
  summary: Get a call recording
@@ -27258,6 +27592,7 @@ paths:
27258
27592
 
27259
27593
  /v1/voice/calls:
27260
27594
  post:
27595
+ x-resource-group: "messages"
27261
27596
  operationId: createVoiceCall
27262
27597
  tags: [Voice]
27263
27598
  summary: Place an outbound phone call
@@ -27321,6 +27656,7 @@ paths:
27321
27656
  '429': { description: Outbound call limit reached (per rolling hour). }
27322
27657
  '502': { description: Carrier-side originate failed; the call has been marked failed. }
27323
27658
  get:
27659
+ x-resource-group: "messages"
27324
27660
  operationId: listVoiceCalls
27325
27661
  tags: [Voice]
27326
27662
  summary: List phone calls
@@ -27354,6 +27690,7 @@ paths:
27354
27690
 
27355
27691
  /v1/voice/calls/{id}:
27356
27692
  get:
27693
+ x-resource-group: "messages"
27357
27694
  operationId: getVoiceCall
27358
27695
  tags: [Voice]
27359
27696
  summary: Get a phone call
@@ -27377,6 +27714,7 @@ paths:
27377
27714
 
27378
27715
  /v1/voice/calls/{id}/end:
27379
27716
  post:
27717
+ x-resource-group: "messages"
27380
27718
  operationId: endVoiceCall
27381
27719
  tags: [Voice]
27382
27720
  summary: Hang up a live call
@@ -27406,6 +27744,7 @@ paths:
27406
27744
 
27407
27745
  /v1/voice/calls/{id}/recording:
27408
27746
  get:
27747
+ x-resource-group: "messages"
27409
27748
  operationId: getVoiceCallRecording
27410
27749
  tags: [Voice]
27411
27750
  summary: Get a call recording
@@ -27435,6 +27774,7 @@ paths:
27435
27774
 
27436
27775
  /v1/voice/calls/{id}/transfer:
27437
27776
  post:
27777
+ x-resource-group: "messages"
27438
27778
  operationId: transferVoiceCall
27439
27779
  tags: [Voice]
27440
27780
  summary: Blind-transfer a live call
@@ -27473,6 +27813,7 @@ paths:
27473
27813
 
27474
27814
  /v1/voice/calls/estimate:
27475
27815
  get:
27816
+ x-resource-group: "messages"
27476
27817
  operationId: getVoiceCallEstimate
27477
27818
  tags: [Voice]
27478
27819
  summary: Estimate call cost
@@ -27516,6 +27857,7 @@ paths:
27516
27857
 
27517
27858
  /v1/voice/calls/web:
27518
27859
  post:
27860
+ x-resource-group: "messages"
27519
27861
  operationId: createVoiceWebSession
27520
27862
  tags: [Voice]
27521
27863
  summary: Mint a browser softphone session
@@ -27547,6 +27889,7 @@ paths:
27547
27889
 
27548
27890
  /v1/voice/calls/web/dial:
27549
27891
  post:
27892
+ x-resource-group: "messages"
27550
27893
  operationId: dialVoiceWebCall
27551
27894
  tags: [Voice]
27552
27895
  summary: Dial from the browser softphone
@@ -27593,6 +27936,7 @@ paths:
27593
27936
 
27594
27937
  /v1/sms/messages:
27595
27938
  post:
27939
+ x-resource-group: "messages"
27596
27940
  operationId: sendSms
27597
27941
  tags: [SMS]
27598
27942
  summary: Send an SMS/MMS
@@ -27652,6 +27996,7 @@ paths:
27652
27996
 
27653
27997
  /v1/sms/lookup:
27654
27998
  get:
27999
+ x-resource-group: "telephony"
27655
28000
  operationId: lookupSmsNumber
27656
28001
  tags: [SMS]
27657
28002
  summary: Look up carrier + line type
@@ -27682,6 +28027,7 @@ paths:
27682
28027
 
27683
28028
  /v1/sms/opt-outs:
27684
28029
  get:
28030
+ x-resource-group: "contacts"
27685
28031
  operationId: listSmsOptOuts
27686
28032
  tags: [SMS]
27687
28033
  summary: List SMS opt-outs
@@ -27719,6 +28065,7 @@ paths:
27719
28065
 
27720
28066
  /v1/sms/sender-ids:
27721
28067
  post:
28068
+ x-resource-group: "telephony"
27722
28069
  operationId: createSmsSenderId
27723
28070
  tags: [SMS]
27724
28071
  summary: Create an alphanumeric sender ID
@@ -27766,6 +28113,7 @@ paths:
27766
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).' }
27767
28114
  '422': { description: 'Sender ID rejected: it appears to impersonate a protected brand or institution.' }
27768
28115
  get:
28116
+ x-resource-group: "telephony"
27769
28117
  operationId: listSmsSenderIds
27770
28118
  tags: [SMS]
27771
28119
  summary: List alphanumeric sender IDs
@@ -27806,6 +28154,7 @@ paths:
27806
28154
 
27807
28155
  /v1/sms/sender-ids/limit-request:
27808
28156
  post:
28157
+ x-resource-group: "telephony"
27809
28158
  operationId: requestSmsSenderIdLimitIncrease
27810
28159
  tags: [SMS]
27811
28160
  summary: Request a higher sender ID daily limit
@@ -27842,6 +28191,7 @@ paths:
27842
28191
 
27843
28192
  /v1/sms/sender-ids/{id}:
27844
28193
  delete:
28194
+ x-resource-group: "telephony"
27845
28195
  operationId: deleteSmsSenderId
27846
28196
  tags: [SMS]
27847
28197
  summary: Delete an alphanumeric sender ID
@@ -27867,6 +28217,7 @@ paths:
27867
28217
 
27868
28218
  /v1/sms/registrations:
27869
28219
  post:
28220
+ x-resource-group: "telephony"
27870
28221
  operationId: startSmsRegistration
27871
28222
  tags: [SMS]
27872
28223
  summary: Start a carrier registration
@@ -28016,6 +28367,7 @@ paths:
28016
28367
  '401': { $ref: '#/components/responses/Unauthorized' }
28017
28368
  '422': { description: Carrier registry rejected a field; `param` names it when known. }
28018
28369
  get:
28370
+ x-resource-group: "telephony"
28019
28371
  operationId: listSmsRegistrations
28020
28372
  tags: [SMS]
28021
28373
  summary: List carrier registrations
@@ -28065,6 +28417,7 @@ paths:
28065
28417
 
28066
28418
  /v1/sms/registrations/preflight:
28067
28419
  post:
28420
+ x-resource-group: "telephony"
28068
28421
  operationId: preflightSmsRegistration
28069
28422
  tags: [SMS]
28070
28423
  summary: Pre-check a carrier registration
@@ -28119,6 +28472,7 @@ paths:
28119
28472
  '401': { $ref: '#/components/responses/Unauthorized' }
28120
28473
  /v1/sms/registrations/{id}:
28121
28474
  delete:
28475
+ x-resource-group: "telephony"
28122
28476
  operationId: deactivateSmsRegistration
28123
28477
  tags: [SMS]
28124
28478
  summary: Deactivate a brand/campaign registration
@@ -28147,6 +28501,7 @@ paths:
28147
28501
  '401': { $ref: '#/components/responses/Unauthorized' }
28148
28502
  '404': { description: Registration not found }
28149
28503
  get:
28504
+ x-resource-group: "telephony"
28150
28505
  operationId: getSmsRegistration
28151
28506
  tags: [SMS]
28152
28507
  summary: Get a carrier registration
@@ -28187,6 +28542,7 @@ paths:
28187
28542
 
28188
28543
  /v1/sms/registrations/{id}/verify-otp:
28189
28544
  post:
28545
+ x-resource-group: "telephony"
28190
28546
  operationId: verifySmsRegistrationOtp
28191
28547
  tags: [SMS]
28192
28548
  summary: Submit the sole-prop OTP
@@ -28222,6 +28578,7 @@ paths:
28222
28578
 
28223
28579
  /v1/sms/registrations/{id}/resend-otp:
28224
28580
  post:
28581
+ x-resource-group: "telephony"
28225
28582
  operationId: resendSmsRegistrationOtp
28226
28583
  tags: [SMS]
28227
28584
  summary: Re-send the sole-prop OTP
@@ -28250,6 +28607,7 @@ paths:
28250
28607
 
28251
28608
  /v1/sms/registrations/{id}/appeal:
28252
28609
  post:
28610
+ x-resource-group: "telephony"
28253
28611
  operationId: appealSmsRegistration
28254
28612
  tags: [SMS]
28255
28613
  summary: Appeal a rejected campaign
@@ -28296,6 +28654,7 @@ paths:
28296
28654
 
28297
28655
  /v1/sms/registrations/{id}/respond:
28298
28656
  post:
28657
+ x-resource-group: "telephony"
28299
28658
  operationId: respondToSmsRegistrationReview
28300
28659
  tags: [SMS]
28301
28660
  summary: Reply to a change request
@@ -28340,6 +28699,7 @@ paths:
28340
28699
 
28341
28700
  /v1/sms/opt-in-proof:
28342
28701
  post:
28702
+ x-resource-group: "contacts"
28343
28703
  operationId: uploadSmsOptInProofFile
28344
28704
  tags: [SMS]
28345
28705
  summary: Upload opt-in form proof
@@ -28375,6 +28735,7 @@ paths:
28375
28735
 
28376
28736
  /v1/sms/registrations/{id}/opt-in-proof:
28377
28737
  post:
28738
+ x-resource-group: "contacts"
28378
28739
  operationId: uploadSmsOptInProof
28379
28740
  tags: [SMS]
28380
28741
  summary: Upload opt-in form proof for an appeal
@@ -28413,6 +28774,7 @@ paths:
28413
28774
 
28414
28775
  /v1/sms/registrations/share:
28415
28776
  post:
28777
+ x-resource-group: "telephony"
28416
28778
  operationId: shareSmsRegistration
28417
28779
  tags: [SMS]
28418
28780
  summary: Create a registration share link
@@ -28448,6 +28810,7 @@ paths:
28448
28810
 
28449
28811
  /v1/whatsapp/template-library:
28450
28812
  get:
28813
+ x-resource-group: "accounts"
28451
28814
  operationId: getWhatsAppLibraryTemplate
28452
28815
  tags: [WhatsApp Templates]
28453
28816
  summary: Look up a library template
@@ -28495,6 +28858,7 @@ paths:
28495
28858
 
28496
28859
  /v1/whatsapp/business-profile:
28497
28860
  get:
28861
+ x-resource-group: "accounts"
28498
28862
  operationId: getWhatsAppBusinessProfile
28499
28863
  tags: [WhatsApp]
28500
28864
  summary: Get business profile
@@ -28535,6 +28899,7 @@ paths:
28535
28899
  '401': { $ref: '#/components/responses/Unauthorized' }
28536
28900
  '404': { description: WhatsApp account not found }
28537
28901
  post:
28902
+ x-resource-group: "accounts"
28538
28903
  operationId: updateWhatsAppBusinessProfile
28539
28904
  tags: [WhatsApp]
28540
28905
  summary: Update business profile
@@ -28606,6 +28971,7 @@ paths:
28606
28971
 
28607
28972
  /v1/whatsapp/business-profile/photo:
28608
28973
  post:
28974
+ x-resource-group: "accounts"
28609
28975
  operationId: uploadWhatsAppProfilePhoto
28610
28976
  tags: [WhatsApp]
28611
28977
  summary: Upload profile picture
@@ -28664,6 +29030,7 @@ paths:
28664
29030
 
28665
29031
  /v1/whatsapp/business-profile/display-name:
28666
29032
  get:
29033
+ x-resource-group: "accounts"
28667
29034
  operationId: getWhatsAppDisplayName
28668
29035
  tags: [WhatsApp]
28669
29036
  summary: Get display name status
@@ -28701,6 +29068,7 @@ paths:
28701
29068
  '401': { $ref: '#/components/responses/Unauthorized' }
28702
29069
  '404': { description: WhatsApp account not found or accountId is not a valid ObjectId }
28703
29070
  post:
29071
+ x-resource-group: "accounts"
28704
29072
  operationId: updateWhatsAppDisplayName
28705
29073
  tags: [WhatsApp]
28706
29074
  summary: Request display name change
@@ -28750,6 +29118,7 @@ paths:
28750
29118
 
28751
29119
  /v1/whatsapp/business-profile/username:
28752
29120
  get:
29121
+ x-resource-group: "accounts"
28753
29122
  operationId: getWhatsappBusinessUsername
28754
29123
  tags: [WhatsApp]
28755
29124
  summary: Get business username
@@ -28784,6 +29153,7 @@ paths:
28784
29153
  '401': { $ref: '#/components/responses/Unauthorized' }
28785
29154
  '404': { description: WhatsApp account not found }
28786
29155
  post:
29156
+ x-resource-group: "accounts"
28787
29157
  operationId: setWhatsappBusinessUsername
28788
29158
  tags: [WhatsApp]
28789
29159
  summary: Set business username
@@ -28849,6 +29219,7 @@ paths:
28849
29219
  '401': { $ref: '#/components/responses/Unauthorized' }
28850
29220
  '404': { description: WhatsApp account not found }
28851
29221
  delete:
29222
+ x-resource-group: "accounts"
28852
29223
  operationId: deleteWhatsappBusinessUsername
28853
29224
  tags: [WhatsApp]
28854
29225
  summary: Delete business username
@@ -28886,6 +29257,7 @@ paths:
28886
29257
 
28887
29258
  /v1/whatsapp/business-profile/username/suggestions:
28888
29259
  get:
29260
+ x-resource-group: "accounts"
28889
29261
  operationId: getWhatsappBusinessUsernameSuggestions
28890
29262
  tags: [WhatsApp]
28891
29263
  summary: Get username suggestions
@@ -28922,6 +29294,7 @@ paths:
28922
29294
 
28923
29295
  /v1/whatsapp/number-info:
28924
29296
  get:
29297
+ x-resource-group: "contacts"
28925
29298
  operationId: getWhatsAppNumberInfo
28926
29299
  tags: [WhatsApp Phone Numbers]
28927
29300
  summary: Get number status
@@ -28970,6 +29343,7 @@ paths:
28970
29343
 
28971
29344
  /v1/whatsapp/block-users/status:
28972
29345
  get:
29346
+ x-resource-group: "contacts"
28973
29347
  operationId: getWhatsAppBlockStatus
28974
29348
  tags: [WhatsApp]
28975
29349
  summary: Check if a user is blocked
@@ -28998,6 +29372,7 @@ paths:
28998
29372
 
28999
29373
  /v1/whatsapp/block-users:
29000
29374
  get:
29375
+ x-resource-group: "contacts"
29001
29376
  operationId: getWhatsAppBlockedUsers
29002
29377
  tags: [WhatsApp]
29003
29378
  summary: List blocked users
@@ -29029,6 +29404,7 @@ paths:
29029
29404
  '401': { $ref: '#/components/responses/Unauthorized' }
29030
29405
  '404': { description: WhatsApp account not found }
29031
29406
  post:
29407
+ x-resource-group: "contacts"
29032
29408
  operationId: blockWhatsAppUsers
29033
29409
  tags: [WhatsApp]
29034
29410
  summary: Block users
@@ -29087,6 +29463,7 @@ paths:
29087
29463
  '401': { $ref: '#/components/responses/Unauthorized' }
29088
29464
  '404': { description: WhatsApp account not found }
29089
29465
  delete:
29466
+ x-resource-group: "contacts"
29090
29467
  operationId: unblockWhatsAppUsers
29091
29468
  tags: [WhatsApp]
29092
29469
  summary: Unblock users
@@ -29140,6 +29517,7 @@ paths:
29140
29517
 
29141
29518
  /v1/whatsapp/dataset:
29142
29519
  get:
29520
+ x-resource-group: "accounts"
29143
29521
  operationId: getWhatsAppDataset
29144
29522
  tags: [WhatsApp]
29145
29523
  summary: Get CTWA conversions dataset
@@ -29167,6 +29545,7 @@ paths:
29167
29545
  '401': { $ref: '#/components/responses/Unauthorized' }
29168
29546
  '404': { description: WhatsApp account not found }
29169
29547
  post:
29548
+ x-resource-group: "accounts"
29170
29549
  operationId: createWhatsAppDataset
29171
29550
  tags: [WhatsApp]
29172
29551
  summary: Provision CTWA dataset
@@ -29228,6 +29607,7 @@ paths:
29228
29607
 
29229
29608
  /v1/phone-numbers:
29230
29609
  get:
29610
+ x-resource-group: "telephony"
29231
29611
  operationId: listPhoneNumbers
29232
29612
  tags: [Phone Numbers]
29233
29613
  summary: List phone numbers
@@ -29327,6 +29707,7 @@ paths:
29327
29707
 
29328
29708
  /v1/phone-numbers/{id}:
29329
29709
  get:
29710
+ x-resource-group: "telephony"
29330
29711
  operationId: getPhoneNumber
29331
29712
  tags: [Phone Numbers]
29332
29713
  summary: Get phone number
@@ -29372,6 +29753,7 @@ paths:
29372
29753
  '401': { $ref: '#/components/responses/Unauthorized' }
29373
29754
  '404': { $ref: '#/components/responses/NotFound' }
29374
29755
  delete:
29756
+ x-resource-group: "telephony"
29375
29757
  operationId: releasePhoneNumber
29376
29758
  tags: [Phone Numbers]
29377
29759
  summary: Release phone number
@@ -29412,6 +29794,7 @@ paths:
29412
29794
 
29413
29795
  /v1/phone-numbers/purchase:
29414
29796
  post:
29797
+ x-resource-group: "telephony"
29415
29798
  operationId: purchasePhoneNumber
29416
29799
  tags: [Phone Numbers]
29417
29800
  summary: Purchase phone number
@@ -29597,6 +29980,7 @@ paths:
29597
29980
 
29598
29981
  /v1/phone-numbers/countries:
29599
29982
  get:
29983
+ x-resource-group: "telephony"
29600
29984
  operationId: listPhoneNumberCountries
29601
29985
  tags: [Phone Numbers]
29602
29986
  summary: List offerable number countries
@@ -29653,6 +30037,7 @@ paths:
29653
30037
 
29654
30038
  /v1/phone-numbers/available:
29655
30039
  get:
30040
+ x-resource-group: "telephony"
29656
30041
  operationId: searchAvailablePhoneNumbers
29657
30042
  tags: [Phone Numbers]
29658
30043
  summary: Search available numbers
@@ -29695,6 +30080,7 @@ paths:
29695
30080
 
29696
30081
  /v1/phone-numbers/availability:
29697
30082
  get:
30083
+ x-resource-group: "telephony"
29698
30084
  operationId: checkPhoneNumberAvailability
29699
30085
  tags: [Phone Numbers]
29700
30086
  summary: Check country availability
@@ -29756,6 +30142,7 @@ paths:
29756
30142
 
29757
30143
  /v1/whatsapp/phone-numbers:
29758
30144
  get:
30145
+ x-resource-group: "telephony"
29759
30146
  operationId: getWhatsAppPhoneNumbers
29760
30147
  deprecated: true
29761
30148
  tags: [WhatsApp Phone Numbers]
@@ -29860,6 +30247,7 @@ paths:
29860
30247
 
29861
30248
  /v1/whatsapp/phone-numbers/purchase:
29862
30249
  post:
30250
+ x-resource-group: "telephony"
29863
30251
  operationId: purchaseWhatsAppPhoneNumber
29864
30252
  deprecated: true
29865
30253
  tags: [WhatsApp Phone Numbers]
@@ -29987,6 +30375,7 @@ paths:
29987
30375
 
29988
30376
  /v1/whatsapp/phone-numbers/countries:
29989
30377
  get:
30378
+ x-resource-group: "telephony"
29990
30379
  operationId: listWhatsAppNumberCountries
29991
30380
  deprecated: true
29992
30381
  tags: [WhatsApp Phone Numbers]
@@ -30023,6 +30412,7 @@ paths:
30023
30412
 
30024
30413
  /v1/whatsapp/phone-numbers/available:
30025
30414
  get:
30415
+ x-resource-group: "telephony"
30026
30416
  operationId: searchAvailableWhatsAppNumbers
30027
30417
  deprecated: true
30028
30418
  tags: [WhatsApp Phone Numbers]
@@ -30064,6 +30454,7 @@ paths:
30064
30454
 
30065
30455
  /v1/whatsapp/phone-numbers/availability:
30066
30456
  get:
30457
+ x-resource-group: "telephony"
30067
30458
  operationId: checkWhatsAppNumberAvailability
30068
30459
  deprecated: true
30069
30460
  tags: [WhatsApp Phone Numbers]
@@ -30129,6 +30520,7 @@ paths:
30129
30520
 
30130
30521
  /v1/phone-numbers/kyc:
30131
30522
  get:
30523
+ x-resource-group: "telephony"
30132
30524
  operationId: getPhoneNumberKycForm
30133
30525
  tags: [Phone Numbers]
30134
30526
  summary: Get KYC form spec
@@ -30196,6 +30588,7 @@ paths:
30196
30588
  '400': { description: Country not available }
30197
30589
  '401': { $ref: '#/components/responses/Unauthorized' }
30198
30590
  post:
30591
+ x-resource-group: "telephony"
30199
30592
  operationId: submitPhoneNumberKyc
30200
30593
  tags: [Phone Numbers]
30201
30594
  summary: Submit KYC
@@ -30301,6 +30694,7 @@ paths:
30301
30694
 
30302
30695
  /v1/phone-numbers/kyc/document/{documentId}:
30303
30696
  get:
30697
+ x-resource-group: "telephony"
30304
30698
  operationId: viewPhoneNumberKycDocument
30305
30699
  tags: [Phone Numbers]
30306
30700
  summary: View a KYC document on file
@@ -30329,6 +30723,7 @@ paths:
30329
30723
 
30330
30724
  /v1/phone-numbers/kyc/upload-document:
30331
30725
  post:
30726
+ x-resource-group: "telephony"
30332
30727
  operationId: uploadPhoneNumberKycDocument
30333
30728
  tags: [Phone Numbers]
30334
30729
  summary: Upload a KYC document
@@ -30362,6 +30757,7 @@ paths:
30362
30757
 
30363
30758
  /v1/phone-numbers/kyc/validate-address:
30364
30759
  post:
30760
+ x-resource-group: "telephony"
30365
30761
  operationId: validatePhoneNumberKycAddress
30366
30762
  tags: [Phone Numbers]
30367
30763
  summary: Pre-validate KYC address
@@ -30431,6 +30827,7 @@ paths:
30431
30827
 
30432
30828
  /v1/phone-numbers/kyc/share:
30433
30829
  post:
30830
+ x-resource-group: "telephony"
30434
30831
  operationId: createPhoneNumberKycLink
30435
30832
  tags: [Phone Numbers]
30436
30833
  summary: Create a hosted KYC link
@@ -30491,6 +30888,7 @@ paths:
30491
30888
 
30492
30889
  /v1/phone-numbers/port-in:
30493
30890
  post:
30891
+ x-resource-group: "telephony"
30494
30892
  operationId: createPhoneNumberPortIn
30495
30893
  tags: [Phone Numbers]
30496
30894
  summary: Port numbers in
@@ -30602,6 +31000,7 @@ paths:
30602
31000
  '409': { description: "A number is already provisioned, or already in an in-flight port" }
30603
31001
  '422': { description: "A number is not portable (reason included), numbers span multiple non-US/CA countries, or every split order failed to submit" }
30604
31002
  get:
31003
+ x-resource-group: "telephony"
30605
31004
  operationId: listPhoneNumberPortIns
30606
31005
  tags: [Phone Numbers]
30607
31006
  summary: List port-in orders
@@ -30638,6 +31037,7 @@ paths:
30638
31037
 
30639
31038
  /v1/phone-numbers/port-in/check:
30640
31039
  post:
31040
+ x-resource-group: "telephony"
30641
31041
  operationId: checkPhoneNumberPortability
30642
31042
  tags: [Phone Numbers]
30643
31043
  summary: Check portability
@@ -30686,6 +31086,7 @@ paths:
30686
31086
 
30687
31087
  /v1/phone-numbers/port-in/documents:
30688
31088
  post:
31089
+ x-resource-group: "telephony"
30689
31090
  operationId: uploadPhoneNumberPortInDocument
30690
31091
  tags: [Phone Numbers]
30691
31092
  summary: Upload a porting document
@@ -30723,6 +31124,7 @@ paths:
30723
31124
 
30724
31125
  /v1/phone-numbers/port-in/requirements:
30725
31126
  get:
31127
+ x-resource-group: "telephony"
30726
31128
  operationId: getPhoneNumberPortInRequirements
30727
31129
  tags: [Phone Numbers]
30728
31130
  summary: Country porting requirements
@@ -30766,6 +31168,7 @@ paths:
30766
31168
 
30767
31169
  /v1/phone-numbers/port-in/{id}/requirements:
30768
31170
  get:
31171
+ x-resource-group: "telephony"
30769
31172
  operationId: getPhoneNumberPortInOrderRequirements
30770
31173
  tags: [Phone Numbers]
30771
31174
  summary: A port-in order's pending requirements
@@ -30807,6 +31210,7 @@ paths:
30807
31210
 
30808
31211
  /v1/phone-numbers/port-in/{id}:
30809
31212
  delete:
31213
+ x-resource-group: "telephony"
30810
31214
  operationId: cancelPhoneNumberPortIn
30811
31215
  tags: [Phone Numbers]
30812
31216
  summary: Cancel a port-in
@@ -30836,6 +31240,7 @@ paths:
30836
31240
 
30837
31241
  /v1/phone-numbers/kyc/review-packet:
30838
31242
  post:
31243
+ x-resource-group: "telephony"
30839
31244
  operationId: reviewPhoneNumberKycPacket
30840
31245
  tags: [Phone Numbers]
30841
31246
  summary: Pre-review a KYC packet
@@ -30890,6 +31295,7 @@ paths:
30890
31295
 
30891
31296
  /v1/phone-numbers/{id}/remediate:
30892
31297
  get:
31298
+ x-resource-group: "telephony"
30893
31299
  operationId: getPhoneNumberRemediation
30894
31300
  tags: [Phone Numbers]
30895
31301
  summary: Get declined requirements
@@ -30919,6 +31325,7 @@ paths:
30919
31325
  '401': { $ref: '#/components/responses/Unauthorized' }
30920
31326
  '404': { description: Number not found }
30921
31327
  post:
31328
+ x-resource-group: "telephony"
30922
31329
  operationId: remediatePhoneNumber
30923
31330
  tags: [Phone Numbers]
30924
31331
  summary: Resubmit a declined number
@@ -30963,6 +31370,7 @@ paths:
30963
31370
 
30964
31371
  /v1/phone-numbers/{id}/remediate/reply:
30965
31372
  post:
31373
+ x-resource-group: "telephony"
30966
31374
  operationId: replyToPhoneNumberReviewer
30967
31375
  tags: [Phone Numbers]
30968
31376
  summary: Reply to the regulatory reviewer
@@ -31015,6 +31423,7 @@ paths:
31015
31423
 
31016
31424
  /v1/phone-numbers/{id}/remediate/respond:
31017
31425
  post:
31426
+ x-resource-group: "telephony"
31018
31427
  operationId: respondToPhoneNumberReviewer
31019
31428
  tags: [Phone Numbers]
31020
31429
  summary: Respond to the regulatory reviewer (message + corrections)
@@ -31092,6 +31501,7 @@ paths:
31092
31501
 
31093
31502
  /v1/whatsapp/phone-numbers/kyc:
31094
31503
  get:
31504
+ x-resource-group: "telephony"
31095
31505
  operationId: getWhatsAppNumberKycForm
31096
31506
  deprecated: true
31097
31507
  tags: [WhatsApp Phone Numbers]
@@ -31164,6 +31574,7 @@ paths:
31164
31574
  '400': { description: Country not available }
31165
31575
  '401': { $ref: '#/components/responses/Unauthorized' }
31166
31576
  post:
31577
+ x-resource-group: "telephony"
31167
31578
  operationId: submitWhatsAppNumberKyc
31168
31579
  deprecated: true
31169
31580
  tags: [WhatsApp Phone Numbers]
@@ -31273,6 +31684,7 @@ paths:
31273
31684
 
31274
31685
  /v1/whatsapp/phone-numbers/kyc/upload-document:
31275
31686
  post:
31687
+ x-resource-group: "telephony"
31276
31688
  operationId: uploadWhatsAppNumberKycDocument
31277
31689
  deprecated: true
31278
31690
  tags: [WhatsApp Phone Numbers]
@@ -31310,6 +31722,7 @@ paths:
31310
31722
 
31311
31723
  /v1/whatsapp/phone-numbers/kyc/validate-address:
31312
31724
  post:
31725
+ x-resource-group: "telephony"
31313
31726
  operationId: validateWhatsAppNumberKycAddress
31314
31727
  deprecated: true
31315
31728
  tags: [WhatsApp Phone Numbers]
@@ -31383,6 +31796,7 @@ paths:
31383
31796
 
31384
31797
  /v1/whatsapp/phone-numbers/kyc/share:
31385
31798
  post:
31799
+ x-resource-group: "telephony"
31386
31800
  operationId: createWhatsAppNumberKycLink
31387
31801
  deprecated: true
31388
31802
  tags: [WhatsApp Phone Numbers]
@@ -31447,6 +31861,7 @@ paths:
31447
31861
 
31448
31862
  /v1/whatsapp/phone-numbers/{id}/remediate:
31449
31863
  get:
31864
+ x-resource-group: "telephony"
31450
31865
  operationId: getWhatsAppNumberRemediation
31451
31866
  deprecated: true
31452
31867
  tags: [WhatsApp Phone Numbers]
@@ -31480,6 +31895,7 @@ paths:
31480
31895
  '401': { $ref: '#/components/responses/Unauthorized' }
31481
31896
  '404': { description: Number not found }
31482
31897
  post:
31898
+ x-resource-group: "telephony"
31483
31899
  operationId: remediateWhatsAppNumber
31484
31900
  deprecated: true
31485
31901
  tags: [WhatsApp Phone Numbers]
@@ -31528,6 +31944,7 @@ paths:
31528
31944
 
31529
31945
  /v1/phone-numbers/{id}/voice:
31530
31946
  post:
31947
+ x-resource-group: "telephony"
31531
31948
  operationId: enableVoiceOnNumber
31532
31949
  tags: [Voice]
31533
31950
  summary: Enable phone calling on a number
@@ -31617,6 +32034,7 @@ paths:
31617
32034
  '404': { description: Number not found }
31618
32035
  '422': { description: "This number is hosted by your own carrier (brought via WhatsApp embedded signup), so calls can't be enabled on it." }
31619
32036
  delete:
32037
+ x-resource-group: "telephony"
31620
32038
  operationId: disableVoiceOnNumber
31621
32039
  tags: [Voice]
31622
32040
  summary: Disable phone calling on a number
@@ -31642,6 +32060,7 @@ paths:
31642
32060
 
31643
32061
  /v1/phone-numbers/{id}/sms:
31644
32062
  post:
32063
+ x-resource-group: "telephony"
31645
32064
  operationId: enableSmsOnNumber
31646
32065
  tags: [SMS]
31647
32066
  summary: Enable SMS on a number
@@ -31698,6 +32117,7 @@ paths:
31698
32117
  '404': { description: Number not found }
31699
32118
  '422': { description: "This number is hosted by your own carrier (brought via WhatsApp embedded signup), so SMS can't be enabled on it." }
31700
32119
  delete:
32120
+ x-resource-group: "telephony"
31701
32121
  operationId: disableSmsOnNumber
31702
32122
  tags: [SMS]
31703
32123
  summary: Disable SMS on a number
@@ -31725,6 +32145,7 @@ paths:
31725
32145
 
31726
32146
  /v1/phone-numbers/{id}/sms/reuse-registration:
31727
32147
  post:
32148
+ x-resource-group: "telephony"
31728
32149
  operationId: reuseSmsRegistrationForNumber
31729
32150
  tags: [SMS]
31730
32151
  summary: Add number to SMS registration
@@ -31754,6 +32175,7 @@ paths:
31754
32175
 
31755
32176
  /v1/phone-numbers/{id}/whatsapp/calling:
31756
32177
  get:
32178
+ x-resource-group: "telephony"
31757
32179
  operationId: getWhatsAppCalling
31758
32180
  tags: [WhatsApp Calling]
31759
32181
  summary: Get calling config for a number
@@ -31799,6 +32221,7 @@ paths:
31799
32221
  '401': { $ref: '#/components/responses/Unauthorized' }
31800
32222
  '404': { description: Number not found }
31801
32223
  post:
32224
+ x-resource-group: "telephony"
31802
32225
  operationId: enableWhatsAppCalling
31803
32226
  tags: [WhatsApp Calling]
31804
32227
  summary: Enable calling on a number
@@ -31850,6 +32273,7 @@ paths:
31850
32273
  '404': { description: Phone number not found }
31851
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." }
31852
32275
  patch:
32276
+ x-resource-group: "telephony"
31853
32277
  operationId: updateWhatsAppCalling
31854
32278
  tags: [WhatsApp Calling]
31855
32279
  summary: Update calling config
@@ -31888,6 +32312,7 @@ paths:
31888
32312
  '404': { description: Phone number not found }
31889
32313
  '422': { description: Calling must be enabled before settings can be updated }
31890
32314
  delete:
32315
+ x-resource-group: "telephony"
31891
32316
  operationId: disableWhatsAppCalling
31892
32317
  tags: [WhatsApp Calling]
31893
32318
  summary: Disable calling on a number
@@ -31908,6 +32333,7 @@ paths:
31908
32333
 
31909
32334
  /v1/phone-numbers/{id}/whatsapp/caller-id-verification:
31910
32335
  post:
32336
+ x-resource-group: "telephony"
31911
32337
  operationId: startWhatsAppCallerIdVerification
31912
32338
  tags: [WhatsApp Calling]
31913
32339
  summary: Start caller-ID verification for a customer-brought number
@@ -31948,6 +32374,7 @@ paths:
31948
32374
 
31949
32375
  /v1/phone-numbers/{id}/whatsapp/caller-id-verification/verify:
31950
32376
  post:
32377
+ x-resource-group: "telephony"
31951
32378
  operationId: verifyWhatsAppCallerId
31952
32379
  tags: [WhatsApp Calling]
31953
32380
  summary: Confirm the caller-ID verification code
@@ -31984,6 +32411,7 @@ paths:
31984
32411
 
31985
32412
  /v1/whatsapp/phone-numbers/{phoneNumberId}:
31986
32413
  get:
32414
+ x-resource-group: "telephony"
31987
32415
  operationId: getWhatsAppPhoneNumber
31988
32416
  deprecated: true
31989
32417
  tags: [WhatsApp Phone Numbers]
@@ -32033,6 +32461,7 @@ paths:
32033
32461
  '401': { $ref: '#/components/responses/Unauthorized' }
32034
32462
  '404': { $ref: '#/components/responses/NotFound' }
32035
32463
  delete:
32464
+ x-resource-group: "telephony"
32036
32465
  operationId: releaseWhatsAppPhoneNumber
32037
32466
  deprecated: true
32038
32467
  tags: [WhatsApp Phone Numbers]
@@ -32091,6 +32520,7 @@ paths:
32091
32520
 
32092
32521
  /v1/whatsapp/sandbox/sessions:
32093
32522
  get:
32523
+ x-resource-group: "messages"
32094
32524
  operationId: listWhatsAppSandboxSessions
32095
32525
  tags: [WhatsApp Sandbox]
32096
32526
  summary: List your sandbox sessions
@@ -32119,6 +32549,7 @@ paths:
32119
32549
  '401': { $ref: '#/components/responses/Unauthorized' }
32120
32550
  '403': { description: Inbox addon required }
32121
32551
  post:
32552
+ x-resource-group: "messages"
32122
32553
  operationId: createWhatsAppSandboxSession
32123
32554
  tags: [WhatsApp Sandbox]
32124
32555
  summary: Start a sandbox activation
@@ -32172,6 +32603,7 @@ paths:
32172
32603
 
32173
32604
  /v1/whatsapp/sandbox/sessions/{sessionId}:
32174
32605
  delete:
32606
+ x-resource-group: "messages"
32175
32607
  operationId: deleteWhatsAppSandboxSession
32176
32608
  tags: [WhatsApp Sandbox]
32177
32609
  summary: Revoke a sandbox session
@@ -32208,6 +32640,7 @@ paths:
32208
32640
 
32209
32641
  /v1/whatsapp/wa-groups:
32210
32642
  get:
32643
+ x-resource-group: "messages"
32211
32644
  operationId: listWhatsAppGroupChats
32212
32645
  tags: [WhatsApp]
32213
32646
  summary: List active groups
@@ -32249,6 +32682,7 @@ paths:
32249
32682
  '400': { $ref: '#/components/responses/BadRequest' }
32250
32683
  '401': { $ref: '#/components/responses/Unauthorized' }
32251
32684
  post:
32685
+ x-resource-group: "messages"
32252
32686
  operationId: createWhatsAppGroupChat
32253
32687
  tags: [WhatsApp]
32254
32688
  summary: Create group
@@ -32292,6 +32726,7 @@ paths:
32292
32726
 
32293
32727
  /v1/whatsapp/wa-groups/{groupId}:
32294
32728
  get:
32729
+ x-resource-group: "messages"
32295
32730
  operationId: getWhatsAppGroupChat
32296
32731
  tags: [WhatsApp]
32297
32732
  summary: Get group info
@@ -32335,6 +32770,7 @@ paths:
32335
32770
  '401': { $ref: '#/components/responses/Unauthorized' }
32336
32771
  '404': { $ref: '#/components/responses/NotFound' }
32337
32772
  post:
32773
+ x-resource-group: "messages"
32338
32774
  operationId: updateWhatsAppGroupChat
32339
32775
  tags: [WhatsApp]
32340
32776
  summary: Update group settings
@@ -32371,6 +32807,7 @@ paths:
32371
32807
  '401': { $ref: '#/components/responses/Unauthorized' }
32372
32808
  '404': { $ref: '#/components/responses/NotFound' }
32373
32809
  delete:
32810
+ x-resource-group: "messages"
32374
32811
  operationId: deleteWhatsAppGroupChat
32375
32812
  tags: [WhatsApp]
32376
32813
  summary: Delete group
@@ -32399,6 +32836,7 @@ paths:
32399
32836
 
32400
32837
  /v1/whatsapp/wa-groups/{groupId}/participants:
32401
32838
  post:
32839
+ x-resource-group: "messages"
32402
32840
  operationId: addWhatsAppGroupParticipants
32403
32841
  tags: [WhatsApp]
32404
32842
  summary: Add participants
@@ -32437,6 +32875,7 @@ paths:
32437
32875
  '400': { $ref: '#/components/responses/BadRequest' }
32438
32876
  '401': { $ref: '#/components/responses/Unauthorized' }
32439
32877
  delete:
32878
+ x-resource-group: "messages"
32440
32879
  operationId: removeWhatsAppGroupParticipants
32441
32880
  tags: [WhatsApp]
32442
32881
  summary: Remove participants
@@ -32476,6 +32915,7 @@ paths:
32476
32915
 
32477
32916
  /v1/whatsapp/wa-groups/{groupId}/invite-link:
32478
32917
  post:
32918
+ x-resource-group: "messages"
32479
32919
  operationId: createWhatsAppGroupInviteLink
32480
32920
  tags: [WhatsApp]
32481
32921
  summary: Create invite link
@@ -32503,6 +32943,7 @@ paths:
32503
32943
 
32504
32944
  /v1/whatsapp/wa-groups/{groupId}/join-requests:
32505
32945
  get:
32946
+ x-resource-group: "messages"
32506
32947
  operationId: listWhatsAppGroupJoinRequests
32507
32948
  tags: [WhatsApp]
32508
32949
  summary: List join requests
@@ -32534,6 +32975,7 @@ paths:
32534
32975
  '400': { $ref: '#/components/responses/BadRequest' }
32535
32976
  '401': { $ref: '#/components/responses/Unauthorized' }
32536
32977
  post:
32978
+ x-resource-group: "messages"
32537
32979
  operationId: approveWhatsAppGroupJoinRequests
32538
32980
  tags: [WhatsApp]
32539
32981
  summary: Approve join requests
@@ -32571,6 +33013,7 @@ paths:
32571
33013
  '400': { $ref: '#/components/responses/BadRequest' }
32572
33014
  '401': { $ref: '#/components/responses/Unauthorized' }
32573
33015
  delete:
33016
+ x-resource-group: "messages"
32574
33017
  operationId: rejectWhatsAppGroupJoinRequests
32575
33018
  tags: [WhatsApp]
32576
33019
  summary: Reject join requests
@@ -32612,6 +33055,7 @@ paths:
32612
33055
 
32613
33056
  /v1/whatsapp/flows:
32614
33057
  get:
33058
+ x-resource-group: "accounts"
32615
33059
  operationId: listWhatsAppFlows
32616
33060
  tags: [WhatsApp Flows]
32617
33061
  summary: List flows
@@ -32654,6 +33098,7 @@ paths:
32654
33098
  '401': { $ref: '#/components/responses/Unauthorized' }
32655
33099
  '404': { description: WhatsApp account not found }
32656
33100
  post:
33101
+ x-resource-group: "accounts"
32657
33102
  operationId: createWhatsAppFlow
32658
33103
  tags: [WhatsApp Flows]
32659
33104
  summary: Create flow
@@ -32714,6 +33159,7 @@ paths:
32714
33159
 
32715
33160
  /v1/whatsapp/flows/{flowId}:
32716
33161
  get:
33162
+ x-resource-group: "accounts"
32717
33163
  operationId: getWhatsAppFlow
32718
33164
  tags: [WhatsApp Flows]
32719
33165
  summary: Get flow
@@ -32755,6 +33201,7 @@ paths:
32755
33201
  '401': { $ref: '#/components/responses/Unauthorized' }
32756
33202
  '404': { description: Flow or account not found }
32757
33203
  patch:
33204
+ x-resource-group: "accounts"
32758
33205
  operationId: updateWhatsAppFlow
32759
33206
  tags: [WhatsApp Flows]
32760
33207
  summary: Update flow
@@ -32793,6 +33240,7 @@ paths:
32793
33240
  '401': { $ref: '#/components/responses/Unauthorized' }
32794
33241
  '404': { description: WhatsApp account or flow not found }
32795
33242
  delete:
33243
+ x-resource-group: "accounts"
32796
33244
  operationId: deleteWhatsAppFlow
32797
33245
  tags: [WhatsApp Flows]
32798
33246
  summary: Delete flow
@@ -32818,6 +33266,7 @@ paths:
32818
33266
 
32819
33267
  /v1/whatsapp/flows/{flowId}/json:
32820
33268
  get:
33269
+ x-resource-group: "accounts"
32821
33270
  operationId: getWhatsAppFlowJson
32822
33271
  tags: [WhatsApp Flows]
32823
33272
  summary: Get flow JSON asset
@@ -32848,6 +33297,7 @@ paths:
32848
33297
  '401': { $ref: '#/components/responses/Unauthorized' }
32849
33298
  '404': { description: WhatsApp account not found }
32850
33299
  put:
33300
+ x-resource-group: "accounts"
32851
33301
  operationId: uploadWhatsAppFlowJson
32852
33302
  tags: [WhatsApp Flows]
32853
33303
  summary: Upload flow JSON
@@ -32935,6 +33385,7 @@ paths:
32935
33385
 
32936
33386
  /v1/whatsapp/flows/{flowId}/preview:
32937
33387
  get:
33388
+ x-resource-group: "accounts"
32938
33389
  operationId: getWhatsAppFlowPreview
32939
33390
  tags: [WhatsApp Flows]
32940
33391
  summary: Get flow preview URL
@@ -32963,6 +33414,7 @@ paths:
32963
33414
 
32964
33415
  /v1/whatsapp/flows/{flowId}/versions:
32965
33416
  get:
33417
+ x-resource-group: "accounts"
32966
33418
  operationId: listWhatsAppFlowVersions
32967
33419
  tags: [WhatsApp Flows]
32968
33420
  summary: List flow versions
@@ -32999,6 +33451,7 @@ paths:
32999
33451
 
33000
33452
  /v1/whatsapp/flows/{flowId}/publish:
33001
33453
  post:
33454
+ x-resource-group: "accounts"
33002
33455
  operationId: publishWhatsAppFlow
33003
33456
  tags: [WhatsApp Flows]
33004
33457
  summary: Publish flow
@@ -33034,6 +33487,7 @@ paths:
33034
33487
 
33035
33488
  /v1/whatsapp/flows/{flowId}/deprecate:
33036
33489
  post:
33490
+ x-resource-group: "accounts"
33037
33491
  operationId: deprecateWhatsAppFlow
33038
33492
  tags: [WhatsApp Flows]
33039
33493
  summary: Deprecate flow
@@ -33068,6 +33522,7 @@ paths:
33068
33522
 
33069
33523
  /v1/whatsapp/flows/send:
33070
33524
  post:
33525
+ x-resource-group: "messages"
33071
33526
  operationId: sendWhatsAppFlowMessage
33072
33527
  tags: [WhatsApp Flows]
33073
33528
  summary: Send flow message
@@ -33138,6 +33593,7 @@ paths:
33138
33593
 
33139
33594
  /v1/whatsapp/flow-responses:
33140
33595
  get:
33596
+ x-resource-group: "messages"
33141
33597
  operationId: listWhatsAppFlowResponses
33142
33598
  tags: [WhatsApp Flows]
33143
33599
  summary: List flow responses
@@ -33181,6 +33637,7 @@ paths:
33181
33637
 
33182
33638
  /v1/contacts:
33183
33639
  get:
33640
+ x-resource-group: "contacts"
33184
33641
  operationId: listContacts
33185
33642
  summary: List contacts
33186
33643
  description: List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and full-text search.
@@ -33241,6 +33698,7 @@ paths:
33241
33698
  '400': { description: Invalid request }
33242
33699
  '401': { $ref: '#/components/responses/Unauthorized' }
33243
33700
  post:
33701
+ x-resource-group: "contacts"
33244
33702
  operationId: createContact
33245
33703
  summary: Create contact
33246
33704
  description: Create a new contact. Optionally create a platform channel in the same request by providing accountId, platform, and platformIdentifier.
@@ -33301,6 +33759,7 @@ paths:
33301
33759
 
33302
33760
  /v1/contacts/{contactId}:
33303
33761
  get:
33762
+ x-resource-group: "contacts"
33304
33763
  operationId: getContact
33305
33764
  summary: Get contact
33306
33765
  description: Returns a contact with all associated messaging channels.
@@ -33354,6 +33813,7 @@ paths:
33354
33813
  '401': { $ref: '#/components/responses/Unauthorized' }
33355
33814
  '404': { $ref: '#/components/responses/NotFound' }
33356
33815
  patch:
33816
+ x-resource-group: "contacts"
33357
33817
  operationId: updateContact
33358
33818
  summary: Update contact
33359
33819
  description: Update one or more fields on a contact. Only provided fields are changed.
@@ -33400,6 +33860,7 @@ paths:
33400
33860
  '401': { $ref: '#/components/responses/Unauthorized' }
33401
33861
  '404': { $ref: '#/components/responses/NotFound' }
33402
33862
  delete:
33863
+ x-resource-group: "contacts"
33403
33864
  operationId: deleteContact
33404
33865
  summary: Delete contact
33405
33866
  description: Permanently deletes a contact and all associated channels.
@@ -33414,6 +33875,7 @@ paths:
33414
33875
 
33415
33876
  /v1/contacts/{contactId}/channels:
33416
33877
  get:
33878
+ x-resource-group: "contacts"
33417
33879
  operationId: getContactChannels
33418
33880
  summary: List channels for a contact
33419
33881
  description: Returns all messaging channels linked to a contact (e.g. Instagram DM, Telegram, WhatsApp).
@@ -33449,6 +33911,7 @@ paths:
33449
33911
 
33450
33912
  /v1/contacts/bulk:
33451
33913
  post:
33914
+ x-resource-group: "contacts"
33452
33915
  operationId: bulkCreateContacts
33453
33916
  summary: Bulk create contacts
33454
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.'
@@ -33495,6 +33958,7 @@ paths:
33495
33958
 
33496
33959
  /v1/contacts/{contactId}/fields/{slug}:
33497
33960
  put:
33961
+ x-resource-group: "contacts"
33498
33962
  operationId: setContactFieldValue
33499
33963
  summary: Set custom field value
33500
33964
  description: Set or overwrite a custom field value on a contact. The value type must match the field definition.
@@ -33516,6 +33980,7 @@ paths:
33516
33980
  '401': { $ref: '#/components/responses/Unauthorized' }
33517
33981
  '404': { $ref: '#/components/responses/NotFound' }
33518
33982
  delete:
33983
+ x-resource-group: "contacts"
33519
33984
  operationId: clearContactFieldValue
33520
33985
  summary: Clear custom field value
33521
33986
  description: Remove a custom field value from a contact. The field definition is not affected.
@@ -33532,6 +33997,7 @@ paths:
33532
33997
 
33533
33998
  /v1/custom-fields:
33534
33999
  get:
34000
+ x-resource-group: "accounts"
33535
34001
  operationId: listCustomFields
33536
34002
  summary: List custom field definitions
33537
34003
  description: Returns all custom field definitions. Optionally filter by profile.
@@ -33561,6 +34027,7 @@ paths:
33561
34027
  '400': { description: Invalid profileId format }
33562
34028
  '401': { $ref: '#/components/responses/Unauthorized' }
33563
34029
  post:
34030
+ x-resource-group: "accounts"
33564
34031
  operationId: createCustomField
33565
34032
  summary: Create custom field
33566
34033
  description: Create a new custom field definition. Supported types are text, number, date, boolean, and select.
@@ -33602,6 +34069,7 @@ paths:
33602
34069
 
33603
34070
  /v1/custom-fields/{fieldId}:
33604
34071
  patch:
34072
+ x-resource-group: "accounts"
33605
34073
  operationId: updateCustomField
33606
34074
  summary: Update custom field
33607
34075
  description: Update a custom field definition. The field type cannot be changed after creation.
@@ -33638,6 +34106,7 @@ paths:
33638
34106
  '401': { $ref: '#/components/responses/Unauthorized' }
33639
34107
  '404': { $ref: '#/components/responses/NotFound' }
33640
34108
  delete:
34109
+ x-resource-group: "accounts"
33641
34110
  operationId: deleteCustomField
33642
34111
  summary: Delete custom field
33643
34112
  description: Delete a custom field definition and remove its values from all contacts.
@@ -33654,6 +34123,7 @@ paths:
33654
34123
 
33655
34124
  /v1/broadcasts:
33656
34125
  get:
34126
+ x-resource-group: "messages"
33657
34127
  operationId: listBroadcasts
33658
34128
  summary: List broadcasts
33659
34129
  description: Returns broadcasts with delivery stats. Filter by status, platform, or profile.
@@ -33705,6 +34175,7 @@ paths:
33705
34175
  '400': { description: Invalid request }
33706
34176
  '401': { $ref: '#/components/responses/Unauthorized' }
33707
34177
  post:
34178
+ x-resource-group: "messages"
33708
34179
  operationId: createBroadcast
33709
34180
  summary: Create broadcast draft
33710
34181
  description: Create a broadcast in draft status. Add recipients and then send or schedule it.
@@ -33771,6 +34242,7 @@ paths:
33771
34242
 
33772
34243
  /v1/broadcasts/{broadcastId}:
33773
34244
  get:
34245
+ x-resource-group: "messages"
33774
34246
  operationId: getBroadcast
33775
34247
  summary: Get broadcast details
33776
34248
  description: Returns a broadcast with its full configuration and delivery stats.
@@ -33811,6 +34283,7 @@ paths:
33811
34283
  '401': { $ref: '#/components/responses/Unauthorized' }
33812
34284
  '404': { $ref: '#/components/responses/NotFound' }
33813
34285
  patch:
34286
+ x-resource-group: "messages"
33814
34287
  operationId: updateBroadcast
33815
34288
  summary: Update broadcast
33816
34289
  description: Update a broadcast's name, message, template, or segment filters. Only draft broadcasts can be updated.
@@ -33867,6 +34340,7 @@ paths:
33867
34340
  '401': { $ref: '#/components/responses/Unauthorized' }
33868
34341
  '404': { $ref: '#/components/responses/NotFound' }
33869
34342
  delete:
34343
+ x-resource-group: "messages"
33870
34344
  operationId: deleteBroadcast
33871
34345
  summary: Delete broadcast
33872
34346
  description: Permanently delete a broadcast. Only drafts can be deleted.
@@ -33880,6 +34354,7 @@ paths:
33880
34354
 
33881
34355
  /v1/broadcasts/{broadcastId}/send:
33882
34356
  post:
34357
+ x-resource-group: "messages"
33883
34358
  operationId: sendBroadcast
33884
34359
  summary: Send broadcast now
33885
34360
  description: Immediately start sending a draft broadcast to its recipients.
@@ -33905,6 +34380,7 @@ paths:
33905
34380
 
33906
34381
  /v1/broadcasts/{broadcastId}/schedule:
33907
34382
  post:
34383
+ x-resource-group: "messages"
33908
34384
  operationId: scheduleBroadcast
33909
34385
  summary: Schedule broadcast for later
33910
34386
  description: Schedule a draft broadcast to be sent at a future date and time.
@@ -33941,6 +34417,7 @@ paths:
33941
34417
 
33942
34418
  /v1/broadcasts/{broadcastId}/cancel:
33943
34419
  post:
34420
+ x-resource-group: "messages"
33944
34421
  operationId: cancelBroadcast
33945
34422
  summary: Cancel broadcast
33946
34423
  description: Cancel a scheduled or in-progress broadcast. Already-sent messages are not affected.
@@ -33967,6 +34444,7 @@ paths:
33967
34444
 
33968
34445
  /v1/broadcasts/{broadcastId}/recipients:
33969
34446
  get:
34447
+ x-resource-group: "messages"
33970
34448
  operationId: listBroadcastRecipients
33971
34449
  summary: List broadcast recipients
33972
34450
  description: Returns recipients for a broadcast with individual delivery status. Filter by status.
@@ -34014,6 +34492,7 @@ paths:
34014
34492
  '401': { $ref: '#/components/responses/Unauthorized' }
34015
34493
  '404': { $ref: '#/components/responses/NotFound' }
34016
34494
  post:
34495
+ x-resource-group: "messages"
34017
34496
  operationId: addBroadcastRecipients
34018
34497
  summary: Add recipients to a broadcast
34019
34498
  description: Add recipients by contact IDs, raw phone numbers, or from the broadcast's segment filters.
@@ -34049,6 +34528,7 @@ paths:
34049
34528
 
34050
34529
  /v1/workflows:
34051
34530
  get:
34531
+ x-resource-group: "accounts"
34052
34532
  operationId: listWorkflows
34053
34533
  summary: List workflows
34054
34534
  description: Returns workflows with run stats. Filter by status or profile.
@@ -34093,6 +34573,7 @@ paths:
34093
34573
  hasMore: { type: boolean }
34094
34574
  '401': { $ref: '#/components/responses/Unauthorized' }
34095
34575
  post:
34576
+ x-resource-group: "accounts"
34096
34577
  operationId: createWorkflow
34097
34578
  summary: Create workflow
34098
34579
  description: >
@@ -34141,6 +34622,7 @@ paths:
34141
34622
 
34142
34623
  /v1/workflows/{workflowId}:
34143
34624
  get:
34625
+ x-resource-group: "accounts"
34144
34626
  operationId: getWorkflow
34145
34627
  summary: Get workflow with graph
34146
34628
  description: Returns a workflow including its full node/edge graph and run stats.
@@ -34177,6 +34659,7 @@ paths:
34177
34659
  '401': { $ref: '#/components/responses/Unauthorized' }
34178
34660
  '404': { $ref: '#/components/responses/NotFound' }
34179
34661
  patch:
34662
+ x-resource-group: "accounts"
34180
34663
  operationId: updateWorkflow
34181
34664
  summary: Update workflow
34182
34665
  description: >
@@ -34230,6 +34713,7 @@ paths:
34230
34713
  '401': { $ref: '#/components/responses/Unauthorized' }
34231
34714
  '404': { $ref: '#/components/responses/NotFound' }
34232
34715
  delete:
34716
+ x-resource-group: "accounts"
34233
34717
  operationId: deleteWorkflow
34234
34718
  summary: Delete workflow
34235
34719
  description: Permanently delete a workflow and all of its executions.
@@ -34243,6 +34727,7 @@ paths:
34243
34727
 
34244
34728
  /v1/workflows/{workflowId}/activate:
34245
34729
  post:
34730
+ x-resource-group: "accounts"
34246
34731
  operationId: activateWorkflow
34247
34732
  summary: Activate workflow
34248
34733
  description: Validate the graph is runnable and set the workflow live. Once active, matching inbound messages start executions. Idempotent.
@@ -34270,6 +34755,7 @@ paths:
34270
34755
 
34271
34756
  /v1/workflows/{workflowId}/pause:
34272
34757
  post:
34758
+ x-resource-group: "accounts"
34273
34759
  operationId: pauseWorkflow
34274
34760
  summary: Pause workflow
34275
34761
  description: Stop matching new inbound messages. In-flight executions continue to completion. Idempotent.
@@ -34296,6 +34782,7 @@ paths:
34296
34782
 
34297
34783
  /v1/workflows/{workflowId}/executions:
34298
34784
  get:
34785
+ x-resource-group: "messages"
34299
34786
  operationId: listWorkflowExecutions
34300
34787
  summary: List workflow runs
34301
34788
  description: Returns recent executions (runs) with their status, current node, and accumulated variables.
@@ -34347,6 +34834,7 @@ paths:
34347
34834
  '401': { $ref: '#/components/responses/Unauthorized' }
34348
34835
  '404': { $ref: '#/components/responses/NotFound' }
34349
34836
  post:
34837
+ x-resource-group: "messages"
34350
34838
  operationId: triggerWorkflow
34351
34839
  summary: Manually start a workflow run
34352
34840
  description: >
@@ -34391,6 +34879,7 @@ paths:
34391
34879
 
34392
34880
  /v1/workflows/{workflowId}/executions/{executionId}/events:
34393
34881
  get:
34882
+ x-resource-group: "messages"
34394
34883
  operationId: listWorkflowExecutionEvents
34395
34884
  summary: Get an execution's timeline
34396
34885
  description: >
@@ -34427,6 +34916,7 @@ paths:
34427
34916
 
34428
34917
  /v1/workflows/{workflowId}/duplicate:
34429
34918
  post:
34919
+ x-resource-group: "accounts"
34430
34920
  operationId: duplicateWorkflow
34431
34921
  summary: Duplicate a workflow
34432
34922
  description: >
@@ -34465,6 +34955,7 @@ paths:
34465
34955
 
34466
34956
  /v1/workflows/{workflowId}/versions:
34467
34957
  get:
34958
+ x-resource-group: "accounts"
34468
34959
  operationId: listWorkflowVersions
34469
34960
  summary: List a workflow's version history
34470
34961
  description: >
@@ -34502,6 +34993,7 @@ paths:
34502
34993
 
34503
34994
  /v1/workflows/{workflowId}/versions/{version}:
34504
34995
  get:
34996
+ x-resource-group: "accounts"
34505
34997
  operationId: getWorkflowVersion
34506
34998
  summary: Get a specific workflow version
34507
34999
  description: Returns the full snapshot for a single historical version, including the graph.
@@ -34540,6 +35032,7 @@ paths:
34540
35032
 
34541
35033
  /v1/workflows/{workflowId}/versions/{version}/restore:
34542
35034
  post:
35035
+ x-resource-group: "accounts"
34543
35036
  operationId: restoreWorkflowVersion
34544
35037
  summary: Restore a workflow version
34545
35038
  description: >
@@ -34577,6 +35070,7 @@ paths:
34577
35070
 
34578
35071
  /v1/sequences:
34579
35072
  get:
35073
+ x-resource-group: "messages"
34580
35074
  operationId: listSequences
34581
35075
  summary: List sequences
34582
35076
  description: Returns sequences with enrollment stats. Filter by status, platform, or profile.
@@ -34625,6 +35119,7 @@ paths:
34625
35119
  '400': { description: Invalid request }
34626
35120
  '401': { $ref: '#/components/responses/Unauthorized' }
34627
35121
  post:
35122
+ x-resource-group: "messages"
34628
35123
  operationId: createSequence
34629
35124
  summary: Create sequence
34630
35125
  description: Create a multi-step messaging sequence. Each step has a delay and a message or WhatsApp template.
@@ -34690,6 +35185,7 @@ paths:
34690
35185
 
34691
35186
  /v1/sequences/{sequenceId}:
34692
35187
  get:
35188
+ x-resource-group: "messages"
34693
35189
  operationId: getSequence
34694
35190
  summary: Get sequence with steps
34695
35191
  description: Returns a sequence with all its steps and enrollment stats.
@@ -34734,6 +35230,7 @@ paths:
34734
35230
  '401': { $ref: '#/components/responses/Unauthorized' }
34735
35231
  '404': { $ref: '#/components/responses/NotFound' }
34736
35232
  patch:
35233
+ x-resource-group: "messages"
34737
35234
  operationId: updateSequence
34738
35235
  summary: Update sequence
34739
35236
  description: Update a sequence's name, steps, or exit conditions. Steps can only be modified while the sequence is draft or paused.
@@ -34799,6 +35296,7 @@ paths:
34799
35296
  '401': { $ref: '#/components/responses/Unauthorized' }
34800
35297
  '404': { $ref: '#/components/responses/NotFound' }
34801
35298
  delete:
35299
+ x-resource-group: "messages"
34802
35300
  operationId: deleteSequence
34803
35301
  summary: Delete sequence
34804
35302
  description: Permanently delete a sequence. Active enrollments are stopped.
@@ -34813,6 +35311,7 @@ paths:
34813
35311
 
34814
35312
  /v1/sequences/{sequenceId}/activate:
34815
35313
  post:
35314
+ x-resource-group: "messages"
34816
35315
  operationId: activateSequence
34817
35316
  summary: Activate sequence
34818
35317
  description: Start a draft or paused sequence. The sequence must have at least one step.
@@ -34839,6 +35338,7 @@ paths:
34839
35338
 
34840
35339
  /v1/sequences/{sequenceId}/pause:
34841
35340
  post:
35341
+ x-resource-group: "messages"
34842
35342
  operationId: pauseSequence
34843
35343
  summary: Pause sequence
34844
35344
  description: Pause an active sequence. Enrolled contacts stop receiving messages until the sequence is reactivated.
@@ -34865,6 +35365,7 @@ paths:
34865
35365
 
34866
35366
  /v1/sequences/{sequenceId}/enroll:
34867
35367
  post:
35368
+ x-resource-group: "messages"
34868
35369
  operationId: enrollContacts
34869
35370
  summary: Enroll contacts in a sequence
34870
35371
  description: Enroll one or more contacts into a sequence. Contacts already enrolled are skipped.
@@ -34907,6 +35408,7 @@ paths:
34907
35408
 
34908
35409
  /v1/sequences/{sequenceId}/enroll/{contactId}:
34909
35410
  delete:
35411
+ x-resource-group: "messages"
34910
35412
  operationId: unenrollContact
34911
35413
  summary: Unenroll contact
34912
35414
  description: Remove a contact from a sequence. No further messages will be sent to this contact.
@@ -34922,6 +35424,7 @@ paths:
34922
35424
 
34923
35425
  /v1/sequences/{sequenceId}/enrollments:
34924
35426
  get:
35427
+ x-resource-group: "messages"
34925
35428
  operationId: listSequenceEnrollments
34926
35429
  summary: List enrollments for a sequence
34927
35430
  description: Returns enrolled contacts with their progress, status, and next scheduled step.
@@ -34974,6 +35477,7 @@ paths:
34974
35477
 
34975
35478
  /v1/comment-automations:
34976
35479
  get:
35480
+ x-resource-group: "messages"
34977
35481
  operationId: listCommentAutomations
34978
35482
  tags: [Comment Automations]
34979
35483
  summary: List comment-to-DM automations
@@ -35032,6 +35536,7 @@ paths:
35032
35536
  '400': { description: Invalid request }
35033
35537
  '401': { $ref: '#/components/responses/Unauthorized' }
35034
35538
  post:
35539
+ x-resource-group: "messages"
35035
35540
  operationId: createCommentAutomation
35036
35541
  tags: [Comment Automations]
35037
35542
  summary: Create comment-to-DM automation
@@ -35136,6 +35641,7 @@ paths:
35136
35641
 
35137
35642
  /v1/comment-automations/{automationId}:
35138
35643
  get:
35644
+ x-resource-group: "messages"
35139
35645
  operationId: getCommentAutomation
35140
35646
  tags: [Comment Automations]
35141
35647
  summary: Get automation details
@@ -35198,6 +35704,7 @@ paths:
35198
35704
  '401': { $ref: '#/components/responses/Unauthorized' }
35199
35705
  '404': { $ref: '#/components/responses/NotFound' }
35200
35706
  patch:
35707
+ x-resource-group: "messages"
35201
35708
  operationId: updateCommentAutomation
35202
35709
  tags: [Comment Automations]
35203
35710
  summary: Update automation settings
@@ -35267,6 +35774,7 @@ paths:
35267
35774
  '401': { $ref: '#/components/responses/Unauthorized' }
35268
35775
  '404': { $ref: '#/components/responses/NotFound' }
35269
35776
  delete:
35777
+ x-resource-group: "messages"
35270
35778
  operationId: deleteCommentAutomation
35271
35779
  tags: [Comment Automations]
35272
35780
  summary: Delete automation
@@ -35282,6 +35790,7 @@ paths:
35282
35790
 
35283
35791
  /v1/comment-automations/{automationId}/logs:
35284
35792
  get:
35793
+ x-resource-group: "messages"
35285
35794
  operationId: listCommentAutomationLogs
35286
35795
  tags: [Comment Automations]
35287
35796
  summary: List automation logs
@@ -35331,6 +35840,7 @@ paths:
35331
35840
 
35332
35841
  /v1/ads:
35333
35842
  get:
35843
+ x-resource-group: "ads"
35334
35844
  operationId: listAds
35335
35845
  tags: ["Ad Campaigns"]
35336
35846
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35387,6 +35897,7 @@ paths:
35387
35897
 
35388
35898
  /v1/ads/keywords:
35389
35899
  get:
35900
+ x-resource-group: "ads"
35390
35901
  operationId: listAdKeywords
35391
35902
  tags: ["Ad Campaigns"]
35392
35903
  x-platforms: ["google"]
@@ -35453,6 +35964,7 @@ paths:
35453
35964
 
35454
35965
  /v1/ads/campaigns:
35455
35966
  get:
35967
+ x-resource-group: "ads"
35456
35968
  operationId: listAdCampaigns
35457
35969
  tags: ["Ad Campaigns"]
35458
35970
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35505,6 +36017,7 @@ paths:
35505
36017
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
35506
36018
 
35507
36019
  post:
36020
+ x-resource-group: "ads"
35508
36021
  operationId: createAdCampaign
35509
36022
  tags: ["Ad Campaigns"]
35510
36023
  x-platforms: ["meta"]
@@ -35575,6 +36088,7 @@ paths:
35575
36088
 
35576
36089
  /v1/ads/campaigns/{campaignId}/status:
35577
36090
  put:
36091
+ x-resource-group: "ads"
35578
36092
  operationId: updateAdCampaignStatus
35579
36093
  tags: ["Ad Campaigns"]
35580
36094
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35616,6 +36130,7 @@ paths:
35616
36130
 
35617
36131
  /v1/ads/campaigns/{campaignId}:
35618
36132
  put:
36133
+ x-resource-group: "ads"
35619
36134
  operationId: updateAdCampaign
35620
36135
  tags: ["Ad Campaigns"]
35621
36136
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35690,6 +36205,7 @@ paths:
35690
36205
  '501': { description: Operation not supported on this platform }
35691
36206
 
35692
36207
  delete:
36208
+ x-resource-group: "ads"
35693
36209
  operationId: deleteAdCampaign
35694
36210
  tags: ["Ad Campaigns"]
35695
36211
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35739,6 +36255,7 @@ paths:
35739
36255
 
35740
36256
  /v1/ads/campaigns/bulk-status:
35741
36257
  post:
36258
+ x-resource-group: "ads"
35742
36259
  operationId: bulkUpdateAdCampaignStatus
35743
36260
  tags: ["Ad Campaigns"]
35744
36261
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -35797,6 +36314,7 @@ paths:
35797
36314
 
35798
36315
  /v1/ads/campaigns/{campaignId}/duplicate:
35799
36316
  post:
36317
+ x-resource-group: "ads"
35800
36318
  operationId: duplicateAdCampaign
35801
36319
  tags: ["Ad Campaigns"]
35802
36320
  x-platforms: ["meta", "tiktok", "linkedin"]
@@ -35893,6 +36411,7 @@ paths:
35893
36411
 
35894
36412
  /v1/ads/ad-sets/{adSetId}/duplicate:
35895
36413
  post:
36414
+ x-resource-group: "ads"
35896
36415
  operationId: duplicateAdSet
35897
36416
  tags: ["Ad Campaigns"]
35898
36417
  x-platforms: ["meta"]
@@ -35953,6 +36472,7 @@ paths:
35953
36472
 
35954
36473
  /v1/ads/{adId}/duplicate:
35955
36474
  post:
36475
+ x-resource-group: "ads"
35956
36476
  operationId: duplicateAd
35957
36477
  tags: ["Ad Campaigns"]
35958
36478
  x-platforms: ["meta"]
@@ -36007,6 +36527,7 @@ paths:
36007
36527
 
36008
36528
  /v1/ads/ad-sets/{adSetId}:
36009
36529
  get:
36530
+ x-resource-group: "ads"
36010
36531
  operationId: getAdSetDetails
36011
36532
  tags: ["Ad Campaigns"]
36012
36533
  x-platforms: ["meta"]
@@ -36036,6 +36557,7 @@ paths:
36036
36557
  '401': { $ref: '#/components/responses/Unauthorized' }
36037
36558
  '501': { description: Only supported on Meta (facebook/instagram) }
36038
36559
  put:
36560
+ x-resource-group: "ads"
36039
36561
  operationId: updateAdSet
36040
36562
  tags: ["Ad Campaigns"]
36041
36563
  x-platforms: ["meta", "tiktok", "openai"]
@@ -36184,6 +36706,7 @@ paths:
36184
36706
 
36185
36707
  /v1/ads/ad-sets/{adSetId}/status:
36186
36708
  put:
36709
+ x-resource-group: "ads"
36187
36710
  operationId: updateAdSetStatus
36188
36711
  tags: ["Ad Campaigns"]
36189
36712
  x-platforms: ["meta", "tiktok"]
@@ -36223,6 +36746,7 @@ paths:
36223
36746
 
36224
36747
  /v1/ads/tree:
36225
36748
  get:
36749
+ x-resource-group: "ads"
36226
36750
  operationId: getAdTree
36227
36751
  tags: ["Ad Campaigns"]
36228
36752
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36286,6 +36810,7 @@ paths:
36286
36810
 
36287
36811
  /v1/ads/timeline:
36288
36812
  get:
36813
+ x-resource-group: "ads"
36289
36814
  operationId: getAdsTimeline
36290
36815
  tags: ["Ad Campaigns"]
36291
36816
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36358,6 +36883,7 @@ paths:
36358
36883
 
36359
36884
  /v1/ads/{adId}:
36360
36885
  get:
36886
+ x-resource-group: "ads"
36361
36887
  operationId: getAd
36362
36888
  tags: ["Ad Campaigns"]
36363
36889
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36393,6 +36919,7 @@ paths:
36393
36919
  '401': { $ref: '#/components/responses/Unauthorized' }
36394
36920
  '404': { $ref: '#/components/responses/NotFound' }
36395
36921
  put:
36922
+ x-resource-group: "ads"
36396
36923
  operationId: updateAd
36397
36924
  tags: ["Ad Campaigns"]
36398
36925
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36478,6 +37005,7 @@ paths:
36478
37005
  '404': { $ref: '#/components/responses/NotFound' }
36479
37006
  '501': { description: "targeting or creative not supported on the platform (Meta + TikTok only)" }
36480
37007
  delete:
37008
+ x-resource-group: "ads"
36481
37009
  operationId: deleteAd
36482
37010
  tags: ["Ad Campaigns"]
36483
37011
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36501,6 +37029,7 @@ paths:
36501
37029
 
36502
37030
  /v1/ads/{adId}/status:
36503
37031
  put:
37032
+ x-resource-group: "ads"
36504
37033
  operationId: updateAdStatus
36505
37034
  tags: ["Ad Campaigns"]
36506
37035
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36546,6 +37075,7 @@ paths:
36546
37075
 
36547
37076
  /v1/ads/campaigns/{campaignId}/analytics:
36548
37077
  get:
37078
+ x-resource-group: "ads"
36549
37079
  operationId: getCampaignAnalytics
36550
37080
  tags: ["Ad Insights"]
36551
37081
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -36630,6 +37160,7 @@ paths:
36630
37160
 
36631
37161
  /v1/ads/preview:
36632
37162
  post:
37163
+ x-resource-group: "ads"
36633
37164
  operationId: generateAdPreviews
36634
37165
  tags: ["Ad Creatives"]
36635
37166
  x-platforms: ["meta"]
@@ -36684,6 +37215,7 @@ paths:
36684
37215
 
36685
37216
  /v1/ads/{adId}/preview:
36686
37217
  get:
37218
+ x-resource-group: "ads"
36687
37219
  operationId: getAdPreviews
36688
37220
  tags: ["Ad Creatives"]
36689
37221
  x-platforms: ["meta"]
@@ -36720,6 +37252,7 @@ paths:
36720
37252
 
36721
37253
  /v1/ads/keywords/ideas:
36722
37254
  post:
37255
+ x-resource-group: "ads"
36723
37256
  operationId: generateKeywordIdeas
36724
37257
  tags: ["Ad Insights"]
36725
37258
  x-platforms: ["google"]
@@ -36773,6 +37306,7 @@ paths:
36773
37306
 
36774
37307
  /v1/ads/keywords/historical-metrics:
36775
37308
  post:
37309
+ x-resource-group: "ads"
36776
37310
  operationId: generateKeywordHistoricalMetrics
36777
37311
  tags: ["Ad Insights"]
36778
37312
  x-platforms: ["google"]
@@ -36820,6 +37354,7 @@ paths:
36820
37354
 
36821
37355
  /v1/ads/insights:
36822
37356
  get:
37357
+ x-resource-group: "ads"
36823
37358
  operationId: queryAdInsights
36824
37359
  tags: ["Ad Insights"]
36825
37360
  x-platforms: ["meta", "google"]
@@ -36888,6 +37423,7 @@ paths:
36888
37423
 
36889
37424
  /v1/ads/insights/reports:
36890
37425
  post:
37426
+ x-resource-group: "ads"
36891
37427
  operationId: createAdInsightsReport
36892
37428
  tags: ["Ad Insights"]
36893
37429
  x-platforms: ["meta"]
@@ -36951,6 +37487,7 @@ paths:
36951
37487
 
36952
37488
  /v1/ads/insights/reports/{reportRunId}:
36953
37489
  get:
37490
+ x-resource-group: "ads"
36954
37491
  operationId: getAdInsightsReport
36955
37492
  tags: ["Ad Insights"]
36956
37493
  x-platforms: ["meta"]
@@ -36994,6 +37531,7 @@ paths:
36994
37531
 
36995
37532
  /v1/ads/{adId}/analytics:
36996
37533
  get:
37534
+ x-resource-group: "ads"
36997
37535
  operationId: getAdAnalytics
36998
37536
  tags: ["Ad Insights"]
36999
37537
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -37075,6 +37613,7 @@ paths:
37075
37613
 
37076
37614
  /v1/ads/{adId}/tracking-tags:
37077
37615
  get:
37616
+ x-resource-group: "ads"
37078
37617
  operationId: getAdTrackingTags
37079
37618
  tags: ["Tracking Tags"]
37080
37619
  x-platforms: ["meta"]
@@ -37115,6 +37654,7 @@ paths:
37115
37654
  '404': { description: "Ad not found" }
37116
37655
  '405': { description: "Platform has no click-URL tracking surface" }
37117
37656
  patch:
37657
+ x-resource-group: "ads"
37118
37658
  operationId: updateAdTrackingTags
37119
37659
  tags: ["Tracking Tags"]
37120
37660
  x-platforms: ["meta"]
@@ -37173,6 +37713,7 @@ paths:
37173
37713
  '422': { description: "Meta creative cannot be rebuilt (e.g. placement-customized/asset-feed/dark creative)" }
37174
37714
  /v1/ads/{adId}/comments:
37175
37715
  get:
37716
+ x-resource-group: "engagement"
37176
37717
  operationId: getAdComments
37177
37718
  tags: ["Ad Accounts"]
37178
37719
  x-platforms: ["meta"]
@@ -37272,6 +37813,7 @@ paths:
37272
37813
 
37273
37814
  /v1/ads/business-centers:
37274
37815
  get:
37816
+ x-resource-group: "ads"
37275
37817
  operationId: listAdsBusinessCenters
37276
37818
  tags: ["Ad Accounts"]
37277
37819
  x-platforms: ["tiktok"]
@@ -37304,6 +37846,7 @@ paths:
37304
37846
 
37305
37847
  /v1/ads/activity:
37306
37848
  get:
37849
+ x-resource-group: "ads"
37307
37850
  operationId: getAdsActivityLog
37308
37851
  tags: ["Ad Accounts"]
37309
37852
  x-platforms: ["meta"]
@@ -37346,6 +37889,7 @@ paths:
37346
37889
 
37347
37890
  /v1/ads/rf-predictions:
37348
37891
  post:
37892
+ x-resource-group: "ads"
37349
37893
  operationId: createRfPrediction
37350
37894
  tags: ["Reach and Frequency"]
37351
37895
  x-platforms: ["meta"]
@@ -37399,6 +37943,7 @@ paths:
37399
37943
 
37400
37944
  /v1/ads/rf-predictions/{predictionId}:
37401
37945
  get:
37946
+ x-resource-group: "ads"
37402
37947
  operationId: getRfPrediction
37403
37948
  tags: ["Reach and Frequency"]
37404
37949
  x-platforms: ["meta"]
@@ -37424,6 +37969,7 @@ paths:
37424
37969
  '401': { $ref: '#/components/responses/Unauthorized' }
37425
37970
  '501': { description: Only supported on Meta (facebook/instagram) }
37426
37971
  delete:
37972
+ x-resource-group: "ads"
37427
37973
  operationId: cancelRfReservation
37428
37974
  tags: ["Reach and Frequency"]
37429
37975
  x-platforms: ["meta"]
@@ -37444,6 +37990,7 @@ paths:
37444
37990
 
37445
37991
  /v1/ads/rf-predictions/{predictionId}/reserve:
37446
37992
  post:
37993
+ x-resource-group: "ads"
37447
37994
  operationId: reserveRfPrediction
37448
37995
  tags: ["Reach and Frequency"]
37449
37996
  x-platforms: ["meta"]
@@ -37482,6 +38029,7 @@ paths:
37482
38029
 
37483
38030
  /v1/ads/studies:
37484
38031
  get:
38032
+ x-resource-group: "ads"
37485
38033
  operationId: listAdStudies
37486
38034
  tags: ["Ad Accounts"]
37487
38035
  x-platforms: ["meta"]
@@ -37520,6 +38068,7 @@ paths:
37520
38068
 
37521
38069
  /v1/ads/businesses:
37522
38070
  get:
38071
+ x-resource-group: "ads"
37523
38072
  operationId: listMetaBusinesses
37524
38073
  tags: ["Ad Accounts"]
37525
38074
  x-platforms: ["meta"]
@@ -37556,6 +38105,7 @@ paths:
37556
38105
 
37557
38106
  /v1/ads/labels:
37558
38107
  get:
38108
+ x-resource-group: "ads"
37559
38109
  operationId: listAdLabels
37560
38110
  tags: ["Ad Accounts"]
37561
38111
  x-platforms: ["meta"]
@@ -37592,6 +38142,7 @@ paths:
37592
38142
 
37593
38143
  /v1/ads/high-demand-periods:
37594
38144
  get:
38145
+ x-resource-group: "ads"
37595
38146
  operationId: listHighDemandPeriods
37596
38147
  tags: ["Ad Accounts"]
37597
38148
  x-platforms: ["meta"]
@@ -37631,6 +38182,7 @@ paths:
37631
38182
 
37632
38183
  /v1/ads/creatives:
37633
38184
  get:
38185
+ x-resource-group: "ads"
37634
38186
  operationId: listAdCreatives
37635
38187
  tags: ["Ad Creatives"]
37636
38188
  x-platforms: ["meta"]
@@ -37669,6 +38221,7 @@ paths:
37669
38221
  '401': { $ref: '#/components/responses/Unauthorized' }
37670
38222
  '501': { description: Only supported on Meta (facebook/instagram) }
37671
38223
  post:
38224
+ x-resource-group: "ads"
37672
38225
  operationId: createAdCreative
37673
38226
  tags: ["Ad Creatives"]
37674
38227
  x-platforms: ["meta"]
@@ -37733,6 +38286,7 @@ paths:
37733
38286
 
37734
38287
  /v1/ads/creatives/{creativeId}:
37735
38288
  get:
38289
+ x-resource-group: "ads"
37736
38290
  operationId: getAdCreative
37737
38291
  tags: ["Ad Creatives"]
37738
38292
  x-platforms: ["meta"]
@@ -37759,6 +38313,7 @@ paths:
37759
38313
  '401': { $ref: '#/components/responses/Unauthorized' }
37760
38314
  '501': { description: Only supported on Meta (facebook/instagram) }
37761
38315
  put:
38316
+ x-resource-group: "ads"
37762
38317
  operationId: updateAdCreative
37763
38318
  tags: ["Ad Creatives"]
37764
38319
  x-platforms: ["meta"]
@@ -37796,6 +38351,7 @@ paths:
37796
38351
  '401': { $ref: '#/components/responses/Unauthorized' }
37797
38352
  '501': { description: Only supported on Meta (facebook/instagram) }
37798
38353
  delete:
38354
+ x-resource-group: "ads"
37799
38355
  operationId: deleteAdCreative
37800
38356
  tags: ["Ad Creatives"]
37801
38357
  x-platforms: ["meta"]
@@ -37824,6 +38380,7 @@ paths:
37824
38380
 
37825
38381
  /v1/ads/value-rule-sets:
37826
38382
  get:
38383
+ x-resource-group: "ads"
37827
38384
  operationId: listValueRuleSets
37828
38385
  tags: ["Ad Accounts"]
37829
38386
  x-platforms: ["meta"]
@@ -37874,6 +38431,7 @@ paths:
37874
38431
  '501': { description: Only supported on Meta (facebook/instagram) }
37875
38432
 
37876
38433
  post:
38434
+ x-resource-group: "ads"
37877
38435
  operationId: createValueRuleSet
37878
38436
  tags: ["Ad Accounts"]
37879
38437
  x-platforms: ["meta"]
@@ -37944,6 +38502,7 @@ paths:
37944
38502
 
37945
38503
  /v1/ads/value-rule-sets/{valueRuleSetId}:
37946
38504
  get:
38505
+ x-resource-group: "ads"
37947
38506
  operationId: getValueRuleSet
37948
38507
  tags: ["Ad Accounts"]
37949
38508
  x-platforms: ["meta"]
@@ -37975,6 +38534,7 @@ paths:
37975
38534
  '501': { description: Only supported on Meta (facebook/instagram) }
37976
38535
 
37977
38536
  put:
38537
+ x-resource-group: "ads"
37978
38538
  operationId: updateValueRuleSet
37979
38539
  tags: ["Ad Accounts"]
37980
38540
  x-platforms: ["meta"]
@@ -38035,6 +38595,7 @@ paths:
38035
38595
  '501': { description: Only supported on Meta (facebook/instagram) }
38036
38596
 
38037
38597
  delete:
38598
+ x-resource-group: "ads"
38038
38599
  operationId: deleteValueRuleSet
38039
38600
  tags: ["Ad Accounts"]
38040
38601
  x-platforms: ["meta"]
@@ -38065,6 +38626,7 @@ paths:
38065
38626
 
38066
38627
  /v1/ads/accounts/finance:
38067
38628
  get:
38629
+ x-resource-group: "ads"
38068
38630
  operationId: getAdAccountFinance
38069
38631
  tags: ["Ad Accounts"]
38070
38632
  x-platforms: ["meta"]
@@ -38102,6 +38664,7 @@ paths:
38102
38664
 
38103
38665
  /v1/ads/accounts:
38104
38666
  get:
38667
+ x-resource-group: "ads"
38105
38668
  operationId: listAdAccounts
38106
38669
  tags: ["Ad Accounts"]
38107
38670
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -38176,6 +38739,7 @@ paths:
38176
38739
  description: Platform ads connection required (TikTok Ads, X Ads) or Instagram missing linked Facebook account
38177
38740
  '429': { $ref: '#/components/responses/RateLimited' }
38178
38741
  patch:
38742
+ x-resource-group: "ads"
38179
38743
  operationId: updateAdAccount
38180
38744
  tags: ["Ad Accounts"]
38181
38745
  x-platforms: ["meta"]
@@ -38233,6 +38797,7 @@ paths:
38233
38797
 
38234
38798
  /v1/ads/dsa-defaults:
38235
38799
  get:
38800
+ x-resource-group: "ads"
38236
38801
  operationId: getDsaDefaults
38237
38802
  tags: ["Ad Accounts"]
38238
38803
  x-platforms: ["meta"]
@@ -38268,6 +38833,7 @@ paths:
38268
38833
 
38269
38834
  /v1/ads/dsa-recommendations:
38270
38835
  get:
38836
+ x-resource-group: "ads"
38271
38837
  operationId: getDsaRecommendations
38272
38838
  tags: ["Ad Accounts"]
38273
38839
  x-platforms: ["meta"]
@@ -38306,6 +38872,7 @@ paths:
38306
38872
 
38307
38873
  /v1/ads/boost:
38308
38874
  post:
38875
+ x-resource-group: "ads"
38309
38876
  operationId: boostPost
38310
38877
  tags: ["Ad Campaigns"]
38311
38878
  x-platforms: ["meta"]
@@ -38561,6 +39128,7 @@ paths:
38561
39128
 
38562
39129
  /v1/ads/create:
38563
39130
  post:
39131
+ x-resource-group: "ads"
38564
39132
  operationId: createStandaloneAd
38565
39133
  tags: ["Ad Campaigns"]
38566
39134
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -39444,6 +40012,7 @@ paths:
39444
40012
 
39445
40013
  /v1/ads/leads:
39446
40014
  get:
40015
+ x-resource-group: "contacts"
39447
40016
  operationId: listLeads
39448
40017
  tags: ["Lead Gen"]
39449
40018
  x-platforms: ["meta", "linkedin"]
@@ -39502,6 +40071,7 @@ paths:
39502
40071
 
39503
40072
  /v1/ads/lead-forms:
39504
40073
  get:
40074
+ x-resource-group: "ads"
39505
40075
  operationId: listLeadForms
39506
40076
  tags: ["Lead Gen"]
39507
40077
  x-platforms: ["meta", "linkedin"]
@@ -39531,6 +40101,7 @@ paths:
39531
40101
  '401': { $ref: '#/components/responses/Unauthorized' }
39532
40102
  '403': { description: Ads add-on required. }
39533
40103
  post:
40104
+ x-resource-group: "ads"
39534
40105
  operationId: createLeadForm
39535
40106
  tags: ["Lead Gen"]
39536
40107
  x-platforms: ["meta", "linkedin"]
@@ -39687,6 +40258,7 @@ paths:
39687
40258
 
39688
40259
  /v1/ads/lead-forms/{formId}:
39689
40260
  get:
40261
+ x-resource-group: "ads"
39690
40262
  operationId: getLeadForm
39691
40263
  tags: ["Lead Gen"]
39692
40264
  x-platforms: ["meta", "linkedin"]
@@ -39703,6 +40275,7 @@ paths:
39703
40275
  '400': { $ref: '#/components/responses/BadRequest' }
39704
40276
  '401': { $ref: '#/components/responses/Unauthorized' }
39705
40277
  delete:
40278
+ x-resource-group: "ads"
39706
40279
  operationId: archiveLeadForm
39707
40280
  tags: ["Lead Gen"]
39708
40281
  x-platforms: ["meta", "linkedin"]
@@ -39722,6 +40295,7 @@ paths:
39722
40295
 
39723
40296
  /v1/ads/lead-forms/{formId}/leads:
39724
40297
  get:
40298
+ x-resource-group: "contacts"
39725
40299
  operationId: listFormLeads
39726
40300
  tags: ["Lead Gen"]
39727
40301
  x-platforms: ["meta"]
@@ -39761,6 +40335,7 @@ paths:
39761
40335
 
39762
40336
  /v1/ads/lead-forms/{formId}/test-leads:
39763
40337
  post:
40338
+ x-resource-group: "contacts"
39764
40339
  operationId: createTestLead
39765
40340
  tags: ["Lead Gen"]
39766
40341
  x-platforms: ["meta"]
@@ -39800,6 +40375,7 @@ paths:
39800
40375
 
39801
40376
  /v1/ads/images:
39802
40377
  post:
40378
+ x-resource-group: "ads"
39803
40379
  operationId: uploadAdImage
39804
40380
  tags: ["Ad Creatives"]
39805
40381
  x-platforms: ["meta"]
@@ -39842,6 +40418,7 @@ paths:
39842
40418
  '501': { description: Only supported on Meta (facebook/instagram) }
39843
40419
 
39844
40420
  get:
40421
+ x-resource-group: "ads"
39845
40422
  operationId: listAdImages
39846
40423
  tags: ["Ad Creatives"]
39847
40424
  x-platforms: ["meta"]
@@ -39881,6 +40458,7 @@ paths:
39881
40458
 
39882
40459
  /v1/ads/interests:
39883
40460
  get:
40461
+ x-resource-group: "ads"
39884
40462
  operationId: searchAdInterests
39885
40463
  deprecated: true
39886
40464
  tags: ["Ad Targeting"]
@@ -39918,6 +40496,7 @@ paths:
39918
40496
 
39919
40497
  /v1/ads/targeting/search:
39920
40498
  get:
40499
+ x-resource-group: "ads"
39921
40500
  operationId: searchAdTargeting
39922
40501
  tags: ["Ad Targeting"]
39923
40502
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest"]
@@ -39980,6 +40559,7 @@ paths:
39980
40559
 
39981
40560
  /v1/ads/targeting/reach-estimate:
39982
40561
  post:
40562
+ x-resource-group: "ads"
39983
40563
  operationId: estimateAdReach
39984
40564
  tags: ["Ad Targeting"]
39985
40565
  x-platforms: ["meta"]
@@ -40038,6 +40618,7 @@ paths:
40038
40618
 
40039
40619
  /v1/ads/targeting/bid-pricing:
40040
40620
  post:
40621
+ x-resource-group: "ads"
40041
40622
  operationId: getLinkedInBidPricing
40042
40623
  tags: ["Ad Targeting"]
40043
40624
  x-platforms: ["linkedin"]
@@ -40109,6 +40690,7 @@ paths:
40109
40690
 
40110
40691
  /v1/ads/targeting/supply-forecast:
40111
40692
  post:
40693
+ x-resource-group: "ads"
40112
40694
  operationId: getLinkedInSupplyForecast
40113
40695
  tags: ["Ad Targeting"]
40114
40696
  x-platforms: ["linkedin"]
@@ -40192,6 +40774,7 @@ paths:
40192
40774
 
40193
40775
  /v1/ads/catalogs:
40194
40776
  get:
40777
+ x-resource-group: "ads"
40195
40778
  operationId: listAdCatalogs
40196
40779
  tags: ["Ad Creatives"]
40197
40780
  x-platforms: ["meta"]
@@ -40225,6 +40808,7 @@ paths:
40225
40808
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
40226
40809
  /v1/ads/catalogs/{catalogId}/product-sets:
40227
40810
  get:
40811
+ x-resource-group: "ads"
40228
40812
  operationId: listAdCatalogProductSets
40229
40813
  tags: ["Ad Creatives"]
40230
40814
  x-platforms: ["meta"]
@@ -40257,6 +40841,7 @@ paths:
40257
40841
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
40258
40842
  /v1/ads/audiences:
40259
40843
  get:
40844
+ x-resource-group: "ads"
40260
40845
  operationId: listAdAudiences
40261
40846
  tags: ["Ad Audiences"]
40262
40847
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40300,6 +40885,7 @@ paths:
40300
40885
  '403':
40301
40886
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
40302
40887
  post:
40888
+ x-resource-group: "ads"
40303
40889
  operationId: createAdAudience
40304
40890
  tags: ["Ad Audiences"]
40305
40891
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40451,6 +41037,7 @@ paths:
40451
41037
 
40452
41038
  /v1/ads/audiences/{audienceId}:
40453
41039
  get:
41040
+ x-resource-group: "ads"
40454
41041
  operationId: getAdAudience
40455
41042
  tags: ["Ad Audiences"]
40456
41043
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40475,6 +41062,7 @@ paths:
40475
41062
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
40476
41063
  '404': { $ref: '#/components/responses/NotFound' }
40477
41064
  put:
41065
+ x-resource-group: "ads"
40478
41066
  operationId: updateAdAudience
40479
41067
  tags: ["Ad Audiences"]
40480
41068
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40525,6 +41113,7 @@ paths:
40525
41113
  '501':
40526
41114
  description: Platform audience updates are only supported on Meta
40527
41115
  delete:
41116
+ x-resource-group: "ads"
40528
41117
  operationId: deleteAdAudience
40529
41118
  tags: ["Ad Audiences"]
40530
41119
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40550,6 +41139,7 @@ paths:
40550
41139
 
40551
41140
  /v1/ads/audiences/{audienceId}/users:
40552
41141
  post:
41142
+ x-resource-group: "ads"
40553
41143
  operationId: addUsersToAdAudience
40554
41144
  tags: ["Ad Audiences"]
40555
41145
  x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
@@ -40601,6 +41191,7 @@ paths:
40601
41191
 
40602
41192
  /v1/ads/conversions/quality:
40603
41193
  get:
41194
+ x-resource-group: "ads"
40604
41195
  operationId: getConversionsQuality
40605
41196
  tags: [Conversions]
40606
41197
  x-platforms: ["meta"]
@@ -40643,6 +41234,7 @@ paths:
40643
41234
  '405': { description: "Platform does not expose Event Match Quality (non-Meta)." }
40644
41235
  /v1/ads/conversions:
40645
41236
  post:
41237
+ x-resource-group: "ads"
40646
41238
  operationId: sendConversions
40647
41239
  tags: [Conversions]
40648
41240
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -40793,6 +41385,7 @@ paths:
40793
41385
 
40794
41386
  /v1/ads/conversions/adjustments:
40795
41387
  post:
41388
+ x-resource-group: "ads"
40796
41389
  operationId: adjustConversions
40797
41390
  tags: [Conversions]
40798
41391
  x-platforms: ["meta"]
@@ -40914,6 +41507,7 @@ paths:
40914
41507
 
40915
41508
  /v1/accounts/{accountId}/conversion-destinations:
40916
41509
  get:
41510
+ x-resource-group: "ads"
40917
41511
  operationId: listConversionDestinations
40918
41512
  tags: [Conversions]
40919
41513
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -40989,6 +41583,7 @@ paths:
40989
41583
  description: LinkedIn rate limit hit. Retry with backoff.
40990
41584
 
40991
41585
  post:
41586
+ x-resource-group: "ads"
40992
41587
  operationId: createConversionDestination
40993
41588
  tags: [Conversions]
40994
41589
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41159,6 +41754,7 @@ paths:
41159
41754
 
41160
41755
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}:
41161
41756
  get:
41757
+ x-resource-group: "ads"
41162
41758
  operationId: getConversionDestination
41163
41759
  tags: [Conversions]
41164
41760
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41195,6 +41791,7 @@ paths:
41195
41791
  '429': { description: LinkedIn rate limit hit. Retry with backoff. }
41196
41792
 
41197
41793
  patch:
41794
+ x-resource-group: "ads"
41198
41795
  operationId: updateConversionDestination
41199
41796
  tags: [Conversions]
41200
41797
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41270,6 +41867,7 @@ paths:
41270
41867
  '429': { description: LinkedIn rate limit hit. Retry with backoff. }
41271
41868
 
41272
41869
  delete:
41870
+ x-resource-group: "ads"
41273
41871
  operationId: deleteConversionDestination
41274
41872
  tags: [Conversions]
41275
41873
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41303,6 +41901,7 @@ paths:
41303
41901
 
41304
41902
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}/associations:
41305
41903
  get:
41904
+ x-resource-group: "ads"
41306
41905
  operationId: listConversionAssociations
41307
41906
  tags: [Conversions]
41308
41907
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41346,6 +41945,7 @@ paths:
41346
41945
  '429': { description: LinkedIn rate limit hit. Retry with backoff. }
41347
41946
 
41348
41947
  post:
41948
+ x-resource-group: "ads"
41349
41949
  operationId: addConversionAssociations
41350
41950
  tags: [Conversions]
41351
41951
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41407,6 +42007,7 @@ paths:
41407
42007
  '429': { description: LinkedIn rate limit hit. Retry with backoff. }
41408
42008
 
41409
42009
  delete:
42010
+ x-resource-group: "ads"
41410
42011
  operationId: removeConversionAssociations
41411
42012
  tags: [Conversions]
41412
42013
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41461,6 +42062,7 @@ paths:
41461
42062
 
41462
42063
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}/metrics:
41463
42064
  get:
42065
+ x-resource-group: "ads"
41464
42066
  operationId: getConversionMetrics
41465
42067
  tags: [Conversions]
41466
42068
  x-platforms: ["meta", "google", "tiktok", "linkedin"]
@@ -41522,6 +42124,7 @@ paths:
41522
42124
 
41523
42125
  /v1/whatsapp/conversions:
41524
42126
  get:
42127
+ x-resource-group: "ads"
41525
42128
  operationId: listWhatsAppConversions
41526
42129
  tags: [WhatsApp]
41527
42130
  summary: List conversion events
@@ -41586,6 +42189,7 @@ paths:
41586
42189
  '401': { $ref: '#/components/responses/Unauthorized' }
41587
42190
  '404': { description: WhatsApp account not found }
41588
42191
  post:
42192
+ x-resource-group: "ads"
41589
42193
  operationId: sendWhatsAppConversion
41590
42194
  tags: [WhatsApp]
41591
42195
  summary: Send WhatsApp conversion event
@@ -41762,6 +42366,7 @@ paths:
41762
42366
 
41763
42367
  /v1/ads/messaging:
41764
42368
  post:
42369
+ x-resource-group: "ads"
41765
42370
  operationId: createMessagingAd
41766
42371
  tags: ["Messaging Ads"]
41767
42372
  x-platforms: ["meta"]
@@ -41799,6 +42404,7 @@ paths:
41799
42404
 
41800
42405
  /v1/ads/call:
41801
42406
  post:
42407
+ x-resource-group: "ads"
41802
42408
  operationId: createCallAd
41803
42409
  tags: ["Messaging Ads"]
41804
42410
  x-platforms: ["meta"]
@@ -41837,6 +42443,7 @@ paths:
41837
42443
 
41838
42444
  /v1/ads/ctwa:
41839
42445
  post:
42446
+ x-resource-group: "ads"
41840
42447
  operationId: createCtwaAd
41841
42448
  tags: ["Messaging Ads"]
41842
42449
  x-platforms: ["meta"]
@@ -41901,6 +42508,7 @@ paths:
41901
42508
 
41902
42509
  /v1/accounts/{accountId}/tracking-tags:
41903
42510
  get:
42511
+ x-resource-group: "ads"
41904
42512
  operationId: listTrackingTags
41905
42513
  tags: ["Tracking Tags"]
41906
42514
  x-platforms: ["meta"]
@@ -41944,6 +42552,7 @@ paths:
41944
42552
  '405': { description: Platform does not support listing tracking tags. }
41945
42553
 
41946
42554
  post:
42555
+ x-resource-group: "ads"
41947
42556
  operationId: createTrackingTag
41948
42557
  tags: ["Tracking Tags"]
41949
42558
  x-platforms: ["meta"]
@@ -42009,6 +42618,7 @@ paths:
42009
42618
 
42010
42619
  /v1/accounts/{accountId}/tracking-tags/{tagId}:
42011
42620
  get:
42621
+ x-resource-group: "ads"
42012
42622
  operationId: getTrackingTag
42013
42623
  tags: ["Tracking Tags"]
42014
42624
  x-platforms: ["meta"]
@@ -42040,6 +42650,7 @@ paths:
42040
42650
  '405': { description: Platform does not support fetching a tracking tag. }
42041
42651
 
42042
42652
  patch:
42653
+ x-resource-group: "ads"
42043
42654
  operationId: updateTrackingTag
42044
42655
  tags: ["Tracking Tags"]
42045
42656
  x-platforms: ["meta"]
@@ -42106,6 +42717,7 @@ paths:
42106
42717
 
42107
42718
  /v1/accounts/{accountId}/tracking-tags/{tagId}/shared-accounts:
42108
42719
  get:
42720
+ x-resource-group: "ads"
42109
42721
  operationId: listTrackingTagSharedAccounts
42110
42722
  tags: ["Tracking Tags"]
42111
42723
  x-platforms: ["meta"]
@@ -42134,6 +42746,7 @@ paths:
42134
42746
  '405': { description: Platform does not support shared accounts. }
42135
42747
 
42136
42748
  post:
42749
+ x-resource-group: "ads"
42137
42750
  operationId: addTrackingTagSharedAccount
42138
42751
  tags: ["Tracking Tags"]
42139
42752
  x-platforms: ["meta"]
@@ -42175,6 +42788,7 @@ paths:
42175
42788
  '405': { description: Platform does not support shared accounts. }
42176
42789
 
42177
42790
  delete:
42791
+ x-resource-group: "ads"
42178
42792
  operationId: removeTrackingTagSharedAccount
42179
42793
  tags: ["Tracking Tags"]
42180
42794
  x-platforms: ["meta"]
@@ -42199,6 +42813,7 @@ paths:
42199
42813
 
42200
42814
  /v1/accounts/{accountId}/tracking-tags/{tagId}/stats:
42201
42815
  get:
42816
+ x-resource-group: "ads"
42202
42817
  operationId: getTrackingTagStats
42203
42818
  tags: ["Tracking Tags"]
42204
42819
  x-platforms: ["meta"]
@@ -42265,6 +42880,7 @@ paths:
42265
42880
 
42266
42881
  /v1/verify/verifications:
42267
42882
  post:
42883
+ x-resource-group: "telephony"
42268
42884
  operationId: createVerification
42269
42885
  tags: [Verify]
42270
42886
  summary: Send a verification code
@@ -42322,6 +42938,7 @@ paths:
42322
42938
 
42323
42939
  /v1/verify/verifications/{verificationId}:
42324
42940
  get:
42941
+ x-resource-group: "telephony"
42325
42942
  operationId: getVerification
42326
42943
  tags: [Verify]
42327
42944
  summary: Get a verification
@@ -42346,6 +42963,7 @@ paths:
42346
42963
 
42347
42964
  /v1/verify/verifications/{verificationId}/check:
42348
42965
  post:
42966
+ x-resource-group: "telephony"
42349
42967
  operationId: checkVerification
42350
42968
  tags: [Verify]
42351
42969
  summary: Check a verification code