zernio-sdk 0.0.550 → 0.0.552

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +73 -75
  3. data/docs/AdAccountsApi.md +915 -0
  4. data/docs/AdCampaignsApi.md +615 -15
  5. data/docs/AdCreativesApi.md +815 -0
  6. data/docs/AdInsightsApi.md +415 -0
  7. data/docs/AdTargetingApi.md +371 -0
  8. data/docs/AnalyticsApi.md +7 -7
  9. data/docs/BoostPostRequestTracking.md +1 -1
  10. data/docs/{CreateLeadFormRequestQuestionsInnerOptionsInner.md → BoostPostRequestTrackingUrlTagsInner.md} +2 -2
  11. data/docs/ConversionsApi.md +890 -0
  12. data/docs/CreateLeadFormRequestQuestionsInner.md +1 -1
  13. data/docs/LeadGenApi.md +527 -0
  14. data/docs/MessagingAdsApi.md +215 -0
  15. data/docs/ReachAndFrequencyApi.md +294 -0
  16. data/docs/TrackingTagsApi.md +141 -0
  17. data/docs/YouTubeDailyViewsResponse.md +2 -0
  18. data/docs/YouTubeDemographicsResponse.md +2 -0
  19. data/docs/YouTubeVideoRetentionResponse.md +2 -0
  20. data/lib/zernio-sdk/api/ad_accounts_api.rb +958 -0
  21. data/lib/zernio-sdk/api/ad_campaigns_api.rb +618 -12
  22. data/lib/zernio-sdk/api/ad_creatives_api.rb +826 -0
  23. data/lib/zernio-sdk/api/ad_insights_api.rb +446 -0
  24. data/lib/zernio-sdk/api/ad_targeting_api.rb +404 -0
  25. data/lib/zernio-sdk/api/analytics_api.rb +8 -8
  26. data/lib/zernio-sdk/api/conversions_api.rb +936 -0
  27. data/lib/zernio-sdk/api/lead_gen_api.rb +547 -0
  28. data/lib/zernio-sdk/api/messaging_ads_api.rb +226 -0
  29. data/lib/zernio-sdk/api/reach_and_frequency_api.rb +316 -0
  30. data/lib/zernio-sdk/api/tracking_tags_api.rb +137 -0
  31. data/lib/zernio-sdk/models/boost_post_request_tracking.rb +5 -2
  32. data/lib/zernio-sdk/models/{create_lead_form_request_questions_inner_options_inner.rb → boost_post_request_tracking_url_tags_inner.rb} +3 -3
  33. data/lib/zernio-sdk/models/create_lead_form_request_questions_inner.rb +1 -1
  34. data/lib/zernio-sdk/models/you_tube_daily_views_response.rb +11 -1
  35. data/lib/zernio-sdk/models/you_tube_demographics_response.rb +11 -1
  36. data/lib/zernio-sdk/models/you_tube_video_retention_response.rb +11 -1
  37. data/lib/zernio-sdk/version.rb +1 -1
  38. data/lib/zernio-sdk.rb +9 -2
  39. data/openapi.yaml +329 -163
  40. data/spec/api/ad_accounts_api_spec.rb +206 -0
  41. data/spec/api/ad_campaigns_api_spec.rb +119 -6
  42. data/spec/api/ad_creatives_api_spec.rb +182 -0
  43. data/spec/api/ad_insights_api_spec.rb +120 -0
  44. data/spec/api/ad_targeting_api_spec.rb +101 -0
  45. data/spec/api/analytics_api_spec.rb +4 -4
  46. data/spec/api/conversions_api_spec.rb +199 -0
  47. data/spec/api/lead_gen_api_spec.rb +131 -0
  48. data/spec/api/messaging_ads_api_spec.rb +71 -0
  49. data/spec/api/reach_and_frequency_api_spec.rb +87 -0
  50. data/spec/api/tracking_tags_api_spec.rb +25 -0
  51. data/spec/models/{create_lead_form_request_questions_inner_options_inner_spec.rb → boost_post_request_tracking_url_tags_inner_spec.rb} +6 -6
  52. data/spec/models/you_tube_daily_views_response_spec.rb +6 -0
  53. data/spec/models/you_tube_demographics_response_spec.rb +6 -0
  54. data/spec/models/you_tube_video_retention_response_spec.rb +6 -0
  55. metadata +38 -10
  56. data/docs/AdsApi.md +0 -5278
  57. data/lib/zernio-sdk/api/ads_api.rb +0 -5391
  58. data/spec/api/ads_api_spec.rb +0 -1015
@@ -0,0 +1,120 @@
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.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
+
16
+ # Unit tests for Zernio::AdInsightsApi
17
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
18
+ # Please update as you see appropriate
19
+ describe 'AdInsightsApi' do
20
+ before do
21
+ # run before each test
22
+ @api_instance = Zernio::AdInsightsApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of AdInsightsApi' do
30
+ it 'should create an instance of AdInsightsApi' do
31
+ expect(@api_instance).to be_instance_of(Zernio::AdInsightsApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for create_ad_insights_report
36
+ # Submit an async insights report run
37
+ # Submits an asynchronous Meta insights report. Same query surface as GET /v1/ads/insights, but in the JSON body; Meta processes the report server-side, which is the right choice for long ranges or large accounts where the sync query is slow or rate-limited. Returns a `reportRunId` to poll via GET /v1/ads/insights/reports/{reportRunId}.
38
+ # @param create_ad_insights_report_request
39
+ # @param [Hash] opts the optional parameters
40
+ # @return [CreateAdInsightsReport202Response]
41
+ describe 'create_ad_insights_report test' do
42
+ it 'should work' do
43
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
44
+ end
45
+ end
46
+
47
+ # unit tests for get_ad_analytics
48
+ # Get ad analytics
49
+ # Returns detailed performance analytics for an ad. Includes summary metrics, a daily timeline over the requested date range, and optional demographic breakdowns (Meta and TikTok only). If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max.
50
+ # @param ad_id
51
+ # @param [Hash] opts the optional parameters
52
+ # @option opts [Date] :from_date Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
53
+ # @option opts [Date] :to_date End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
54
+ # @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region. **TikTok**: gender, age, country_code, platform, ac, language. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
55
+ # @return [GetAdAnalytics200Response]
56
+ describe 'get_ad_analytics test' do
57
+ it 'should work' do
58
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
59
+ end
60
+ end
61
+
62
+ # unit tests for get_ad_insights_report
63
+ # Poll an async insights report run
64
+ # Status and results for a report run created via POST /v1/ads/insights/reports. While the job runs, returns `status` and `percentCompletion`. Once `status` is \"Job Completed\" the response also carries a `data` page, cursor-paginated via `limit` / `after`.
65
+ # @param report_run_id
66
+ # @param account_id Zernio SocialAccount id used to resolve the Meta token (must be the same connection that created the run).
67
+ # @param [Hash] opts the optional parameters
68
+ # @option opts [Integer] :limit
69
+ # @option opts [String] :after
70
+ # @return [GetAdInsightsReport200Response]
71
+ describe 'get_ad_insights_report test' do
72
+ it 'should work' do
73
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
74
+ end
75
+ end
76
+
77
+ # unit tests for get_campaign_analytics
78
+ # Get campaign analytics
79
+ # Returns performance analytics for a whole campaign in one call: summary metrics, a daily timeline over the requested date range (summed across the campaign's ads), and optional demographic breakdowns. Breakdowns are fetched live from Meta at the campaign level (one call per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level age/gender/etc. without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass `platform` when a campaign id could be ambiguous across platforms. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max.
80
+ # @param campaign_id Platform campaign id (platformCampaignId).
81
+ # @param [Hash] opts the optional parameters
82
+ # @option opts [String] :platform Disambiguate when the campaign id exists across platforms (e.g. facebook, instagram).
83
+ # @option opts [Date] :from_date Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
84
+ # @option opts [Date] :to_date End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
85
+ # @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
86
+ # @return [GetCampaignAnalytics200Response]
87
+ describe 'get_campaign_analytics test' do
88
+ it 'should work' do
89
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
90
+ end
91
+ end
92
+
93
+ # unit tests for query_ad_insights
94
+ # Flexible live insights query
95
+ # Live, flexible insights query against Meta's Graph API. Unlike GET /v1/ads/{adId}/analytics (fixed metric set, cached), this forwards caller-chosen `fields`, `breakdowns` and `filtering` to any Meta insights node and returns Meta's rows verbatim. `objectId` selects the node: an ad account, campaign, ad set or ad platform id. `level` sets row granularity independently of the node. Semantic validation is Meta's: an unknown field or invalid breakdown combination returns a 400 carrying Meta's message. For long ranges or agency-scale accounts prefer the async variant (POST /v1/ads/insights/reports).
96
+ # @param account_id Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
97
+ # @param object_id Meta insights node: act_<n>, campaign id, ad set id or ad id.
98
+ # @param [Hash] opts the optional parameters
99
+ # @option opts [String] :level Row granularity
100
+ # @option opts [String] :fields Comma-separated Graph insights fields (e.g. spend,impressions,frequency,website_purchase_roas). Omitted = Meta's default set.
101
+ # @option opts [String] :breakdowns Comma-separated Graph breakdowns (e.g. age,gender or publisher_platform).
102
+ # @option opts [String] :action_breakdowns Comma-separated Graph action breakdowns. Segments the actions[] arrays in each row.
103
+ # @option opts [String] :action_attribution_windows Comma-separated Meta attribution windows. Action values are returned keyed per window.
104
+ # @option opts [String] :action_report_time When actions are counted: impression, conversion or mixed.
105
+ # @option opts [Boolean] :use_unified_attribution_setting Use the ad sets' own attribution settings for action counting.
106
+ # @option opts [String] :filtering JSON array of Meta filter objects: [{\"field\", \"operator\", \"value\"}]. Applied server-side by Meta.
107
+ # @option opts [String] :date_preset Meta date_preset (e.g. last_7d, last_30d, this_month). Mutually exclusive with fromDate/toDate.
108
+ # @option opts [Date] :from_date Start of range (YYYY-MM-DD); requires toDate.
109
+ # @option opts [Date] :to_date End of range (YYYY-MM-DD); requires fromDate.
110
+ # @option opts [String] :time_increment Days per row (1-90), monthly, or all_days.
111
+ # @option opts [Integer] :limit Rows per page
112
+ # @option opts [String] :after Cursor from paging.after of the previous page.
113
+ # @return [QueryAdInsights200Response]
114
+ describe 'query_ad_insights test' do
115
+ it 'should work' do
116
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
117
+ end
118
+ end
119
+
120
+ end
@@ -0,0 +1,101 @@
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.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
+
16
+ # Unit tests for Zernio::AdTargetingApi
17
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
18
+ # Please update as you see appropriate
19
+ describe 'AdTargetingApi' do
20
+ before do
21
+ # run before each test
22
+ @api_instance = Zernio::AdTargetingApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of AdTargetingApi' do
30
+ it 'should create an instance of AdTargetingApi' do
31
+ expect(@api_instance).to be_instance_of(Zernio::AdTargetingApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for estimate_ad_reach
36
+ # Estimate audience reach
37
+ # Returns a normalized pre-flight audience-size estimate for a targeting spec, before any campaign is created. Backed by each platform's native reach API (Meta `delivery_estimate`, LinkedIn `audienceCounts`, X `audience_summary`, Pinterest `audience_sizing`). Platforms without a usable pre-flight reach API (Google Search/Display, TikTok) return `available: false` with no bounds, so clients can hide or grey out the estimate rather than treat the absence as an error.
38
+ # @param estimate_ad_reach_request
39
+ # @param [Hash] opts the optional parameters
40
+ # @return [EstimateAdReach200Response]
41
+ describe 'estimate_ad_reach test' do
42
+ it 'should work' do
43
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
44
+ end
45
+ end
46
+
47
+ # unit tests for get_linked_in_bid_pricing
48
+ # Suggested bid and budget bounds
49
+ # LinkedIn-only. Returns the suggested bid and bid limits for a targeting spec, plus the daily-budget bounds LinkedIn will accept. Use it before creating a campaign to pick a bid inside the allowed range and warn the user if their daily budget is below the minimum. Wraps LinkedIn's `adBudgetPricing` finder. Non-LinkedIn accounts return `available: false` so clients can hide the pricing UI without treating it as a failure.
50
+ # @param get_linked_in_bid_pricing_request
51
+ # @param [Hash] opts the optional parameters
52
+ # @return [GetLinkedInBidPricing200Response]
53
+ describe 'get_linked_in_bid_pricing test' do
54
+ it 'should work' do
55
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
56
+ end
57
+ end
58
+
59
+ # unit tests for get_linked_in_supply_forecast
60
+ # Impressions, clicks and spend forecast
61
+ # LinkedIn-only. Forecasted impressions, clicks, spend and ~20 other metrics for a targeting spec over a time range. Wraps LinkedIn's `adSupplyForecasts` finder. Each returned series carries a `metricType` (IMPRESSION, CLICK, SPENDING, MAX_POTENTIAL_BUDGET, COST_PER_MILLION_IMPRESSIONS, ...) and a `granularity` (DAILY, SEVEN_DAY, THIRTY_DAY, CUSTOM). LinkedIn caps the daily spending forecast at 1.2x the daily budget and returns 0 once the total budget is exhausted. Non-LinkedIn accounts return `available: false`.
62
+ # @param get_linked_in_supply_forecast_request
63
+ # @param [Hash] opts the optional parameters
64
+ # @return [GetLinkedInSupplyForecast200Response]
65
+ describe 'get_linked_in_supply_forecast test' do
66
+ it 'should work' do
67
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
68
+ end
69
+ end
70
+
71
+ # unit tests for search_ad_interests
72
+ # Search targeting interests
73
+ # Deprecated alias for `GET /v1/ads/targeting/search?dimension=interest`. Kept for backward compatibility, it returns the legacy `{ interests: [...] }` shape rather than the normalized `{ results: [...] }`. New integrations should use `GET /v1/ads/targeting/search` with `dimension=interest`.
74
+ # @param q Search query
75
+ # @param account_id Social account ID
76
+ # @param [Hash] opts the optional parameters
77
+ # @return [SearchAdInterests200Response]
78
+ describe 'search_ad_interests test' do
79
+ it 'should work' do
80
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
81
+ end
82
+ end
83
+
84
+ # unit tests for search_ad_targeting
85
+ # Search targeting options
86
+ # Resolve a human-readable query into the platform's opaque targeting ids used in the `TargetingSpec` (`countries`/`regions`/`cities`/`zips`/`metros` geo keys, and `interests`/`behaviors` entity ids) on `POST /v1/ads/create`, `POST /v1/ads/targeting/reach-estimate`, and `saved_targeting` audiences. The `dimension` param selects what is searched, `geo` (locations, further scoped by `geoType`), `interest`, `behavior`, or `income`. Availability of each dimension varies by platform (e.g. behaviours are Meta/TikTok only). Results are normalized across platforms into a single shape, so the same client code consumes Meta, TikTok, LinkedIn, X, Pinterest, and Google results. TikTok geo searches return every matching level in one list (`type` is `country`, `region`, `city`, `district`, or `metro` for DMA areas) — `geoType` is not applied. Results are scoped to the advertiser's targetable markets, and every id is usable in `regions`/`cities`/`metros` keys on `POST /v1/ads/create`. For geo queries, `q` should contain only the locality name (e.g. `\"Amsterdam\"`, not `\"Amsterdam, NL\"`). Use `countryCode` to disambiguate.
87
+ # @param account_id Social account ID (a connected account on the target ad platform).
88
+ # @param q Search query. For geo, the locality name only (no region/country suffix).
89
+ # @param [Hash] opts the optional parameters
90
+ # @option opts [String] :dimension What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities, `income` resolves income-tier options. Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
91
+ # @option opts [String] :geo_type Only used when `dimension=geo`. The kind of location to resolve. Defaults to `city`.
92
+ # @option opts [String] :country_code ISO 3166-1 alpha-2 country code (e.g. NL) to scope a geo search.
93
+ # @option opts [Integer] :limit Maximum results to return.
94
+ # @return [SearchAdTargeting200Response]
95
+ describe 'search_ad_targeting test' do
96
+ it 'should work' do
97
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
98
+ end
99
+ end
100
+
101
+ end
@@ -347,12 +347,12 @@ describe 'AnalyticsApi' do
347
347
 
348
348
  # unit tests for get_you_tube_daily_views
349
349
  # Get YouTube daily views
350
- # Returns daily view counts for a YouTube video including views, watch time, and subscriber changes. Requires yt-analytics.readonly scope (re-authorization may be needed). Data has a 2-3 day delay. Max 90 days, defaults to last 30 days.
350
+ # Returns daily view counts for a YouTube video including views, watch time, and subscriber changes. Requires yt-analytics.readonly scope (re-authorization may be needed). YouTube finalizes analytics with a ~3-day delay; by default only finalized days are returned, and an explicit endDate can reach into the delay window (see the endDate parameter). Max 90 days, defaults to last 30 days.
351
351
  # @param video_id The YouTube video ID (e.g., \"dQw4w9WgXcQ\")
352
352
  # @param account_id The Zernio account ID for the YouTube account
353
353
  # @param [Hash] opts the optional parameters
354
354
  # @option opts [Date] :start_date Start date (YYYY-MM-DD). Defaults to 30 days ago.
355
- # @option opts [Date] :end_date End date (YYYY-MM-DD). Defaults to 3 days ago (YouTube data latency).
355
+ # @option opts [Date] :end_date End date (YYYY-MM-DD). Defaults to 3 days ago, the newest fully finalized day (YouTube finalizes analytics with a ~3-day delay). An explicit endDate is honored up to today: days inside the delay window are provisional and may still be revised by YouTube (see provisionalSince in the response), and days YouTube has not processed yet are omitted from dailyViews.
356
356
  # @return [YouTubeDailyViewsResponse]
357
357
  describe 'get_you_tube_daily_views test' do
358
358
  it 'should work' do
@@ -368,7 +368,7 @@ describe 'AnalyticsApi' do
368
368
  # @option opts [String] :video_id YouTube video ID. When provided, demographics are scoped to this single video (must belong to the connected channel; otherwise 404 video_not_found).
369
369
  # @option opts [String] :breakdown Comma-separated list of demographic dimensions: age, gender, country. Defaults to all three if omitted.
370
370
  # @option opts [Date] :start_date Start date in YYYY-MM-DD format. Defaults to 90 days ago, or to the video's publish date (lifetime) when videoId is provided.
371
- # @option opts [Date] :end_date End date in YYYY-MM-DD format. Defaults to 3 days ago (YouTube data latency).
371
+ # @option opts [Date] :end_date End date (YYYY-MM-DD). Defaults to 3 days ago, the newest fully finalized day (YouTube finalizes analytics with a ~3-day delay). An explicit endDate is honored up to today: days inside the delay window are provisional and may still be revised by YouTube (see provisionalSince in the response).
372
372
  # @return [YouTubeDemographicsResponse]
373
373
  describe 'get_you_tube_demographics test' do
374
374
  it 'should work' do
@@ -383,7 +383,7 @@ describe 'AnalyticsApi' do
383
383
  # @param account_id The Zernio account ID for the YouTube account
384
384
  # @param [Hash] opts the optional parameters
385
385
  # @option opts [Date] :start_date Start date (YYYY-MM-DD). Defaults to the video's publish date (lifetime curve).
386
- # @option opts [Date] :end_date End date (YYYY-MM-DD). Defaults to 3 days ago (YouTube data latency).
386
+ # @option opts [Date] :end_date End date (YYYY-MM-DD). Defaults to 3 days ago, the newest fully finalized day (YouTube finalizes analytics with a ~3-day delay). An explicit endDate is honored up to today: days inside the delay window are provisional and may still be revised by YouTube (see provisionalSince in the response).
387
387
  # @return [YouTubeVideoRetentionResponse]
388
388
  describe 'get_you_tube_video_retention test' do
389
389
  it 'should work' do
@@ -0,0 +1,199 @@
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.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
+
16
+ # Unit tests for Zernio::ConversionsApi
17
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
18
+ # Please update as you see appropriate
19
+ describe 'ConversionsApi' do
20
+ before do
21
+ # run before each test
22
+ @api_instance = Zernio::ConversionsApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of ConversionsApi' do
30
+ it 'should create an instance of ConversionsApi' do
31
+ expect(@api_instance).to be_instance_of(Zernio::ConversionsApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for add_conversion_associations
36
+ # Associate campaigns
37
+ # Associate one or more campaigns with this conversion rule. Returns a per-campaign success/failure result so callers can retry only the rows that failed (e.g. wrong campaign type for the rule's objective).
38
+ # @param account_id
39
+ # @param destination_id
40
+ # @param add_conversion_associations_request
41
+ # @param [Hash] opts the optional parameters
42
+ # @return [AddConversionAssociations200Response]
43
+ describe 'add_conversion_associations test' do
44
+ it 'should work' do
45
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
46
+ end
47
+ end
48
+
49
+ # unit tests for adjust_conversions
50
+ # Adjust uploaded conversions
51
+ # Adjust conversions that were previously uploaded via `POST /v1/ads/conversions` — retract them, restate their value, or enhance them with first-party data. Requires the Ads add-on. **Google Ads only.** Google handles adjustments through the classic Google Ads API (`ConversionAdjustmentUploadService`); the Data Manager `ingestEvents` path used for sending conversions is ingest-only. Meta and LinkedIn have no equivalent, so this endpoint returns `405` for those platforms. Adjustment types: - `RETRACTION` — remove the conversion entirely (refund, chargeback, cancelled order, churn). - `RESTATEMENT` — change the conversion's value (upgrade / downgrade / partial refund). Send the corrected **total** value in `restatementValue` (not a delta). - `ENHANCEMENT` — attach first-party identifiers (hashed email / phone) to an existing conversion (enhanced conversions applied after the fact). Identifying the original conversion (per adjustment): - `orderId` — the transaction ID you sent as `eventId` on the original conversion. Recommended, and **required** for `ENHANCEMENT`. - or `gclid` + `conversionTime` — the click ID and the original conversion's time (unix seconds). Not available for `ENHANCEMENT`. `destinationId` is the conversion action resource name, e.g. `customers/1234567890/conversionActions/987654321` (same value you send to `POST /v1/ads/conversions`). PII in `user` is hashed with SHA-256 server-side (Gmail-specific normalization included). Send plaintext. Times are unix seconds; we convert to Google's required `yyyy-MM-dd HH:mm:ss+00:00` format. Up to 2000 adjustments per request; partial failure is supported (inspect `adjustmentsFailed` / `failures[]`).
52
+ # @param adjust_conversions_request
53
+ # @param [Hash] opts the optional parameters
54
+ # @return [AdjustConversions200Response]
55
+ describe 'adjust_conversions 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
+
61
+ # unit tests for create_conversion_destination
62
+ # Create a conversion destination
63
+ # Create a new conversion destination on the platform. Supported for LinkedIn (conversion rule) and Google Ads (conversion action). Meta manages destinations in its own UI and returns 405. **LinkedIn:** creation is NOT idempotent. A retry creates a second destination. Deduplicate before retrying. **Google Ads:** calling with a name that already exists reuses the existing conversion action transparently (the response is identical to a fresh create). Calling with the same name but a different category returns a typed `IDEMPOTENCY_CONFLICT` (409) rather than silently returning the mismatched action. **LinkedIn:** the rule is created with `conversionMethod=CONVERSIONS_API` and (by default) auto-associated with all of the ad account's campaigns via `autoAssociationType=ALL_CAMPAIGNS`. Pass `autoAssociationType: NONE` to opt out and manage associations explicitly via the associations endpoints below. 365-day attribution windows are only valid for `SUBMIT_APPLICATION`, `PURCHASE`, `ADD_TO_CART`, `QUALIFIED_LEAD`, and `LEAD` rule types; the API rejects other combinations locally. **Google Ads:** the conversion action is created with `type=UPLOAD_CLICKS` (required for API-uploaded offline conversions, immutable after creation). The `type` field carries the Google `ConversionActionCategory` enum value, e.g. `PURCHASE`, `SUBSCRIBE_PAID`, `SIGNUP`, `IMPORTED_LEAD`, `BOOK_APPOINTMENT`. Unified standard event names (e.g. `Purchase`, `Subscribe`, `CompleteRegistration`, `Lead`, `Schedule`) are resolved to their Google category equivalents automatically. The action defaults to secondary (non-primary) to avoid immediately steering Smart Bidding; pass `primaryForGoal: true` to opt in.
64
+ # @param account_id SocialAccount ID (linkedinads or googleads).
65
+ # @param create_conversion_destination_request
66
+ # @param [Hash] opts the optional parameters
67
+ # @return [CreateConversionDestination201Response]
68
+ describe 'create_conversion_destination test' do
69
+ it 'should work' do
70
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
71
+ end
72
+ end
73
+
74
+ # unit tests for delete_conversion_destination
75
+ # Delete a conversion destination
76
+ # LinkedIn-only today. LinkedIn does not expose hard-delete on conversion rules — what their UI calls \"delete\" is the same `enabled: false` flip we apply here. The rule remains fetchable via GET with `status: 'inactive'`; the unified discovery endpoint hides it by default. `adAccountId` may be passed as a query parameter (recommended) or as a JSON body field for clients that can send DELETE bodies.
77
+ # @param account_id
78
+ # @param destination_id
79
+ # @param [Hash] opts the optional parameters
80
+ # @option opts [String] :ad_account_id Required as query OR in JSON body.
81
+ # @return [nil]
82
+ describe 'delete_conversion_destination test' do
83
+ it 'should work' do
84
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
85
+ end
86
+ end
87
+
88
+ # unit tests for get_conversion_destination
89
+ # Get a conversion destination
90
+ # LinkedIn-only today. Returns the full destination record for one conversion rule. The `adAccountId` query parameter is required because LinkedIn rules are scoped to a sponsored ad account.
91
+ # @param account_id
92
+ # @param destination_id
93
+ # @param ad_account_id Numeric ID or full `urn:li:sponsoredAccount:{id}` URN.
94
+ # @param [Hash] opts the optional parameters
95
+ # @return [GetConversionDestination200Response]
96
+ describe 'get_conversion_destination test' do
97
+ it 'should work' do
98
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
99
+ end
100
+ end
101
+
102
+ # unit tests for get_conversion_metrics
103
+ # Get attribution metrics
104
+ # LinkedIn-only today. Returns conversion-attribution metrics (`externalWebsiteConversions`, `externalWebsitePostClickConversions`, `externalWebsitePostViewConversions`, `conversionValueInLocalCurrency`, `qualifiedLeads`, `costInLocalCurrency`) bucketed by date. Date-range constraints (passed through from LinkedIn): - `granularity=DAILY` is retained for ~6 months only - `granularity=ALL` with a range > 6 months auto-rounds to month boundaries - `granularity=MONTHLY`/`YEARLY` retains 24 months Throttle: LinkedIn caps adAnalytics at 45M metric values per 5-minute window across the calling token. Single-rule queries are well within that limit; surfaces as 429 if hit.
105
+ # @param account_id
106
+ # @param destination_id
107
+ # @param ad_account_id
108
+ # @param start_date
109
+ # @param [Hash] opts the optional parameters
110
+ # @option opts [String] :end_date
111
+ # @option opts [String] :granularity
112
+ # @return [GetConversionMetrics200Response]
113
+ describe 'get_conversion_metrics test' do
114
+ it 'should work' do
115
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
116
+ end
117
+ end
118
+
119
+ # unit tests for get_conversions_quality
120
+ # Get Event Match Quality
121
+ # Reads Meta Event Match Quality (EMQ) and pixel↔CAPI event coverage for a pixel/dataset, live from Meta's Dataset Quality API. Web events only (a Meta limitation). Meta-only; other platforms return 405. Requires the Ads add-on.
122
+ # @param account_id SocialAccount _id (must be a metaads account).
123
+ # @param destination_id Meta pixel/dataset ID.
124
+ # @param [Hash] opts the optional parameters
125
+ # @return [GetConversionsQuality200Response]
126
+ describe 'get_conversions_quality test' do
127
+ it 'should work' do
128
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
129
+ end
130
+ end
131
+
132
+ # unit tests for list_conversion_associations
133
+ # List associated campaigns
134
+ # LinkedIn-only today. Returns the campaigns currently associated with this conversion rule. Note that auto-association on rule creation runs once at create time; campaigns created after the rule still need explicit association.
135
+ # @param account_id
136
+ # @param destination_id
137
+ # @param ad_account_id
138
+ # @param [Hash] opts the optional parameters
139
+ # @return [ListConversionAssociations200Response]
140
+ describe 'list_conversion_associations test' do
141
+ it 'should work' do
142
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
143
+ end
144
+ end
145
+
146
+ # unit tests for list_conversion_destinations
147
+ # List conversion destinations
148
+ # Returns the list of pixels (Meta), conversion actions (Google), or conversion rules (LinkedIn) accessible to the connected ads account. Use the returned `id` as `destinationId` when posting to `POST /v1/ads/conversions`. For Google and LinkedIn, each destination's `type` reflects the conversion type (PURCHASE, LEAD, SIGN_UP, etc.) — the event type is locked to the destination. For Meta, `type` is absent: pixels accept any event name per request. For LinkedIn, destinations are returned across every sponsored ad account the connected token can access; the `adAccountId` field on each destination identifies the parent ad account and is required for subsequent CRUD calls (update, delete, associations, metrics).
149
+ # @param account_id SocialAccount ID (metaads, googleads, linkedinads, or tiktokads).
150
+ # @param [Hash] opts the optional parameters
151
+ # @return [ListConversionDestinations200Response]
152
+ describe 'list_conversion_destinations test' do
153
+ it 'should work' do
154
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
155
+ end
156
+ end
157
+
158
+ # unit tests for remove_conversion_associations
159
+ # Remove associated campaigns
160
+ # Remove one or more campaign associations from this conversion rule. Pass `adAccountId` and `campaignIds` as query parameters (`campaignIds` is comma-separated). The route also accepts a JSON body with the same fields for clients that prefer DELETE-with-body, but the documented surface is query-only because some SDK code generators (e.g. Python) collapse query + body parameters with the same name into a single kwarg.
161
+ # @param account_id
162
+ # @param destination_id
163
+ # @param ad_account_id
164
+ # @param campaign_ids Comma-separated list of campaign IDs.
165
+ # @param [Hash] opts the optional parameters
166
+ # @return [RemoveConversionAssociations200Response]
167
+ describe 'remove_conversion_associations test' do
168
+ it 'should work' do
169
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
170
+ end
171
+ end
172
+
173
+ # unit tests for send_conversions
174
+ # Send conversion events
175
+ # Relay one or more conversion events to the target ad platform's native Conversions API. Platform is inferred from the provided `accountId`. Requires the Ads add-on. Supported platforms: - Meta (`metaads`) via Graph API - Google Ads (`googleads`) via Data Manager API `ingestEvents` - LinkedIn (`linkedinads`) via `/rest/conversionEvents` - TikTok (`tiktokads`) via the Offline Events API `/offline/batch/` — OFFLINE conversions only `destinationId` semantics differ per platform: - Meta: pixel (dataset) ID, e.g. `123456789012345` - Google: conversion action resource name, e.g. `customers/1234567890/conversionActions/987654321` - LinkedIn: conversion rule ID or URN, e.g. `104012` or `urn:lla:llaPartnerConversion:104012` - TikTok: Offline Event Set ID, e.g. `7057103914977558530` TikTok notes: this path sends OFFLINE conversions (in-store / CRM / call-center), not web-pixel events. Each event must carry an email or phone (TikTok requires at least one). The connected TikTok ads account must have granted the Offline Events permission; older grants must reconnect. Callers can list valid destinations via `GET /v1/accounts/{accountId}/conversion-destinations`. All PII (email, phone, names, external IDs) is hashed with SHA-256 server-side per each platform's normalization spec, including Google's Gmail-specific dot/plus-suffix stripping. Send plaintext. LinkedIn `externalIds` are passed through as plaintext per LinkedIn's spec; only emails and phones are hashed. For LinkedIn, the connected account must have been authorized after the Conversions API rollout (i.e. the OAuth grant must include `rw_conversions`). Older accounts must reconnect. Batching is handled automatically. Meta caps at 1000 events per request and rejects the entire batch if any event is malformed. Google caps at 2000. LinkedIn caps at 5000 and is also all-or-nothing per chunk. Dedup: pass a stable `eventId` on every event. Meta and LinkedIn use it to dedupe against browser-side pixel/Insight Tag events; Google maps it to `transactionId`. Per-platform `eventName` semantics: - Meta: free-form. Standard names (Purchase, Lead, ...) match Meta's built-in events; custom strings are accepted. - Google: ignored. The conversion action's category determines the event type. Send the standard name closest to your action for documentation, but the platform will not branch on it. - LinkedIn: ignored. The conversion rule's `type` (LEAD, PURCHASE, etc.) is locked to the destination at rule-creation time. Send the standard name for documentation; LinkedIn does not branch on it.
176
+ # @param send_conversions_request
177
+ # @param [Hash] opts the optional parameters
178
+ # @return [SendConversions200Response]
179
+ describe 'send_conversions test' do
180
+ it 'should work' do
181
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
182
+ end
183
+ end
184
+
185
+ # unit tests for update_conversion_destination
186
+ # Update a conversion destination
187
+ # Partial-update a conversion rule. LinkedIn-only today. Whitelisted fields: `name`, `enabled`, attribution windows, `valueType`, `value`, `attributionType`. The rule's `type` and parent ad account are intentionally not exposed for update — recreate the rule if those need to change.
188
+ # @param account_id
189
+ # @param destination_id
190
+ # @param update_conversion_destination_request
191
+ # @param [Hash] opts the optional parameters
192
+ # @return [GetConversionDestination200Response]
193
+ describe 'update_conversion_destination test' do
194
+ it 'should work' do
195
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
196
+ end
197
+ end
198
+
199
+ end
@@ -0,0 +1,131 @@
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.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
+
16
+ # Unit tests for Zernio::LeadGenApi
17
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
18
+ # Please update as you see appropriate
19
+ describe 'LeadGenApi' do
20
+ before do
21
+ # run before each test
22
+ @api_instance = Zernio::LeadGenApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of LeadGenApi' do
30
+ it 'should create an instance of LeadGenApi' do
31
+ expect(@api_instance).to be_instance_of(Zernio::LeadGenApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for archive_lead_form
36
+ # Archive a lead form
37
+ # Meta has no hard delete for forms; this archives the form (status=ARCHIVED).
38
+ # @param form_id
39
+ # @param account_id
40
+ # @param [Hash] opts the optional parameters
41
+ # @return [ArchiveLeadForm200Response]
42
+ describe 'archive_lead_form test' 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
+ # unit tests for create_lead_form
49
+ # Create a lead form
50
+ # Creates a Lead Gen form on the connected Facebook Page (POST /{page-id}/leadgen_forms). NOT idempotent — a retry creates a second form. Prefilled question types (EMAIL, PHONE, FULL_NAME, …) must omit label/key; CUSTOM questions require both. Requires the Ads add-on.
51
+ # @param create_lead_form_request
52
+ # @param [Hash] opts the optional parameters
53
+ # @return [CreateLeadForm200Response]
54
+ describe 'create_lead_form test' 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
+ # unit tests for create_test_lead
61
+ # Create a test lead
62
+ # Submits a test lead against the form (POST /{form-id}/test_leads) to exercise retrieval without waiting for real ad impressions. Meta allows one test lead per form at a time.
63
+ # @param form_id
64
+ # @param create_test_lead_request
65
+ # @param [Hash] opts the optional parameters
66
+ # @return [CreateTestLead200Response]
67
+ describe 'create_test_lead test' do
68
+ it 'should work' do
69
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
70
+ end
71
+ end
72
+
73
+ # unit tests for get_lead_form
74
+ # Get a lead form
75
+ # @param form_id
76
+ # @param account_id
77
+ # @param [Hash] opts the optional parameters
78
+ # @return [GetLeadForm200Response]
79
+ describe 'get_lead_form 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
+
85
+ # unit tests for list_form_leads
86
+ # List leads for a single form
87
+ # Returns leads for one form. Serves persisted leads (ingested via the leadgen webhook) when available, falling back to a live Graph read.
88
+ # @param form_id
89
+ # @param account_id
90
+ # @param [Hash] opts the optional parameters
91
+ # @option opts [Integer] :limit
92
+ # @option opts [String] :cursor
93
+ # @option opts [Integer] :since Unix seconds.
94
+ # @return [ListFormLeads200Response]
95
+ describe 'list_form_leads test' do
96
+ it 'should work' do
97
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
98
+ end
99
+ end
100
+
101
+ # unit tests for list_lead_forms
102
+ # List lead forms
103
+ # Lists the Lead Gen forms owned by the connected Facebook Page. Requires the Ads add-on.
104
+ # @param account_id Connected facebook account id.
105
+ # @param [Hash] opts the optional parameters
106
+ # @option opts [Integer] :limit
107
+ # @option opts [String] :cursor
108
+ # @return [ListLeadForms200Response]
109
+ describe 'list_lead_forms test' do
110
+ it 'should work' do
111
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
112
+ end
113
+ end
114
+
115
+ # unit tests for list_leads
116
+ # List submitted leads
117
+ # Returns persisted Meta Lead Gen leads for your team, newest-first, with keyset pagination on `cursor`. Leads are ingested in real time from the `leadgen` webhook. Requires the Ads add-on.
118
+ # @param [Hash] opts the optional parameters
119
+ # @option opts [String] :form_id Filter to a single lead form.
120
+ # @option opts [String] :account_id Filter to a single connected account.
121
+ # @option opts [Integer] :limit
122
+ # @option opts [Integer] :since Unix seconds; only leads created at/after this Meta timestamp.
123
+ # @option opts [String] :cursor Keyset cursor from a previous response's pagination.cursor.
124
+ # @return [ListLeads200Response]
125
+ describe 'list_leads test' do
126
+ it 'should work' do
127
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
128
+ end
129
+ end
130
+
131
+ end