late-sdk 0.0.880 → 0.0.882
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 +12 -2
- data/docs/{CreateCtwaAd201Response.md → CreateMessagingAd201Response.md} +6 -6
- data/docs/CreatePost200Response.md +39 -12
- data/docs/MessagingAdsApi.md +18 -16
- data/docs/TikTokDryRunVerdict.md +22 -0
- data/docs/{CreatePost200ResponseTiktokInner.md → TikTokDryRunVerdictTiktokInner.md} +2 -2
- data/docs/TrackingTagsApi.md +7 -6
- data/docs/UpdateAdTrackingTags200Response.md +18 -0
- data/docs/UpdateGoogleBusinessLocationDetailsRequest.md +19 -1
- data/docs/UpdateGoogleBusinessLocationDetailsRequestAdWordsLocationExtensions.md +18 -0
- data/docs/UpdateGoogleBusinessLocationDetailsRequestLatlng.md +20 -0
- data/docs/UpdateGoogleBusinessLocationDetailsRequestMoreHoursInner.md +20 -0
- data/docs/UpdateGoogleBusinessLocationDetailsRequestOpenInfo.md +20 -0
- data/docs/UpdateGoogleBusinessLocationDetailsRequestServiceArea.md +22 -0
- data/docs/UpdateGoogleBusinessLocationDetailsRequestServiceAreaPlaces.md +18 -0
- data/docs/UpdateGoogleBusinessLocationDetailsRequestServiceAreaPlacesPlaceInfosInner.md +20 -0
- data/docs/UpdateGoogleBusinessLocationDetailsRequestStorefrontAddress.md +28 -0
- data/lib/zernio-sdk/api/messaging_ads_api.rb +13 -13
- data/lib/zernio-sdk/api/tracking_tags_api.rb +5 -5
- data/lib/zernio-sdk/models/{create_ctwa_ad201_response.rb → create_messaging_ad201_response.rb} +1 -1
- data/lib/zernio-sdk/models/create_post200_response.rb +74 -191
- data/lib/zernio-sdk/models/tik_tok_dry_run_verdict.rb +221 -0
- data/lib/zernio-sdk/models/{create_post200_response_tiktok_inner.rb → tik_tok_dry_run_verdict_tiktok_inner.rb} +3 -3
- data/lib/zernio-sdk/models/update_ad_tracking_tags200_response.rb +147 -0
- data/lib/zernio-sdk/models/update_google_business_location_details_request.rb +93 -4
- data/lib/zernio-sdk/models/update_google_business_location_details_request_ad_words_location_extensions.rb +148 -0
- data/lib/zernio-sdk/models/update_google_business_location_details_request_latlng.rb +157 -0
- data/lib/zernio-sdk/models/update_google_business_location_details_request_more_hours_inner.rb +159 -0
- data/lib/zernio-sdk/models/update_google_business_location_details_request_open_info.rb +191 -0
- data/lib/zernio-sdk/models/update_google_business_location_details_request_service_area.rb +201 -0
- data/lib/zernio-sdk/models/update_google_business_location_details_request_service_area_places.rb +149 -0
- data/lib/zernio-sdk/models/update_google_business_location_details_request_service_area_places_place_infos_inner.rb +158 -0
- data/lib/zernio-sdk/models/update_google_business_location_details_request_storefront_address.rb +198 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +12 -2
- data/openapi.yaml +154 -36
- data/spec/api/messaging_ads_api_spec.rb +3 -3
- data/spec/api/tracking_tags_api_spec.rb +1 -1
- data/spec/models/{create_ctwa_ad201_response_spec.rb → create_messaging_ad201_response_spec.rb} +2 -2
- data/spec/models/create_post200_response_spec.rb +5 -21
- data/spec/models/tik_tok_dry_run_verdict_spec.rb +48 -0
- data/spec/models/{create_post200_response_tiktok_inner_spec.rb → tik_tok_dry_run_verdict_tiktok_inner_spec.rb} +6 -6
- data/spec/models/update_ad_tracking_tags200_response_spec.rb +36 -0
- data/spec/models/update_google_business_location_details_request_ad_words_location_extensions_spec.rb +36 -0
- data/spec/models/update_google_business_location_details_request_latlng_spec.rb +42 -0
- data/spec/models/update_google_business_location_details_request_more_hours_inner_spec.rb +42 -0
- data/spec/models/update_google_business_location_details_request_open_info_spec.rb +46 -0
- data/spec/models/update_google_business_location_details_request_service_area_places_place_infos_inner_spec.rb +42 -0
- data/spec/models/update_google_business_location_details_request_service_area_places_spec.rb +36 -0
- data/spec/models/update_google_business_location_details_request_service_area_spec.rb +52 -0
- data/spec/models/update_google_business_location_details_request_spec.rb +54 -0
- data/spec/models/update_google_business_location_details_request_storefront_address_spec.rb +66 -0
- data/zernio-sdk-0.0.882.gem +0 -0
- metadata +50 -10
- data/zernio-sdk-0.0.880.gem +0 -0
data/openapi.yaml
CHANGED
|
@@ -7982,6 +7982,23 @@ components:
|
|
|
7982
7982
|
properties:
|
|
7983
7983
|
post:
|
|
7984
7984
|
$ref: '#/components/schemas/Post'
|
|
7985
|
+
TikTokDryRunVerdict:
|
|
7986
|
+
type: object
|
|
7987
|
+
required: [dryRun, canPublish, tiktok]
|
|
7988
|
+
properties:
|
|
7989
|
+
dryRun: { type: boolean, description: Always true on this response }
|
|
7990
|
+
canPublish: { type: boolean, description: True only when every evaluated TikTok account can publish now }
|
|
7991
|
+
tiktok:
|
|
7992
|
+
type: array
|
|
7993
|
+
description: One verdict per `tiktok` entry in the request, in request order
|
|
7994
|
+
items:
|
|
7995
|
+
type: object
|
|
7996
|
+
required: [accountId, canPublish, reason]
|
|
7997
|
+
properties:
|
|
7998
|
+
accountId: { type: string }
|
|
7999
|
+
canPublish: { type: boolean }
|
|
8000
|
+
alreadyPostedToday: { type: boolean, description: 'Whether this account already published a Direct Post today (an account that did can keep publishing). Absent for Creator Inbox drafts and when no per-user limit applies.' }
|
|
8001
|
+
reason: { type: string, description: Human-readable explanation of the verdict }
|
|
7985
8002
|
PostCreateResponse:
|
|
7986
8003
|
type: object
|
|
7987
8004
|
properties:
|
|
@@ -15928,38 +15945,18 @@ paths:
|
|
|
15928
15945
|
timezone: "America/New_York"
|
|
15929
15946
|
responses:
|
|
15930
15947
|
'200':
|
|
15931
|
-
description:
|
|
15948
|
+
description: |
|
|
15949
|
+
A dryRun preview (TikTok only): nothing was created. Deliberately carries no numeric
|
|
15950
|
+
cap detail, only a per-account go/no-go and a reason.
|
|
15951
|
+
|
|
15952
|
+
The schema is a union only so generated clients can type both success shapes of this
|
|
15953
|
+
operation: a 200 is always the dry-run verdict, and a created post is always a 201.
|
|
15932
15954
|
content:
|
|
15933
15955
|
application/json:
|
|
15934
15956
|
schema:
|
|
15935
|
-
|
|
15936
|
-
|
|
15937
|
-
|
|
15938
|
-
dryRun: { type: boolean, description: Always true on this response }
|
|
15939
|
-
canPublish: { type: boolean, description: True only when every evaluated TikTok account can publish now }
|
|
15940
|
-
tiktok:
|
|
15941
|
-
type: array
|
|
15942
|
-
description: One verdict per `tiktok` entry in the request, in request order
|
|
15943
|
-
items:
|
|
15944
|
-
type: object
|
|
15945
|
-
required: [accountId, canPublish, reason]
|
|
15946
|
-
properties:
|
|
15947
|
-
accountId: { type: string }
|
|
15948
|
-
canPublish: { type: boolean }
|
|
15949
|
-
alreadyPostedToday: { type: boolean, description: 'Whether this account already published a Direct Post today (an account that did can keep publishing). Absent for Creator Inbox drafts and when no per-user limit applies.' }
|
|
15950
|
-
reason: { type: string, description: Human-readable explanation of the verdict }
|
|
15951
|
-
example:
|
|
15952
|
-
dryRun: true
|
|
15953
|
-
canPublish: false
|
|
15954
|
-
tiktok:
|
|
15955
|
-
- accountId: "64e1f0a9e2b5af0012ab34de"
|
|
15956
|
-
canPublish: true
|
|
15957
|
-
alreadyPostedToday: false
|
|
15958
|
-
reason: "Account can publish now."
|
|
15959
|
-
- accountId: "64e1f0a9e2b5af0012ab34df"
|
|
15960
|
-
canPublish: false
|
|
15961
|
-
alreadyPostedToday: false
|
|
15962
|
-
reason: "Daily TikTok Direct Post limit reached. Use tiktokSettings.draft: true to continue posting via Creator Inbox."
|
|
15957
|
+
oneOf:
|
|
15958
|
+
- $ref: '#/components/schemas/TikTokDryRunVerdict'
|
|
15959
|
+
- $ref: '#/components/schemas/PostCreateResponse'
|
|
15963
15960
|
'201':
|
|
15964
15961
|
description: Post created
|
|
15965
15962
|
content:
|
|
@@ -20549,6 +20546,81 @@ paths:
|
|
|
20549
20546
|
currencyCode: { type: string, description: "ISO 4217 currency code (e.g. 'USD')" }
|
|
20550
20547
|
units: { type: string, description: "Whole units of the amount" }
|
|
20551
20548
|
nanos: { type: integer, description: "Nano units (10^-9) of the amount" }
|
|
20549
|
+
title:
|
|
20550
|
+
type: string
|
|
20551
|
+
description: "Business name. Use updateMask='title'."
|
|
20552
|
+
storeCode:
|
|
20553
|
+
type: string
|
|
20554
|
+
description: "External store identifier, unique within the account. Use updateMask='storeCode'."
|
|
20555
|
+
labels:
|
|
20556
|
+
type: array
|
|
20557
|
+
description: "Free-form, internal-only labels for grouping (1-255 characters each). Use updateMask='labels'."
|
|
20558
|
+
items: { type: string }
|
|
20559
|
+
storefrontAddress:
|
|
20560
|
+
type: object
|
|
20561
|
+
description: "Postal address of the storefront. Use updateMask='storefrontAddress'. Omit for service-area-only businesses."
|
|
20562
|
+
properties:
|
|
20563
|
+
regionCode: { type: string, description: "ISO 3166-1 alpha-2 country code (e.g. 'BR')" }
|
|
20564
|
+
languageCode: { type: string }
|
|
20565
|
+
postalCode: { type: string }
|
|
20566
|
+
administrativeArea: { type: string, description: "State or province" }
|
|
20567
|
+
locality: { type: string, description: "City" }
|
|
20568
|
+
addressLines: { type: array, items: { type: string } }
|
|
20569
|
+
serviceArea:
|
|
20570
|
+
type: object
|
|
20571
|
+
description: "Areas the business serves. Use updateMask='serviceArea'. Full replacement: send every place you want to keep."
|
|
20572
|
+
properties:
|
|
20573
|
+
businessType:
|
|
20574
|
+
type: string
|
|
20575
|
+
enum: [CUSTOMER_LOCATION_ONLY, CUSTOMER_AND_BUSINESS_LOCATION]
|
|
20576
|
+
places:
|
|
20577
|
+
type: object
|
|
20578
|
+
properties:
|
|
20579
|
+
placeInfos:
|
|
20580
|
+
type: array
|
|
20581
|
+
items:
|
|
20582
|
+
type: object
|
|
20583
|
+
properties:
|
|
20584
|
+
placeName: { type: string, description: "Localized area name (e.g. 'Sao Paulo, SP, Brasil')" }
|
|
20585
|
+
placeId: { type: string, description: "Google Place ID for the area" }
|
|
20586
|
+
regionCode: { type: string, description: "Immutable. CLDR region code of the country the business is based in (e.g. 'BR')" }
|
|
20587
|
+
openInfo:
|
|
20588
|
+
type: object
|
|
20589
|
+
description: "Open/closed status of the location. Use updateMask='openInfo'."
|
|
20590
|
+
properties:
|
|
20591
|
+
status:
|
|
20592
|
+
type: string
|
|
20593
|
+
enum: [OPEN, CLOSED_PERMANENTLY, CLOSED_TEMPORARILY]
|
|
20594
|
+
openingDate:
|
|
20595
|
+
type: object
|
|
20596
|
+
properties: { year: { type: integer }, month: { type: integer }, day: { type: integer } }
|
|
20597
|
+
moreHours:
|
|
20598
|
+
type: array
|
|
20599
|
+
description: "Additional hours for specific services (delivery, drive-through, etc.). Use updateMask='moreHours'."
|
|
20600
|
+
items:
|
|
20601
|
+
type: object
|
|
20602
|
+
properties:
|
|
20603
|
+
hoursTypeId: { type: string, description: "Hours type from Google's catalog (e.g. 'DELIVERY', 'DRIVE_THROUGH')" }
|
|
20604
|
+
periods:
|
|
20605
|
+
type: array
|
|
20606
|
+
items:
|
|
20607
|
+
type: object
|
|
20608
|
+
properties:
|
|
20609
|
+
openDay: { type: string }
|
|
20610
|
+
openTime: { type: string }
|
|
20611
|
+
closeDay: { type: string }
|
|
20612
|
+
closeTime: { type: string }
|
|
20613
|
+
latlng:
|
|
20614
|
+
type: object
|
|
20615
|
+
description: "Precise coordinates. Use updateMask='latlng'. Google restricts latlng writes to approved clients, so this update may be silently ignored or rejected."
|
|
20616
|
+
properties:
|
|
20617
|
+
latitude: { type: number }
|
|
20618
|
+
longitude: { type: number }
|
|
20619
|
+
adWordsLocationExtensions:
|
|
20620
|
+
type: object
|
|
20621
|
+
description: "Alternate phone shown in Google Ads location extensions. Use updateMask='adWordsLocationExtensions'."
|
|
20622
|
+
properties:
|
|
20623
|
+
adPhone: { type: string }
|
|
20552
20624
|
examples:
|
|
20553
20625
|
updateHours:
|
|
20554
20626
|
summary: Update business hours
|
|
@@ -30220,7 +30292,10 @@ paths:
|
|
|
30220
30292
|
'400':
|
|
30221
30293
|
description: |
|
|
30222
30294
|
Invalid request, or the postId belongs to a Meta ad creative / ad ID rather than an organic post
|
|
30223
|
-
(code USE_AD_COMMENTS_ENDPOINT; the response includes `adId` and `adCommentsUrl`)
|
|
30295
|
+
(code USE_AD_COMMENTS_ENDPOINT; the response includes `adId` and `adCommentsUrl`), or the upstream
|
|
30296
|
+
platform rejected the request (type platform_error, code platform_api_error; the provider's own
|
|
30297
|
+
payload is in platformError). Meta returns code 100 with error_subcode 33 both for a story past
|
|
30298
|
+
its 24h life and for a deleted post, so the two are indistinguishable from the response.
|
|
30224
30299
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
30225
30300
|
'403':
|
|
30226
30301
|
description: 'Inbox addon required, or the connected account is not permitted to read this post on the platform (code platform_api_error, type platform_error)'
|
|
@@ -32917,7 +32992,6 @@ paths:
|
|
|
32917
32992
|
contactName: { type: string, description: "CRM contact name for the counterparty, when resolved." }
|
|
32918
32993
|
nextCursor: { type: [string, "null"], format: date-time, description: Pass as `before` for the next page; null on the last page. }
|
|
32919
32994
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
32920
|
-
'403': { description: Not enrolled in the calling beta }
|
|
32921
32995
|
|
|
32922
32996
|
/v1/calls/{id}:
|
|
32923
32997
|
get:
|
|
@@ -32951,7 +33025,6 @@ paths:
|
|
|
32951
33025
|
contactName: { type: string, description: "CRM contact name for the counterparty, when resolved." }
|
|
32952
33026
|
'400': { $ref: '#/components/responses/BadRequest' }
|
|
32953
33027
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
32954
|
-
'403': { description: Not enrolled in the calling beta }
|
|
32955
33028
|
'404': { description: Call not found }
|
|
32956
33029
|
|
|
32957
33030
|
/v1/calls/{id}/recording:
|
|
@@ -32983,7 +33056,6 @@ paths:
|
|
|
32983
33056
|
url: { type: string }
|
|
32984
33057
|
'400': { $ref: '#/components/responses/BadRequest' }
|
|
32985
33058
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
32986
|
-
'403': { description: Not enrolled in the calling beta }
|
|
32987
33059
|
'404': { description: "Call not found, or no recording is available for this call" }
|
|
32988
33060
|
'502': { description: Recording provider lookup failed }
|
|
32989
33061
|
|
|
@@ -44958,7 +45030,19 @@ paths:
|
|
|
44958
45030
|
dynamicValueParameters: { type: object, additionalProperties: { type: string }, description: "LinkedIn only. key -> dynamic value enum (CAMPAIGN_ID, CAMPAIGN_NAME, CREATIVE_ID, ...)." }
|
|
44959
45031
|
customValueParameters: { type: object, additionalProperties: { type: string }, description: "LinkedIn only. key -> static value." }
|
|
44960
45032
|
responses:
|
|
44961
|
-
'200':
|
|
45033
|
+
'200':
|
|
45034
|
+
description: |
|
|
45035
|
+
The tags as they now stand, in the same shape the GET on this path returns:
|
|
45036
|
+
`platform` plus the fields that platform supports. Meta returns `level`,
|
|
45037
|
+
`urlTags` and `templateUrlSpec`; Google returns `trackingUrlTemplate` and
|
|
45038
|
+
`finalUrlSuffix`. A field the platform does not support is absent.
|
|
45039
|
+
content:
|
|
45040
|
+
application/json:
|
|
45041
|
+
schema:
|
|
45042
|
+
type: object
|
|
45043
|
+
properties:
|
|
45044
|
+
platform: { type: string }
|
|
45045
|
+
additionalProperties: true
|
|
44962
45046
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
44963
45047
|
'403':
|
|
44964
45048
|
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
@@ -47736,6 +47820,10 @@ paths:
|
|
|
47736
47820
|
description: 'Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans. Also returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
47737
47821
|
'422':
|
|
47738
47822
|
description: Platform ads connection required (TikTok Ads, X Ads) or missing linked account
|
|
47823
|
+
'501':
|
|
47824
|
+
description: |
|
|
47825
|
+
The requested option is not supported on this platform: `validateOnly` outside Meta,
|
|
47826
|
+
or a shape the adapter does not implement. Carries code `feature_not_available`.
|
|
47739
47827
|
'502':
|
|
47740
47828
|
description: |
|
|
47741
47829
|
The platform rejected the request, or failed to produce media the ad
|
|
@@ -50658,7 +50746,22 @@ paths:
|
|
|
50658
50746
|
description: Where the conversation opens when the ad is tapped.
|
|
50659
50747
|
responses:
|
|
50660
50748
|
'201':
|
|
50661
|
-
description:
|
|
50749
|
+
description: |
|
|
50750
|
+
Ad(s) created and submitted for review. The route shares its handler with
|
|
50751
|
+
`POST /v1/ads/ctwa`, so the body is the same tagged union discriminated by
|
|
50752
|
+
`adType`: `single` carries `{ adType, ad, message }`, and `multi` carries
|
|
50753
|
+
`{ adType, ads, platformCampaignId, platformAdSetId, message }`.
|
|
50754
|
+
content:
|
|
50755
|
+
application/json:
|
|
50756
|
+
schema:
|
|
50757
|
+
oneOf:
|
|
50758
|
+
- $ref: '#/components/schemas/CtwaSingleResponse'
|
|
50759
|
+
- $ref: '#/components/schemas/CtwaMultiResponse'
|
|
50760
|
+
discriminator:
|
|
50761
|
+
propertyName: adType
|
|
50762
|
+
mapping:
|
|
50763
|
+
single: '#/components/schemas/CtwaSingleResponse'
|
|
50764
|
+
multi: '#/components/schemas/CtwaMultiResponse'
|
|
50662
50765
|
'400': { description: Invalid input }
|
|
50663
50766
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
50664
50767
|
'403':
|
|
@@ -50700,7 +50803,22 @@ paths:
|
|
|
50700
50803
|
description: "Website shown as the creative's link. Required: Meta rejects tel: as link_data.link; the phone number rides only the CTA."
|
|
50701
50804
|
responses:
|
|
50702
50805
|
'201':
|
|
50703
|
-
description:
|
|
50806
|
+
description: |
|
|
50807
|
+
Ad(s) created and submitted for review. The route shares its handler with
|
|
50808
|
+
`POST /v1/ads/ctwa`, so the body is the same tagged union discriminated by
|
|
50809
|
+
`adType`: `single` carries `{ adType, ad, message }`, and `multi` carries
|
|
50810
|
+
`{ adType, ads, platformCampaignId, platformAdSetId, message }`.
|
|
50811
|
+
content:
|
|
50812
|
+
application/json:
|
|
50813
|
+
schema:
|
|
50814
|
+
oneOf:
|
|
50815
|
+
- $ref: '#/components/schemas/CtwaSingleResponse'
|
|
50816
|
+
- $ref: '#/components/schemas/CtwaMultiResponse'
|
|
50817
|
+
discriminator:
|
|
50818
|
+
propertyName: adType
|
|
50819
|
+
mapping:
|
|
50820
|
+
single: '#/components/schemas/CtwaSingleResponse'
|
|
50821
|
+
multi: '#/components/schemas/CtwaMultiResponse'
|
|
50704
50822
|
'400': { description: Invalid input }
|
|
50705
50823
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
50706
50824
|
'403':
|
|
@@ -37,7 +37,7 @@ describe 'MessagingAdsApi' do
|
|
|
37
37
|
# Same shape and flow as POST /v1/ads/ctwa, but the CTA is CALL_NOW dialing `phoneNumber` via a tel: link. The ad set is destination_type PHONE_CALL optimizing QUALITY_CALL and the campaign objective defaults to OUTCOME_LEADS. Supports the same single-creative and multi-creative shapes as CTWA.
|
|
38
38
|
# @param create_call_ad_request
|
|
39
39
|
# @param [Hash] opts the optional parameters
|
|
40
|
-
# @return [
|
|
40
|
+
# @return [CreateMessagingAd201Response]
|
|
41
41
|
describe 'create_call_ad test' do
|
|
42
42
|
it 'should work' do
|
|
43
43
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -49,7 +49,7 @@ describe 'MessagingAdsApi' do
|
|
|
49
49
|
# Deprecated: use POST /v1/ads/messaging with `destination: whatsapp`. This endpoint stays available for back-compat; no removal planned. Creates one or more Click-to-WhatsApp (CTWA) ads on Meta under a single campaign and ad set. When tapped, each ad opens a WhatsApp conversation with the business attached to the supplied Facebook Page. The full hierarchy (campaign, ad set, creative(s), ad(s)) is created and activated in one call. The CTA is locked to WHATSAPP_MESSAGE and the destination is hard-coded to api.whatsapp.com/send; Meta resolves the actual WhatsApp number from the Page-to-WA pairing configured in Page settings or Business Manager. Supports two mutually-exclusive shapes: - **Single-creative**: supply top-level `headline`, `body`, and one of `imageUrl` / `video`. Creates 1 campaign + 1 ad set + 1 ad. - **Multi-creative**: supply a `creatives[]` array with N entries (each carrying its own headline, body, and image/video). Creates 1 campaign + 1 ad set + N ads sharing budget and targeting so Meta A/Bs the creatives inside a single auction instead of fragmenting budget across N parallel campaigns. Recommended when launching multiple creative variants for the same campaign. **Attach shape.** Send `adSetId` (with either creative shape) to add the ads to an EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase, the way to refresh a CTWA creative without resetting delivery. The ad set then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests` and `audienceId` are rejected with a 400 alongside it rather than silently dropped. The target ad set's `destination_type` must match the ad's destination (a WhatsApp ad needs a `WHATSAPP` ad set), otherwise Meta would accept an ad that never delivers. Prerequisites enforced by Meta (surfaced as platform_error on failure): the Facebook Page must be paired with a verified WhatsApp Business number, the WhatsApp Business Account must be business-verified, and the Meta access token must carry ads_management.
|
|
50
50
|
# @param ctwa_ad_request_body
|
|
51
51
|
# @param [Hash] opts the optional parameters
|
|
52
|
-
# @return [
|
|
52
|
+
# @return [CreateMessagingAd201Response]
|
|
53
53
|
describe 'create_ctwa_ad test' do
|
|
54
54
|
it 'should work' do
|
|
55
55
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -61,7 +61,7 @@ describe 'MessagingAdsApi' do
|
|
|
61
61
|
# Creates a click-to-message ad; `destination` selects where the tapped ad opens a conversation: WhatsApp, the Page's Messenger inbox or the linked Instagram account's Direct inbox. The ad set is created with the matching destination_type and CONVERSATIONS optimization; the campaign objective defaults to OUTCOME_ENGAGEMENT. Supports single-creative and multi-creative shapes. Supersedes POST /v1/ads/ctwa (deprecated, equivalent to `destination: whatsapp`).
|
|
62
62
|
# @param create_messaging_ad_request
|
|
63
63
|
# @param [Hash] opts the optional parameters
|
|
64
|
-
# @return [
|
|
64
|
+
# @return [CreateMessagingAd201Response]
|
|
65
65
|
describe 'create_messaging_ad test' do
|
|
66
66
|
it 'should work' do
|
|
67
67
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -146,7 +146,7 @@ describe 'TrackingTagsApi' do
|
|
|
146
146
|
# @param ad_id
|
|
147
147
|
# @param update_ad_tracking_tags_request
|
|
148
148
|
# @param [Hash] opts the optional parameters
|
|
149
|
-
# @return [
|
|
149
|
+
# @return [UpdateAdTrackingTags200Response]
|
|
150
150
|
describe 'update_ad_tracking_tags test' do
|
|
151
151
|
it 'should work' do
|
|
152
152
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
data/spec/models/{create_ctwa_ad201_response_spec.rb → create_messaging_ad201_response_spec.rb}
RENAMED
|
@@ -14,10 +14,10 @@ require 'spec_helper'
|
|
|
14
14
|
require 'json'
|
|
15
15
|
require 'date'
|
|
16
16
|
|
|
17
|
-
# Unit tests for Zernio::
|
|
17
|
+
# Unit tests for Zernio::CreateMessagingAd201Response
|
|
18
18
|
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
19
|
# Please update as you see appropriate
|
|
20
|
-
describe Zernio::
|
|
20
|
+
describe Zernio::CreateMessagingAd201Response do
|
|
21
21
|
describe '.openapi_one_of' do
|
|
22
22
|
it 'lists the items referenced in the oneOf array' do
|
|
23
23
|
expect(described_class.openapi_one_of).to_not be_empty
|
|
@@ -18,31 +18,15 @@ require 'date'
|
|
|
18
18
|
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
19
|
# Please update as you see appropriate
|
|
20
20
|
describe Zernio::CreatePost200Response do
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
it 'should create an instance of CreatePost200Response' do
|
|
25
|
-
# uncomment below to test the instance creation
|
|
26
|
-
#expect(instance).to be_instance_of(Zernio::CreatePost200Response)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
describe 'test attribute "dry_run"' do
|
|
31
|
-
it 'should work' do
|
|
32
|
-
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
21
|
+
describe '.openapi_one_of' do
|
|
22
|
+
it 'lists the items referenced in the oneOf array' do
|
|
23
|
+
expect(described_class.openapi_one_of).to_not be_empty
|
|
33
24
|
end
|
|
34
25
|
end
|
|
35
26
|
|
|
36
|
-
describe '
|
|
37
|
-
it '
|
|
27
|
+
describe '.build' do
|
|
28
|
+
it 'returns the correct model' do
|
|
38
29
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
39
30
|
end
|
|
40
31
|
end
|
|
41
|
-
|
|
42
|
-
describe 'test attribute "tiktok"' 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
32
|
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
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 Zernio::TikTokDryRunVerdict
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::TikTokDryRunVerdict do
|
|
21
|
+
#let(:instance) { Zernio::TikTokDryRunVerdict.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of TikTokDryRunVerdict' do
|
|
24
|
+
it 'should create an instance of TikTokDryRunVerdict' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::TikTokDryRunVerdict)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "dry_run"' 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 "can_publish"' 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 "tiktok"' 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
|
+
end
|
|
@@ -14,16 +14,16 @@ require 'spec_helper'
|
|
|
14
14
|
require 'json'
|
|
15
15
|
require 'date'
|
|
16
16
|
|
|
17
|
-
# Unit tests for Zernio::
|
|
17
|
+
# Unit tests for Zernio::TikTokDryRunVerdictTiktokInner
|
|
18
18
|
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
19
|
# Please update as you see appropriate
|
|
20
|
-
describe Zernio::
|
|
21
|
-
#let(:instance) { Zernio::
|
|
20
|
+
describe Zernio::TikTokDryRunVerdictTiktokInner do
|
|
21
|
+
#let(:instance) { Zernio::TikTokDryRunVerdictTiktokInner.new }
|
|
22
22
|
|
|
23
|
-
describe 'test an instance of
|
|
24
|
-
it 'should create an instance of
|
|
23
|
+
describe 'test an instance of TikTokDryRunVerdictTiktokInner' do
|
|
24
|
+
it 'should create an instance of TikTokDryRunVerdictTiktokInner' do
|
|
25
25
|
# uncomment below to test the instance creation
|
|
26
|
-
#expect(instance).to be_instance_of(Zernio::
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::TikTokDryRunVerdictTiktokInner)
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
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 Zernio::UpdateAdTrackingTags200Response
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::UpdateAdTrackingTags200Response do
|
|
21
|
+
#let(:instance) { Zernio::UpdateAdTrackingTags200Response.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of UpdateAdTrackingTags200Response' do
|
|
24
|
+
it 'should create an instance of UpdateAdTrackingTags200Response' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::UpdateAdTrackingTags200Response)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "platform"' 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
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
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 Zernio::UpdateGoogleBusinessLocationDetailsRequestAdWordsLocationExtensions
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::UpdateGoogleBusinessLocationDetailsRequestAdWordsLocationExtensions do
|
|
21
|
+
#let(:instance) { Zernio::UpdateGoogleBusinessLocationDetailsRequestAdWordsLocationExtensions.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of UpdateGoogleBusinessLocationDetailsRequestAdWordsLocationExtensions' do
|
|
24
|
+
it 'should create an instance of UpdateGoogleBusinessLocationDetailsRequestAdWordsLocationExtensions' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::UpdateGoogleBusinessLocationDetailsRequestAdWordsLocationExtensions)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "ad_phone"' 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
|
+
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 Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
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 Zernio::UpdateGoogleBusinessLocationDetailsRequestLatlng
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::UpdateGoogleBusinessLocationDetailsRequestLatlng do
|
|
21
|
+
#let(:instance) { Zernio::UpdateGoogleBusinessLocationDetailsRequestLatlng.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of UpdateGoogleBusinessLocationDetailsRequestLatlng' do
|
|
24
|
+
it 'should create an instance of UpdateGoogleBusinessLocationDetailsRequestLatlng' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::UpdateGoogleBusinessLocationDetailsRequestLatlng)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "latitude"' 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 "longitude"' 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
|
|
@@ -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 Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
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 Zernio::UpdateGoogleBusinessLocationDetailsRequestMoreHoursInner
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::UpdateGoogleBusinessLocationDetailsRequestMoreHoursInner do
|
|
21
|
+
#let(:instance) { Zernio::UpdateGoogleBusinessLocationDetailsRequestMoreHoursInner.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of UpdateGoogleBusinessLocationDetailsRequestMoreHoursInner' do
|
|
24
|
+
it 'should create an instance of UpdateGoogleBusinessLocationDetailsRequestMoreHoursInner' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::UpdateGoogleBusinessLocationDetailsRequestMoreHoursInner)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "hours_type_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 "periods"' 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
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
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 Zernio::UpdateGoogleBusinessLocationDetailsRequestOpenInfo
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::UpdateGoogleBusinessLocationDetailsRequestOpenInfo do
|
|
21
|
+
#let(:instance) { Zernio::UpdateGoogleBusinessLocationDetailsRequestOpenInfo.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of UpdateGoogleBusinessLocationDetailsRequestOpenInfo' do
|
|
24
|
+
it 'should create an instance of UpdateGoogleBusinessLocationDetailsRequestOpenInfo' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::UpdateGoogleBusinessLocationDetailsRequestOpenInfo)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "status"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
# validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["OPEN", "CLOSED_PERMANENTLY", "CLOSED_TEMPORARILY"])
|
|
34
|
+
# validator.allowable_values.each do |value|
|
|
35
|
+
# expect { instance.status = value }.not_to raise_error
|
|
36
|
+
# end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe 'test attribute "opening_date"' do
|
|
41
|
+
it 'should work' do
|
|
42
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|