late-sdk 0.0.110 → 0.0.112
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.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/docs/AnalyticsApi.md +154 -0
- data/docs/CreateInboxConversation201Response.md +20 -0
- data/docs/CreateInboxConversation201ResponseData.md +26 -0
- data/docs/CreateInboxConversation400Response.md +20 -0
- data/docs/CreateInboxConversation422Response.md +20 -0
- data/docs/CreateInboxConversationRequest.md +26 -0
- data/docs/CreatePostRequest.md +2 -0
- data/docs/EditPost200Response.md +24 -0
- data/docs/EditPostRequest.md +20 -0
- data/docs/FacebookPlatformData.md +3 -1
- data/docs/GetGoogleBusinessPerformance200Response.md +28 -0
- data/docs/GetGoogleBusinessPerformance200ResponseDateRange.md +20 -0
- data/docs/GetGoogleBusinessPerformance200ResponseMetricsValue.md +20 -0
- data/docs/GetGoogleBusinessPerformance200ResponseMetricsValueValuesInner.md +20 -0
- data/docs/GetGoogleBusinessPerformance400Response.md +20 -0
- data/docs/GetGoogleBusinessSearchKeywords200Response.md +28 -0
- data/docs/GetGoogleBusinessSearchKeywords200ResponseKeywordsInner.md +20 -0
- data/docs/GetGoogleBusinessSearchKeywords200ResponseMonthRange.md +20 -0
- data/docs/GetGoogleBusinessSearchKeywords400Response.md +18 -0
- data/docs/MessagesApi.md +70 -0
- data/docs/PostsApi.md +72 -0
- data/docs/TwitterPlatformData.md +3 -1
- data/docs/UpdatePostRequest.md +2 -0
- data/lib/late-sdk/api/analytics_api.rb +153 -0
- data/lib/late-sdk/api/messages_api.rb +68 -0
- data/lib/late-sdk/api/posts_api.rb +74 -0
- data/lib/late-sdk/models/create_inbox_conversation201_response.rb +156 -0
- data/lib/late-sdk/models/create_inbox_conversation201_response_data.rb +188 -0
- data/lib/late-sdk/models/create_inbox_conversation400_response.rb +190 -0
- data/lib/late-sdk/models/create_inbox_conversation422_response.rb +190 -0
- data/lib/late-sdk/models/create_inbox_conversation_request.rb +207 -0
- data/lib/late-sdk/models/create_post_request.rb +11 -1
- data/lib/late-sdk/models/edit_post200_response.rb +176 -0
- data/lib/late-sdk/models/edit_post_request.rb +216 -0
- data/lib/late-sdk/models/facebook_platform_data.rb +14 -2
- data/lib/late-sdk/models/get_google_business_performance200_response.rb +195 -0
- data/lib/late-sdk/models/get_google_business_performance200_response_date_range.rb +156 -0
- data/lib/late-sdk/models/get_google_business_performance200_response_metrics_value.rb +159 -0
- data/lib/late-sdk/models/get_google_business_performance200_response_metrics_value_values_inner.rb +156 -0
- data/lib/late-sdk/models/get_google_business_performance400_response.rb +158 -0
- data/lib/late-sdk/models/get_google_business_search_keywords200_response.rb +194 -0
- data/lib/late-sdk/models/get_google_business_search_keywords200_response_keywords_inner.rb +156 -0
- data/lib/late-sdk/models/get_google_business_search_keywords200_response_month_range.rb +156 -0
- data/lib/late-sdk/models/get_google_business_search_keywords400_response.rb +147 -0
- data/lib/late-sdk/models/twitter_platform_data.rb +16 -4
- data/lib/late-sdk/models/update_post_request.rb +11 -1
- data/lib/late-sdk/version.rb +1 -1
- data/lib/late-sdk.rb +16 -0
- data/openapi.yaml +423 -1
- data/spec/api/analytics_api_spec.rb +29 -0
- data/spec/api/messages_api_spec.rb +12 -0
- data/spec/api/posts_api_spec.rb +13 -0
- data/spec/models/create_inbox_conversation201_response_data_spec.rb +60 -0
- data/spec/models/create_inbox_conversation201_response_spec.rb +42 -0
- data/spec/models/create_inbox_conversation400_response_spec.rb +46 -0
- data/spec/models/create_inbox_conversation422_response_spec.rb +46 -0
- data/spec/models/create_inbox_conversation_request_spec.rb +60 -0
- data/spec/models/create_post_request_spec.rb +6 -0
- data/spec/models/edit_post200_response_spec.rb +54 -0
- data/spec/models/edit_post_request_spec.rb +46 -0
- data/spec/models/facebook_platform_data_spec.rb +6 -0
- data/spec/models/get_google_business_performance200_response_date_range_spec.rb +42 -0
- data/spec/models/get_google_business_performance200_response_metrics_value_spec.rb +42 -0
- data/spec/models/get_google_business_performance200_response_metrics_value_values_inner_spec.rb +42 -0
- data/spec/models/get_google_business_performance200_response_spec.rb +66 -0
- data/spec/models/get_google_business_performance400_response_spec.rb +42 -0
- data/spec/models/get_google_business_search_keywords200_response_keywords_inner_spec.rb +42 -0
- data/spec/models/get_google_business_search_keywords200_response_month_range_spec.rb +42 -0
- data/spec/models/get_google_business_search_keywords200_response_spec.rb +66 -0
- data/spec/models/get_google_business_search_keywords400_response_spec.rb +36 -0
- data/spec/models/twitter_platform_data_spec.rb +6 -0
- data/spec/models/update_post_request_spec.rb +6 -0
- data/zernio-sdk-0.0.112.gem +0 -0
- metadata +67 -3
- data/zernio-sdk-0.0.110.gem +0 -0
data/openapi.yaml
CHANGED
|
@@ -1633,6 +1633,10 @@ components:
|
|
|
1633
1633
|
required:
|
|
1634
1634
|
- options
|
|
1635
1635
|
- duration_minutes
|
|
1636
|
+
longVideo:
|
|
1637
|
+
type: boolean
|
|
1638
|
+
default: false
|
|
1639
|
+
description: Enable long video uploads (over 140 seconds) using amplify_video media category. Requires the connected X account to have an active X Premium subscription. When true, videos are uploaded with the amplify_video category which supports longer durations (up to 10 minutes via API). When false or omitted, the standard tweet_video category is used (140 second limit). Note that not all Premium accounts have API long-video access, as X may require separate allowlisting.
|
|
1636
1640
|
|
|
1637
1641
|
ThreadsPlatformData:
|
|
1638
1642
|
type: object
|
|
@@ -1657,6 +1661,10 @@ components:
|
|
|
1657
1661
|
FacebookPlatformData:
|
|
1658
1662
|
type: object
|
|
1659
1663
|
properties:
|
|
1664
|
+
draft:
|
|
1665
|
+
type: boolean
|
|
1666
|
+
description: When true, creates the post as an unpublished draft visible in Facebook Publishing Tools instead of publishing immediately. Supported for feed posts (text, link, image, video) and reels. Not supported for stories. Drafts expire after ~30 days.
|
|
1667
|
+
default: false
|
|
1660
1668
|
contentType:
|
|
1661
1669
|
type: string
|
|
1662
1670
|
enum: [story, reel]
|
|
@@ -1666,7 +1674,7 @@ components:
|
|
|
1666
1674
|
description: Reel title (only for contentType=reel). Separate from the caption/content field.
|
|
1667
1675
|
firstComment:
|
|
1668
1676
|
type: string
|
|
1669
|
-
description: Optional first comment to post immediately after publishing (feed posts only, not stories or reels)
|
|
1677
|
+
description: Optional first comment to post immediately after publishing (feed posts only, not stories or reels). Skipped when draft is true.
|
|
1670
1678
|
pageId:
|
|
1671
1679
|
type: string
|
|
1672
1680
|
description: Target Facebook Page ID for multi-page posting. If omitted, uses the default page. Use GET /v1/accounts/{id}/facebook-page to list pages.
|
|
@@ -4342,6 +4350,222 @@ paths:
|
|
|
4342
4350
|
properties:
|
|
4343
4351
|
error: { type: string, example: "Post not found" }
|
|
4344
4352
|
|
|
4353
|
+
/v1/analytics/googlebusiness/performance:
|
|
4354
|
+
get:
|
|
4355
|
+
operationId: getGoogleBusinessPerformance
|
|
4356
|
+
tags: [Analytics]
|
|
4357
|
+
summary: Get Google Business Profile performance metrics
|
|
4358
|
+
description: |
|
|
4359
|
+
Returns daily performance metrics for a Google Business Profile location.
|
|
4360
|
+
Metrics include impressions (Maps/Search, desktop/mobile), website clicks,
|
|
4361
|
+
call clicks, direction requests, conversations, bookings, and food orders.
|
|
4362
|
+
Data may be delayed 2-3 days. Max 18 months of historical data.
|
|
4363
|
+
Requires the Analytics add-on.
|
|
4364
|
+
parameters:
|
|
4365
|
+
- name: accountId
|
|
4366
|
+
in: query
|
|
4367
|
+
required: true
|
|
4368
|
+
schema: { type: string }
|
|
4369
|
+
description: The Zernio SocialAccount ID for the Google Business Profile account.
|
|
4370
|
+
- name: metrics
|
|
4371
|
+
in: query
|
|
4372
|
+
schema: { type: string }
|
|
4373
|
+
description: |
|
|
4374
|
+
Comma-separated metric names. Defaults to all available metrics.
|
|
4375
|
+
Valid values: BUSINESS_IMPRESSIONS_DESKTOP_MAPS, BUSINESS_IMPRESSIONS_DESKTOP_SEARCH,
|
|
4376
|
+
BUSINESS_IMPRESSIONS_MOBILE_MAPS, BUSINESS_IMPRESSIONS_MOBILE_SEARCH,
|
|
4377
|
+
BUSINESS_CONVERSATIONS, BUSINESS_DIRECTION_REQUESTS, CALL_CLICKS, WEBSITE_CLICKS,
|
|
4378
|
+
BUSINESS_BOOKINGS, BUSINESS_FOOD_ORDERS, BUSINESS_FOOD_MENU_CLICKS
|
|
4379
|
+
- name: startDate
|
|
4380
|
+
in: query
|
|
4381
|
+
schema: { type: string, format: date }
|
|
4382
|
+
description: Start date (YYYY-MM-DD). Defaults to 30 days ago. Max 18 months back.
|
|
4383
|
+
- name: endDate
|
|
4384
|
+
in: query
|
|
4385
|
+
schema: { type: string, format: date }
|
|
4386
|
+
description: End date (YYYY-MM-DD). Defaults to today.
|
|
4387
|
+
responses:
|
|
4388
|
+
'200':
|
|
4389
|
+
description: Performance metrics with daily time series
|
|
4390
|
+
content:
|
|
4391
|
+
application/json:
|
|
4392
|
+
schema:
|
|
4393
|
+
type: object
|
|
4394
|
+
properties:
|
|
4395
|
+
success: { type: boolean, example: true }
|
|
4396
|
+
accountId: { type: string }
|
|
4397
|
+
platform: { type: string, example: "googlebusiness" }
|
|
4398
|
+
dateRange:
|
|
4399
|
+
type: object
|
|
4400
|
+
properties:
|
|
4401
|
+
startDate: { type: string, format: date, example: "2026-03-01" }
|
|
4402
|
+
endDate: { type: string, format: date, example: "2026-03-31" }
|
|
4403
|
+
metrics:
|
|
4404
|
+
type: object
|
|
4405
|
+
description: Each key is a metric name containing total and daily values.
|
|
4406
|
+
additionalProperties:
|
|
4407
|
+
type: object
|
|
4408
|
+
properties:
|
|
4409
|
+
total: { type: integer, description: "Sum of all daily values in the range" }
|
|
4410
|
+
values:
|
|
4411
|
+
type: array
|
|
4412
|
+
items:
|
|
4413
|
+
type: object
|
|
4414
|
+
properties:
|
|
4415
|
+
date: { type: string, format: date }
|
|
4416
|
+
value: { type: integer }
|
|
4417
|
+
dataDelay: { type: string, example: "Data may be delayed 2-3 days" }
|
|
4418
|
+
examples:
|
|
4419
|
+
performance_data:
|
|
4420
|
+
summary: Performance metrics for a location
|
|
4421
|
+
value:
|
|
4422
|
+
success: true
|
|
4423
|
+
accountId: "69300690f43160a0bc999e07"
|
|
4424
|
+
platform: "googlebusiness"
|
|
4425
|
+
dateRange:
|
|
4426
|
+
startDate: "2026-03-01"
|
|
4427
|
+
endDate: "2026-03-31"
|
|
4428
|
+
metrics:
|
|
4429
|
+
WEBSITE_CLICKS:
|
|
4430
|
+
total: 42
|
|
4431
|
+
values:
|
|
4432
|
+
- date: "2026-03-01"
|
|
4433
|
+
value: 3
|
|
4434
|
+
- date: "2026-03-02"
|
|
4435
|
+
value: 1
|
|
4436
|
+
CALL_CLICKS:
|
|
4437
|
+
total: 7
|
|
4438
|
+
values:
|
|
4439
|
+
- date: "2026-03-01"
|
|
4440
|
+
value: 1
|
|
4441
|
+
BUSINESS_IMPRESSIONS_MOBILE_SEARCH:
|
|
4442
|
+
total: 156
|
|
4443
|
+
values:
|
|
4444
|
+
- date: "2026-03-01"
|
|
4445
|
+
value: 8
|
|
4446
|
+
dataDelay: "Data may be delayed 2-3 days"
|
|
4447
|
+
'400':
|
|
4448
|
+
description: Invalid parameters
|
|
4449
|
+
content:
|
|
4450
|
+
application/json:
|
|
4451
|
+
schema:
|
|
4452
|
+
type: object
|
|
4453
|
+
properties:
|
|
4454
|
+
error: { type: string, example: "Invalid metrics: INVALID_METRIC" }
|
|
4455
|
+
validMetrics:
|
|
4456
|
+
type: array
|
|
4457
|
+
items: { type: string }
|
|
4458
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
4459
|
+
'402':
|
|
4460
|
+
description: Analytics add-on required
|
|
4461
|
+
content:
|
|
4462
|
+
application/json:
|
|
4463
|
+
schema:
|
|
4464
|
+
type: object
|
|
4465
|
+
properties:
|
|
4466
|
+
error: { type: string, example: "Analytics add-on required" }
|
|
4467
|
+
code: { type: string, example: "analytics_addon_required" }
|
|
4468
|
+
'403':
|
|
4469
|
+
description: Access denied
|
|
4470
|
+
content:
|
|
4471
|
+
application/json:
|
|
4472
|
+
schema:
|
|
4473
|
+
type: object
|
|
4474
|
+
properties:
|
|
4475
|
+
error: { type: string, example: "Access denied to this account" }
|
|
4476
|
+
|
|
4477
|
+
/v1/analytics/googlebusiness/search-keywords:
|
|
4478
|
+
get:
|
|
4479
|
+
operationId: getGoogleBusinessSearchKeywords
|
|
4480
|
+
tags: [Analytics]
|
|
4481
|
+
summary: Get Google Business Profile search keywords
|
|
4482
|
+
description: |
|
|
4483
|
+
Returns search keywords that triggered impressions for a Google Business Profile location.
|
|
4484
|
+
Data is aggregated monthly. Keywords below a minimum impression threshold set by Google are excluded.
|
|
4485
|
+
Max 18 months of historical data. Requires the Analytics add-on.
|
|
4486
|
+
parameters:
|
|
4487
|
+
- name: accountId
|
|
4488
|
+
in: query
|
|
4489
|
+
required: true
|
|
4490
|
+
schema: { type: string }
|
|
4491
|
+
description: The Zernio SocialAccount ID for the Google Business Profile account.
|
|
4492
|
+
- name: startMonth
|
|
4493
|
+
in: query
|
|
4494
|
+
schema: { type: string, pattern: "^\\d{4}-\\d{2}$" }
|
|
4495
|
+
description: Start month (YYYY-MM). Defaults to 3 months ago.
|
|
4496
|
+
- name: endMonth
|
|
4497
|
+
in: query
|
|
4498
|
+
schema: { type: string, pattern: "^\\d{4}-\\d{2}$" }
|
|
4499
|
+
description: End month (YYYY-MM). Defaults to current month.
|
|
4500
|
+
responses:
|
|
4501
|
+
'200':
|
|
4502
|
+
description: Search keywords with impression counts
|
|
4503
|
+
content:
|
|
4504
|
+
application/json:
|
|
4505
|
+
schema:
|
|
4506
|
+
type: object
|
|
4507
|
+
properties:
|
|
4508
|
+
success: { type: boolean, example: true }
|
|
4509
|
+
accountId: { type: string }
|
|
4510
|
+
platform: { type: string, example: "googlebusiness" }
|
|
4511
|
+
monthRange:
|
|
4512
|
+
type: object
|
|
4513
|
+
properties:
|
|
4514
|
+
startMonth: { type: string, example: "2026-01" }
|
|
4515
|
+
endMonth: { type: string, example: "2026-03" }
|
|
4516
|
+
keywords:
|
|
4517
|
+
type: array
|
|
4518
|
+
items:
|
|
4519
|
+
type: object
|
|
4520
|
+
properties:
|
|
4521
|
+
keyword: { type: string, example: "restaurant near me" }
|
|
4522
|
+
impressions: { type: integer, example: 245 }
|
|
4523
|
+
note: { type: string, example: "Keywords below a minimum impression threshold are excluded by Google" }
|
|
4524
|
+
examples:
|
|
4525
|
+
keywords_data:
|
|
4526
|
+
summary: Search keywords for a location
|
|
4527
|
+
value:
|
|
4528
|
+
success: true
|
|
4529
|
+
accountId: "69300690f43160a0bc999e07"
|
|
4530
|
+
platform: "googlebusiness"
|
|
4531
|
+
monthRange:
|
|
4532
|
+
startMonth: "2026-01"
|
|
4533
|
+
endMonth: "2026-03"
|
|
4534
|
+
keywords:
|
|
4535
|
+
- keyword: "restaurant near me"
|
|
4536
|
+
impressions: 245
|
|
4537
|
+
- keyword: "best tapas barcelona"
|
|
4538
|
+
impressions: 89
|
|
4539
|
+
- keyword: "arbichat"
|
|
4540
|
+
impressions: 34
|
|
4541
|
+
note: "Keywords below a minimum impression threshold are excluded by Google"
|
|
4542
|
+
'400':
|
|
4543
|
+
description: Invalid parameters
|
|
4544
|
+
content:
|
|
4545
|
+
application/json:
|
|
4546
|
+
schema:
|
|
4547
|
+
type: object
|
|
4548
|
+
properties:
|
|
4549
|
+
error: { type: string, example: "Invalid startMonth format. Use YYYY-MM." }
|
|
4550
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
4551
|
+
'402':
|
|
4552
|
+
description: Analytics add-on required
|
|
4553
|
+
content:
|
|
4554
|
+
application/json:
|
|
4555
|
+
schema:
|
|
4556
|
+
type: object
|
|
4557
|
+
properties:
|
|
4558
|
+
error: { type: string, example: "Analytics add-on required" }
|
|
4559
|
+
code: { type: string, example: "analytics_addon_required" }
|
|
4560
|
+
'403':
|
|
4561
|
+
description: Access denied
|
|
4562
|
+
content:
|
|
4563
|
+
application/json:
|
|
4564
|
+
schema:
|
|
4565
|
+
type: object
|
|
4566
|
+
properties:
|
|
4567
|
+
error: { type: string, example: "Access denied to this account" }
|
|
4568
|
+
|
|
4345
4569
|
/v1/account-groups:
|
|
4346
4570
|
get:
|
|
4347
4571
|
operationId: listAccountGroups
|
|
@@ -4948,6 +5172,9 @@ paths:
|
|
|
4948
5172
|
tiktokSettings:
|
|
4949
5173
|
$ref: '#/components/schemas/TikTokPlatformData'
|
|
4950
5174
|
description: Root-level TikTok settings applied to all TikTok platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
|
|
5175
|
+
facebookSettings:
|
|
5176
|
+
$ref: '#/components/schemas/FacebookPlatformData'
|
|
5177
|
+
description: Root-level Facebook settings applied to all Facebook platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
|
|
4951
5178
|
recycling:
|
|
4952
5179
|
$ref: '#/components/schemas/RecyclingConfig'
|
|
4953
5180
|
queuedFromProfile:
|
|
@@ -4960,6 +5187,16 @@ paths:
|
|
|
4960
5187
|
Only used when queuedFromProfile is also provided.
|
|
4961
5188
|
If omitted, uses the profile's default queue.
|
|
4962
5189
|
examples:
|
|
5190
|
+
facebookDraft:
|
|
5191
|
+
summary: Facebook draft post (visible in Publishing Tools)
|
|
5192
|
+
value:
|
|
5193
|
+
content: "Draft post for review before publishing"
|
|
5194
|
+
platforms:
|
|
5195
|
+
- platform: facebook
|
|
5196
|
+
accountId: "64e1f0a9e2b5af0012ab34cd"
|
|
5197
|
+
publishNow: true
|
|
5198
|
+
facebookSettings:
|
|
5199
|
+
draft: true
|
|
4963
5200
|
recyclingPost:
|
|
4964
5201
|
summary: Post with weekly recycling and content variations
|
|
4965
5202
|
value:
|
|
@@ -5305,6 +5542,9 @@ paths:
|
|
|
5305
5542
|
tiktokSettings:
|
|
5306
5543
|
$ref: '#/components/schemas/TikTokPlatformData'
|
|
5307
5544
|
description: Root-level TikTok settings applied to all TikTok platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
|
|
5545
|
+
facebookSettings:
|
|
5546
|
+
$ref: '#/components/schemas/FacebookPlatformData'
|
|
5547
|
+
description: Root-level Facebook settings applied to all Facebook platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
|
|
5308
5548
|
recycling:
|
|
5309
5549
|
$ref: '#/components/schemas/RecyclingConfig'
|
|
5310
5550
|
additionalProperties: true
|
|
@@ -5546,6 +5786,69 @@ paths:
|
|
|
5546
5786
|
'404': { $ref: '#/components/responses/NotFound' }
|
|
5547
5787
|
'500':
|
|
5548
5788
|
description: Platform API deletion failed
|
|
5789
|
+
/v1/posts/{postId}/edit:
|
|
5790
|
+
post:
|
|
5791
|
+
operationId: editPost
|
|
5792
|
+
tags: [Posts]
|
|
5793
|
+
summary: Edit published post
|
|
5794
|
+
description: |
|
|
5795
|
+
Edit a published post on a social media platform. Currently only supported for X (Twitter).
|
|
5796
|
+
|
|
5797
|
+
**Requirements:**
|
|
5798
|
+
- Connected X account must have an active X Premium subscription
|
|
5799
|
+
- Must be within 1 hour of original publish time
|
|
5800
|
+
- Maximum 5 edits per tweet (enforced by X)
|
|
5801
|
+
- Text-only edits (media changes are not supported)
|
|
5802
|
+
|
|
5803
|
+
The post record in Zernio is updated with the new content and edit history.
|
|
5804
|
+
parameters:
|
|
5805
|
+
- name: postId
|
|
5806
|
+
in: path
|
|
5807
|
+
required: true
|
|
5808
|
+
schema: { type: string }
|
|
5809
|
+
requestBody:
|
|
5810
|
+
required: true
|
|
5811
|
+
content:
|
|
5812
|
+
application/json:
|
|
5813
|
+
schema:
|
|
5814
|
+
type: object
|
|
5815
|
+
required: [platform, content]
|
|
5816
|
+
properties:
|
|
5817
|
+
platform:
|
|
5818
|
+
type: string
|
|
5819
|
+
description: The platform to edit the post on. Currently only twitter is supported.
|
|
5820
|
+
enum: [twitter]
|
|
5821
|
+
content:
|
|
5822
|
+
type: string
|
|
5823
|
+
description: The new tweet text content
|
|
5824
|
+
example:
|
|
5825
|
+
platform: "twitter"
|
|
5826
|
+
content: "Updated tweet text with corrected information"
|
|
5827
|
+
responses:
|
|
5828
|
+
'200':
|
|
5829
|
+
description: Post edited successfully
|
|
5830
|
+
content:
|
|
5831
|
+
application/json:
|
|
5832
|
+
schema:
|
|
5833
|
+
type: object
|
|
5834
|
+
properties:
|
|
5835
|
+
success: { type: boolean }
|
|
5836
|
+
id: { type: string, description: New tweet ID assigned by X after edit }
|
|
5837
|
+
url: { type: string, format: uri, description: URL of the edited tweet }
|
|
5838
|
+
message: { type: string }
|
|
5839
|
+
example:
|
|
5840
|
+
success: true
|
|
5841
|
+
id: "1234567890123456790"
|
|
5842
|
+
url: "https://twitter.com/i/web/status/1234567890123456790"
|
|
5843
|
+
message: "Tweet edited successfully"
|
|
5844
|
+
'400':
|
|
5845
|
+
description: "Invalid request: platform not supported, post not published, edit window expired, not Premium, or missing content."
|
|
5846
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
5847
|
+
'403':
|
|
5848
|
+
description: Forbidden
|
|
5849
|
+
'404': { $ref: '#/components/responses/NotFound' }
|
|
5850
|
+
'500':
|
|
5851
|
+
description: Platform API edit failed
|
|
5549
5852
|
/v1/posts/{postId}/update-metadata:
|
|
5550
5853
|
post:
|
|
5551
5854
|
operationId: updatePostMetadata
|
|
@@ -11276,6 +11579,125 @@ paths:
|
|
|
11276
11579
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
11277
11580
|
'403':
|
|
11278
11581
|
description: Inbox addon required
|
|
11582
|
+
post:
|
|
11583
|
+
operationId: createInboxConversation
|
|
11584
|
+
summary: Create conversation
|
|
11585
|
+
description: |
|
|
11586
|
+
Initiate a new direct message conversation with a specified user. If a conversation already exists with the recipient, the message is added to the existing thread.
|
|
11587
|
+
|
|
11588
|
+
**Currently supported platforms:** Twitter/X only. Other platforms will return `PLATFORM_NOT_SUPPORTED`.
|
|
11589
|
+
|
|
11590
|
+
**DM eligibility:** Before sending, the endpoint checks if the recipient accepts DMs from your account (via the `receives_your_dm` field). If not, a 422 error with code `DM_NOT_ALLOWED` is returned. You can skip this check with `skipDmCheck: true` if you have already verified eligibility.
|
|
11591
|
+
|
|
11592
|
+
**X API tier requirement:** DM write endpoints require X API Pro tier ($5,000/month) or Enterprise access. This applies to BYOK (Bring Your Own Key) users who provide their own X API credentials.
|
|
11593
|
+
|
|
11594
|
+
**Rate limits:** 200 requests per 15 minutes, 1,000 per 24 hours per user, 15,000 per 24 hours per app (shared across all DM endpoints).
|
|
11595
|
+
tags: [Messages]
|
|
11596
|
+
security: [{ bearerAuth: [] }]
|
|
11597
|
+
requestBody:
|
|
11598
|
+
required: true
|
|
11599
|
+
content:
|
|
11600
|
+
application/json:
|
|
11601
|
+
schema:
|
|
11602
|
+
type: object
|
|
11603
|
+
required: [accountId]
|
|
11604
|
+
properties:
|
|
11605
|
+
accountId:
|
|
11606
|
+
type: string
|
|
11607
|
+
description: The social account ID to send from
|
|
11608
|
+
participantId:
|
|
11609
|
+
type: string
|
|
11610
|
+
description: Twitter numeric user ID of the recipient. Provide either this or `participantUsername`.
|
|
11611
|
+
participantUsername:
|
|
11612
|
+
type: string
|
|
11613
|
+
description: Twitter username (with or without @) of the recipient. Resolved to a user ID via lookup. Provide either this or `participantId`.
|
|
11614
|
+
message:
|
|
11615
|
+
type: string
|
|
11616
|
+
description: Text content of the message. At least one of `message` or attachment is required.
|
|
11617
|
+
skipDmCheck:
|
|
11618
|
+
type: boolean
|
|
11619
|
+
default: false
|
|
11620
|
+
description: Skip the `receives_your_dm` eligibility check before sending. Use if you have already verified the recipient accepts DMs.
|
|
11621
|
+
multipart/form-data:
|
|
11622
|
+
schema:
|
|
11623
|
+
type: object
|
|
11624
|
+
required: [accountId]
|
|
11625
|
+
properties:
|
|
11626
|
+
accountId:
|
|
11627
|
+
type: string
|
|
11628
|
+
description: The social account ID to send from
|
|
11629
|
+
participantId:
|
|
11630
|
+
type: string
|
|
11631
|
+
description: Twitter numeric user ID of the recipient
|
|
11632
|
+
participantUsername:
|
|
11633
|
+
type: string
|
|
11634
|
+
description: Twitter username (with or without @) of the recipient
|
|
11635
|
+
message:
|
|
11636
|
+
type: string
|
|
11637
|
+
description: Text content of the message
|
|
11638
|
+
attachment:
|
|
11639
|
+
type: string
|
|
11640
|
+
format: binary
|
|
11641
|
+
description: Media attachment (image or video). One attachment per message.
|
|
11642
|
+
skipDmCheck:
|
|
11643
|
+
type: string
|
|
11644
|
+
enum: ['true', 'false']
|
|
11645
|
+
default: 'false'
|
|
11646
|
+
description: Skip the DM eligibility check
|
|
11647
|
+
responses:
|
|
11648
|
+
'201':
|
|
11649
|
+
description: Conversation created successfully
|
|
11650
|
+
content:
|
|
11651
|
+
application/json:
|
|
11652
|
+
schema:
|
|
11653
|
+
type: object
|
|
11654
|
+
properties:
|
|
11655
|
+
success: { type: boolean, example: true }
|
|
11656
|
+
data:
|
|
11657
|
+
type: object
|
|
11658
|
+
properties:
|
|
11659
|
+
messageId:
|
|
11660
|
+
type: string
|
|
11661
|
+
description: Platform message ID (dm_event_id)
|
|
11662
|
+
conversationId:
|
|
11663
|
+
type: string
|
|
11664
|
+
description: Platform conversation ID (dm_conversation_id)
|
|
11665
|
+
participantId:
|
|
11666
|
+
type: string
|
|
11667
|
+
description: Twitter numeric user ID of the recipient
|
|
11668
|
+
participantName:
|
|
11669
|
+
type: string
|
|
11670
|
+
nullable: true
|
|
11671
|
+
description: Display name of the recipient
|
|
11672
|
+
participantUsername:
|
|
11673
|
+
type: string
|
|
11674
|
+
nullable: true
|
|
11675
|
+
description: Twitter username of the recipient
|
|
11676
|
+
'400':
|
|
11677
|
+
description: Validation error or platform not supported
|
|
11678
|
+
content:
|
|
11679
|
+
application/json:
|
|
11680
|
+
schema:
|
|
11681
|
+
type: object
|
|
11682
|
+
properties:
|
|
11683
|
+
error: { type: string }
|
|
11684
|
+
code: { type: string, enum: [PLATFORM_NOT_SUPPORTED] }
|
|
11685
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
11686
|
+
'403':
|
|
11687
|
+
description: Inbox addon required or profile limit reached
|
|
11688
|
+
'404':
|
|
11689
|
+
description: Account or recipient user not found
|
|
11690
|
+
'422':
|
|
11691
|
+
description: Recipient does not accept DMs from this account
|
|
11692
|
+
content:
|
|
11693
|
+
application/json:
|
|
11694
|
+
schema:
|
|
11695
|
+
type: object
|
|
11696
|
+
properties:
|
|
11697
|
+
error: { type: string }
|
|
11698
|
+
code: { type: string, enum: [DM_NOT_ALLOWED] }
|
|
11699
|
+
'429':
|
|
11700
|
+
description: X API rate limit exceeded
|
|
11279
11701
|
/v1/inbox/conversations/{conversationId}:
|
|
11280
11702
|
get:
|
|
11281
11703
|
operationId: getInboxConversation
|
|
@@ -115,6 +115,35 @@ describe 'AnalyticsApi' do
|
|
|
115
115
|
end
|
|
116
116
|
end
|
|
117
117
|
|
|
118
|
+
# unit tests for get_google_business_performance
|
|
119
|
+
# Get Google Business Profile performance metrics
|
|
120
|
+
# Returns daily performance metrics for a Google Business Profile location. Metrics include impressions (Maps/Search, desktop/mobile), website clicks, call clicks, direction requests, conversations, bookings, and food orders. Data may be delayed 2-3 days. Max 18 months of historical data. Requires the Analytics add-on.
|
|
121
|
+
# @param account_id The Zernio SocialAccount ID for the Google Business Profile account.
|
|
122
|
+
# @param [Hash] opts the optional parameters
|
|
123
|
+
# @option opts [String] :metrics Comma-separated metric names. Defaults to all available metrics. Valid values: BUSINESS_IMPRESSIONS_DESKTOP_MAPS, BUSINESS_IMPRESSIONS_DESKTOP_SEARCH, BUSINESS_IMPRESSIONS_MOBILE_MAPS, BUSINESS_IMPRESSIONS_MOBILE_SEARCH, BUSINESS_CONVERSATIONS, BUSINESS_DIRECTION_REQUESTS, CALL_CLICKS, WEBSITE_CLICKS, BUSINESS_BOOKINGS, BUSINESS_FOOD_ORDERS, BUSINESS_FOOD_MENU_CLICKS
|
|
124
|
+
# @option opts [Date] :start_date Start date (YYYY-MM-DD). Defaults to 30 days ago. Max 18 months back.
|
|
125
|
+
# @option opts [Date] :end_date End date (YYYY-MM-DD). Defaults to today.
|
|
126
|
+
# @return [GetGoogleBusinessPerformance200Response]
|
|
127
|
+
describe 'get_google_business_performance test' do
|
|
128
|
+
it 'should work' do
|
|
129
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# unit tests for get_google_business_search_keywords
|
|
134
|
+
# Get Google Business Profile search keywords
|
|
135
|
+
# Returns search keywords that triggered impressions for a Google Business Profile location. Data is aggregated monthly. Keywords below a minimum impression threshold set by Google are excluded. Max 18 months of historical data. Requires the Analytics add-on.
|
|
136
|
+
# @param account_id The Zernio SocialAccount ID for the Google Business Profile account.
|
|
137
|
+
# @param [Hash] opts the optional parameters
|
|
138
|
+
# @option opts [String] :start_month Start month (YYYY-MM). Defaults to 3 months ago.
|
|
139
|
+
# @option opts [String] :end_month End month (YYYY-MM). Defaults to current month.
|
|
140
|
+
# @return [GetGoogleBusinessSearchKeywords200Response]
|
|
141
|
+
describe 'get_google_business_search_keywords test' do
|
|
142
|
+
it 'should work' do
|
|
143
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
118
147
|
# unit tests for get_instagram_account_insights
|
|
119
148
|
# Get Instagram account-level insights
|
|
120
149
|
# Returns account-level Instagram insights such as reach, views, accounts engaged, and total interactions. These metrics reflect the entire account's performance across all content surfaces (feed, stories, explore, profile), and are fundamentally different from post-level metrics. Data may be delayed up to 48 hours. Max 90 days, defaults to last 30 days. Requires the Analytics add-on.
|
|
@@ -46,6 +46,18 @@ describe 'MessagesApi' do
|
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
+
# unit tests for create_inbox_conversation
|
|
50
|
+
# Create conversation
|
|
51
|
+
# Initiate a new direct message conversation with a specified user. If a conversation already exists with the recipient, the message is added to the existing thread. **Currently supported platforms:** Twitter/X only. Other platforms will return `PLATFORM_NOT_SUPPORTED`. **DM eligibility:** Before sending, the endpoint checks if the recipient accepts DMs from your account (via the `receives_your_dm` field). If not, a 422 error with code `DM_NOT_ALLOWED` is returned. You can skip this check with `skipDmCheck: true` if you have already verified eligibility. **X API tier requirement:** DM write endpoints require X API Pro tier ($5,000/month) or Enterprise access. This applies to BYOK (Bring Your Own Key) users who provide their own X API credentials. **Rate limits:** 200 requests per 15 minutes, 1,000 per 24 hours per user, 15,000 per 24 hours per app (shared across all DM endpoints).
|
|
52
|
+
# @param create_inbox_conversation_request
|
|
53
|
+
# @param [Hash] opts the optional parameters
|
|
54
|
+
# @return [CreateInboxConversation201Response]
|
|
55
|
+
describe 'create_inbox_conversation test' do
|
|
56
|
+
it 'should work' do
|
|
57
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
49
61
|
# unit tests for delete_inbox_message
|
|
50
62
|
# Delete message
|
|
51
63
|
# Delete a message from a conversation. Platform support varies: - **Telegram**: Full delete (bot's own messages anytime, others if admin) - **X/Twitter**: Full delete (own DM events only) - **Bluesky**: Delete for self only (recipient still sees it) - **Reddit**: Delete from sender's view only - **Facebook, Instagram, WhatsApp**: Not supported (returns 400)
|
data/spec/api/posts_api_spec.rb
CHANGED
|
@@ -69,6 +69,19 @@ describe 'PostsApi' do
|
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
+
# unit tests for edit_post
|
|
73
|
+
# Edit published post
|
|
74
|
+
# Edit a published post on a social media platform. Currently only supported for X (Twitter). **Requirements:** - Connected X account must have an active X Premium subscription - Must be within 1 hour of original publish time - Maximum 5 edits per tweet (enforced by X) - Text-only edits (media changes are not supported) The post record in Zernio is updated with the new content and edit history.
|
|
75
|
+
# @param post_id
|
|
76
|
+
# @param edit_post_request
|
|
77
|
+
# @param [Hash] opts the optional parameters
|
|
78
|
+
# @return [EditPost200Response]
|
|
79
|
+
describe 'edit_post test' do
|
|
80
|
+
it 'should work' do
|
|
81
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
72
85
|
# unit tests for get_post
|
|
73
86
|
# Get post
|
|
74
87
|
# Fetch a single post by ID. For published posts, this returns platformPostUrl for each platform.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.1
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Late::CreateInboxConversation201ResponseData
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Late::CreateInboxConversation201ResponseData do
|
|
21
|
+
#let(:instance) { Late::CreateInboxConversation201ResponseData.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of CreateInboxConversation201ResponseData' do
|
|
24
|
+
it 'should create an instance of CreateInboxConversation201ResponseData' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Late::CreateInboxConversation201ResponseData)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "message_id"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'test attribute "conversation_id"' do
|
|
37
|
+
it 'should work' do
|
|
38
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'test attribute "participant_id"' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe 'test attribute "participant_name"' do
|
|
49
|
+
it 'should work' do
|
|
50
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe 'test attribute "participant_username"' do
|
|
55
|
+
it 'should work' do
|
|
56
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.1
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Late::CreateInboxConversation201Response
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Late::CreateInboxConversation201Response do
|
|
21
|
+
#let(:instance) { Late::CreateInboxConversation201Response.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of CreateInboxConversation201Response' do
|
|
24
|
+
it 'should create an instance of CreateInboxConversation201Response' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Late::CreateInboxConversation201Response)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "success"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'test attribute "data"' do
|
|
37
|
+
it 'should work' do
|
|
38
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|