late-sdk 0.0.588 → 0.0.590
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 +8 -0
- data/docs/CreateStandaloneAdRequest.md +1 -1
- data/docs/PreflightSmsRegistration200Response.md +24 -0
- data/docs/PreflightSmsRegistration200ResponseAdvisoriesInner.md +24 -0
- data/docs/PreflightSmsRegistration200ResponseComposed.md +20 -0
- data/docs/PreflightSmsRegistrationRequest.md +26 -0
- data/docs/RespondToSmsRegistrationReview200Response.md +18 -0
- data/docs/RespondToSmsRegistrationReviewRequest.md +20 -0
- data/docs/SMSApi.md +142 -0
- data/docs/StartSmsRegistrationRequest.md +2 -0
- data/lib/zernio-sdk/api/sms_api.rb +142 -0
- data/lib/zernio-sdk/models/create_standalone_ad_request.rb +1 -1
- data/lib/zernio-sdk/models/create_standalone_ad_request_promoted_object.rb +1 -1
- data/lib/zernio-sdk/models/preflight_sms_registration200_response.rb +211 -0
- data/lib/zernio-sdk/models/preflight_sms_registration200_response_advisories_inner.rb +212 -0
- data/lib/zernio-sdk/models/preflight_sms_registration200_response_composed.rb +157 -0
- data/lib/zernio-sdk/models/preflight_sms_registration_request.rb +290 -0
- data/lib/zernio-sdk/models/respond_to_sms_registration_review200_response.rb +181 -0
- data/lib/zernio-sdk/models/respond_to_sms_registration_review_request.rb +198 -0
- data/lib/zernio-sdk/models/start_sms_registration_request.rb +39 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +6 -0
- data/openapi.yaml +106 -3
- data/spec/api/sms_api_spec.rb +25 -0
- data/spec/models/preflight_sms_registration200_response_advisories_inner_spec.rb +58 -0
- data/spec/models/preflight_sms_registration200_response_composed_spec.rb +42 -0
- data/spec/models/preflight_sms_registration200_response_spec.rb +58 -0
- data/spec/models/preflight_sms_registration_request_spec.rb +64 -0
- data/spec/models/respond_to_sms_registration_review200_response_spec.rb +40 -0
- data/spec/models/respond_to_sms_registration_review_request_spec.rb +42 -0
- data/spec/models/start_sms_registration_request_spec.rb +6 -0
- data/zernio-sdk-0.0.590.gem +0 -0
- metadata +26 -2
- data/zernio-sdk-0.0.588.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b815c925c44c9ff3251021fac31a4fb5b410ff7a611bea807430a28451225e12
|
|
4
|
+
data.tar.gz: 679bfd340c10f0207e1cc58b0efbbe087e49626343d90d0a28ab41d4070da63f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 97c134c3e3f6df17aa1a4132eb63f6752785f058f0b3296eadf999fbceac8138df1dcca81884673ee244f50186139fa451171763c59b82caba6e7ce4069fad76
|
|
7
|
+
data.tar.gz: 82b05c40bc1af0dbeb43244b5a21117f0e6e92dfa71542788eb2ca16a75951e990fa6c9f2949212ecdd97b4f4cd427ecc9fb35bbca17e571e4df11572c1db3bf
|
data/README.md
CHANGED
|
@@ -425,8 +425,10 @@ Class | Method | HTTP request | Description
|
|
|
425
425
|
*Zernio::SMSApi* | [**list_sms_registrations**](docs/SMSApi.md#list_sms_registrations) | **GET** /v1/sms/registrations | List carrier registrations
|
|
426
426
|
*Zernio::SMSApi* | [**list_sms_sender_ids**](docs/SMSApi.md#list_sms_sender_ids) | **GET** /v1/sms/sender-ids | List alphanumeric sender IDs
|
|
427
427
|
*Zernio::SMSApi* | [**lookup_sms_number**](docs/SMSApi.md#lookup_sms_number) | **GET** /v1/sms/lookup | Look up carrier + line type
|
|
428
|
+
*Zernio::SMSApi* | [**preflight_sms_registration**](docs/SMSApi.md#preflight_sms_registration) | **POST** /v1/sms/registrations/preflight | Pre-check a carrier registration
|
|
428
429
|
*Zernio::SMSApi* | [**request_sms_sender_id_limit_increase**](docs/SMSApi.md#request_sms_sender_id_limit_increase) | **POST** /v1/sms/sender-ids/limit-request | Request a higher sender ID daily limit
|
|
429
430
|
*Zernio::SMSApi* | [**resend_sms_registration_otp**](docs/SMSApi.md#resend_sms_registration_otp) | **POST** /v1/sms/registrations/{id}/resend-otp | Re-send the sole-prop OTP
|
|
431
|
+
*Zernio::SMSApi* | [**respond_to_sms_registration_review**](docs/SMSApi.md#respond_to_sms_registration_review) | **POST** /v1/sms/registrations/{id}/respond | Reply to a change request
|
|
430
432
|
*Zernio::SMSApi* | [**reuse_sms_registration_for_number**](docs/SMSApi.md#reuse_sms_registration_for_number) | **POST** /v1/phone-numbers/{id}/sms/reuse-registration | Add number to SMS registration
|
|
431
433
|
*Zernio::SMSApi* | [**send_sms**](docs/SMSApi.md#send_sms) | **POST** /v1/sms/messages | Send an SMS/MMS
|
|
432
434
|
*Zernio::SMSApi* | [**share_sms_registration**](docs/SMSApi.md#share_sms_registration) | **POST** /v1/sms/registrations/share | Create a registration share link
|
|
@@ -1561,6 +1563,10 @@ Class | Method | HTTP request | Description
|
|
|
1561
1563
|
- [Zernio::PostUpdateResponse](docs/PostUpdateResponse.md)
|
|
1562
1564
|
- [Zernio::PostUserId](docs/PostUserId.md)
|
|
1563
1565
|
- [Zernio::PostsListResponse](docs/PostsListResponse.md)
|
|
1566
|
+
- [Zernio::PreflightSmsRegistration200Response](docs/PreflightSmsRegistration200Response.md)
|
|
1567
|
+
- [Zernio::PreflightSmsRegistration200ResponseAdvisoriesInner](docs/PreflightSmsRegistration200ResponseAdvisoriesInner.md)
|
|
1568
|
+
- [Zernio::PreflightSmsRegistration200ResponseComposed](docs/PreflightSmsRegistration200ResponseComposed.md)
|
|
1569
|
+
- [Zernio::PreflightSmsRegistrationRequest](docs/PreflightSmsRegistrationRequest.md)
|
|
1564
1570
|
- [Zernio::Profile](docs/Profile.md)
|
|
1565
1571
|
- [Zernio::ProfileCreateResponse](docs/ProfileCreateResponse.md)
|
|
1566
1572
|
- [Zernio::ProfileDeleteResponse](docs/ProfileDeleteResponse.md)
|
|
@@ -1621,6 +1627,8 @@ Class | Method | HTTP request | Description
|
|
|
1621
1627
|
- [Zernio::RespondToPhoneNumberReviewer200Response](docs/RespondToPhoneNumberReviewer200Response.md)
|
|
1622
1628
|
- [Zernio::RespondToPhoneNumberReviewerRequest](docs/RespondToPhoneNumberReviewerRequest.md)
|
|
1623
1629
|
- [Zernio::RespondToPhoneNumberReviewerRequestDocumentsInner](docs/RespondToPhoneNumberReviewerRequestDocumentsInner.md)
|
|
1630
|
+
- [Zernio::RespondToSmsRegistrationReview200Response](docs/RespondToSmsRegistrationReview200Response.md)
|
|
1631
|
+
- [Zernio::RespondToSmsRegistrationReviewRequest](docs/RespondToSmsRegistrationReviewRequest.md)
|
|
1624
1632
|
- [Zernio::RestoreWorkflowVersion200Response](docs/RestoreWorkflowVersion200Response.md)
|
|
1625
1633
|
- [Zernio::RestoreWorkflowVersion200ResponseWorkflow](docs/RestoreWorkflowVersion200ResponseWorkflow.md)
|
|
1626
1634
|
- [Zernio::RetweetPost200Response](docs/RetweetPost200Response.md)
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
| **ad_set_name** | **String** | Meta only. Exact ad set name. Overrides the default `<name> - Ad Set`. (For per-ad names on the multi-creative shape, set `name` on each `creatives[]` entry.) | [optional] |
|
|
12
12
|
| **ad_name** | **String** | Meta only. Exact ad name (the single-creative ad object's name). Overrides the default, which is `name`. (For per-ad names on the multi-creative shape, set `name` on each `creatives[]` entry instead.) | [optional] |
|
|
13
13
|
| **tracking** | [**CreateStandaloneAdRequestTracking**](CreateStandaloneAdRequestTracking.md) | | [optional] |
|
|
14
|
-
| **goal** | **String** | Required on legacy and multi-creative shapes; the attach shape inherits it from the ad set. Available goals vary by platform. **Meta** - `conversions`: OUTCOME_SALES. Requires `promotedObject.pixelId` and `promotedObject.customEventType` with a commerce event such as PURCHASE or START_TRIAL. - `lead_conversion`: OUTCOME_LEADS optimizing website pixel leads. Same pixel and event fields, but with a leads-class event such as LEAD, SUBMIT_APPLICATION, SCHEDULE or CONTACT. Meta gates conversion events by objective, so leads-class events are rejected under `conversions`. - `lead_generation`: OUTCOME_LEADS with instant forms. Requires `leadGenFormId`. `promotedObject.pageId` is optional and auto-filled from the connected Page. - `app_promotion`: requires `promotedObject.applicationId` and `promotedObject.objectStoreUrl`. - `catalog_sales`: Advantage+ catalog ads, for example vehicle inventory. Requires `promotedObject.productSetId`, `promotedObject.pixelId` and `promotedObject.customEventType`. Builds a catalog TEMPLATE creative from the copy fields, which may carry template tags like {{product.name}} or {{vehicle.make}}. No imageUrl or video is sent; Meta renders the visuals per catalog item. Discover catalogs via GET /v1/ads/catalogs and product sets via GET /v1/ads/catalogs/{catalogId}/product-sets. Single shape only, no creatives[], adSetId, dynamicCreative or placementAssets. **TikTok** - `conversions`: website-conversion ad group. Requires `promotedObject.pixelId`, your TikTok Pixel ID. Accepts an optional `promotedObject.customEventType` with a TikTok optimization_event code your pixel tracks (newer pixels use e.g. SHOPPING for purchase events; legacy pixels use ON_WEB_ORDER, INITIATE_ORDER, ON_WEB_REGISTER or FORM). To inherit pixel and event from an existing ad group, pass `adSetId` instead. **LinkedIn** - `engagement`, `traffic`, `awareness` and `video_views` create standalone Direct Sponsored Content ads. `traffic` requires `linkUrl`; `video_views` requires `video`. - `job_applicants` requires a `platformSpecificData.jobs` creative. - For `lead_generation` or `conversions` on LinkedIn, or to promote an existing post, use POST /v1/ads/boost. **OpenAI Ads** - Only `traffic`, `awareness`, and `conversions` are supported (other goals return 400). Maps to OpenAI's `bidding_type` (clicks, impressions, conversions respectively). `conversions` requires an active conversion event setting on the account; create a tracking tag with `defaultEventType` via the tracking-tags API (`POST /v1/accounts/{accountId}/tracking-tags`), or configure a conversion event in OpenAI Ads Manager, or the request returns 422. | [optional] |
|
|
14
|
+
| **goal** | **String** | Required on legacy and multi-creative shapes; the attach shape inherits it from the ad set. Available goals vary by platform. **Meta** - `conversions`: OUTCOME_SALES. Requires `promotedObject.pixelId` and `promotedObject.customEventType` with a commerce event such as PURCHASE or START_TRIAL, or `promotedObject.customConversionId` to optimise against a Custom Conversion instead. - `lead_conversion`: OUTCOME_LEADS optimizing website pixel leads. Same pixel and event fields, but with a leads-class event such as LEAD, SUBMIT_APPLICATION, SCHEDULE or CONTACT (or `promotedObject.customConversionId` to optimise against a Custom Conversion instead). Meta gates conversion events by objective, so leads-class events are rejected under `conversions`. - `lead_generation`: OUTCOME_LEADS with instant forms. Requires `leadGenFormId`. `promotedObject.pageId` is optional and auto-filled from the connected Page. - `app_promotion`: requires `promotedObject.applicationId` and `promotedObject.objectStoreUrl`. - `catalog_sales`: Advantage+ catalog ads, for example vehicle inventory. Requires `promotedObject.productSetId`, `promotedObject.pixelId` and `promotedObject.customEventType`. Builds a catalog TEMPLATE creative from the copy fields, which may carry template tags like {{product.name}} or {{vehicle.make}}. No imageUrl or video is sent; Meta renders the visuals per catalog item. Discover catalogs via GET /v1/ads/catalogs and product sets via GET /v1/ads/catalogs/{catalogId}/product-sets. Single shape only, no creatives[], adSetId, dynamicCreative or placementAssets. **TikTok** - `conversions`: website-conversion ad group. Requires `promotedObject.pixelId`, your TikTok Pixel ID. Accepts an optional `promotedObject.customEventType` with a TikTok optimization_event code your pixel tracks (newer pixels use e.g. SHOPPING for purchase events; legacy pixels use ON_WEB_ORDER, INITIATE_ORDER, ON_WEB_REGISTER or FORM). To inherit pixel and event from an existing ad group, pass `adSetId` instead. **LinkedIn** - `engagement`, `traffic`, `awareness` and `video_views` create standalone Direct Sponsored Content ads. `traffic` requires `linkUrl`; `video_views` requires `video`. - `job_applicants` requires a `platformSpecificData.jobs` creative. - For `lead_generation` or `conversions` on LinkedIn, or to promote an existing post, use POST /v1/ads/boost. **OpenAI Ads** - Only `traffic`, `awareness`, and `conversions` are supported (other goals return 400). Maps to OpenAI's `bidding_type` (clicks, impressions, conversions respectively). `conversions` requires an active conversion event setting on the account; create a tracking tag with `defaultEventType` via the tracking-tags API (`POST /v1/accounts/{accountId}/tracking-tags`), or configure a conversion event in OpenAI Ads Manager, or the request returns 422. | [optional] |
|
|
15
15
|
| **optimization_goal** | **String** | Meta only. Explicit ad-set `optimization_goal` (e.g. `LANDING_PAGE_VIEWS`, `LINK_CLICKS`, `REACH`, `IMPRESSIONS`, `OFFSITE_CONVERSIONS`, `THRUPLAY`, `LEAD_GENERATION`). Overrides the default derived from `goal` (e.g. `traffic` defaults to `LINK_CLICKS`). Forwarded verbatim to Meta, which validates compatibility with the campaign objective and rejects incompatible combinations. | [optional] |
|
|
16
16
|
| **billing_event** | **String** | Meta only. Explicit ad-set `billing_event`. Defaults to `IMPRESSIONS`. Forwarded verbatim to Meta, which validates compatibility with the optimization goal. | [optional] |
|
|
17
17
|
| **buying_type** | **String** | Meta only. RESERVED = Reach & Frequency: requires `rfPredictionId` (a RESERVED prediction from /v1/ads/rf-predictions + /reserve). Budget, schedule and pricing come from the reservation, so budgetAmount/budgetType are not required and bid fields are ignored. Only the plain single-ad shape (no creatives[], adSetId, existingCampaignId or dynamicCreative). | [optional] |
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::PreflightSmsRegistration200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **composed** | [**PreflightSmsRegistration200ResponseComposed**](PreflightSmsRegistration200ResponseComposed.md) | | [optional] |
|
|
8
|
+
| **advisories** | [**Array<PreflightSmsRegistration200ResponseAdvisoriesInner>**](PreflightSmsRegistration200ResponseAdvisoriesInner.md) | | [optional] |
|
|
9
|
+
| **verdict** | **String** | | [optional] |
|
|
10
|
+
| **ai_unavailable** | **Boolean** | True when the AI portion of the check could not run; advisories then contain only deterministic findings. | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::PreflightSmsRegistration200Response.new(
|
|
18
|
+
composed: null,
|
|
19
|
+
advisories: null,
|
|
20
|
+
verdict: null,
|
|
21
|
+
ai_unavailable: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::PreflightSmsRegistration200ResponseAdvisoriesInner
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **field** | **String** | The payload field the finding is about, when attributable. | [optional] |
|
|
8
|
+
| **code** | **String** | Stable rule id for deterministic findings; absent on AI findings. | [optional] |
|
|
9
|
+
| **concern** | **String** | | [optional] |
|
|
10
|
+
| **severity** | **String** | | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::PreflightSmsRegistration200ResponseAdvisoriesInner.new(
|
|
18
|
+
field: null,
|
|
19
|
+
code: null,
|
|
20
|
+
concern: null,
|
|
21
|
+
severity: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::PreflightSmsRegistration200ResponseComposed
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **brand** | **Object** | | [optional] |
|
|
8
|
+
| **campaign** | **Object** | | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::PreflightSmsRegistration200ResponseComposed.new(
|
|
16
|
+
brand: null,
|
|
17
|
+
campaign: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Zernio::PreflightSmsRegistrationRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **registration_type** | **String** | | |
|
|
8
|
+
| **phone_numbers** | **Array<String>** | | [optional] |
|
|
9
|
+
| **brand** | **Object** | Same shape as the registration `brand`. | |
|
|
10
|
+
| **campaign** | **Object** | Same shape as the registration `campaign`. | |
|
|
11
|
+
| **messaging_brand_name** | **String** | | [optional] |
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
require 'zernio-sdk'
|
|
17
|
+
|
|
18
|
+
instance = Zernio::PreflightSmsRegistrationRequest.new(
|
|
19
|
+
registration_type: null,
|
|
20
|
+
phone_numbers: null,
|
|
21
|
+
brand: null,
|
|
22
|
+
campaign: null,
|
|
23
|
+
messaging_brand_name: null
|
|
24
|
+
)
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Zernio::RespondToSmsRegistrationReview200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **status** | **String** | | [optional] |
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'zernio-sdk'
|
|
13
|
+
|
|
14
|
+
instance = Zernio::RespondToSmsRegistrationReview200Response.new(
|
|
15
|
+
status: null
|
|
16
|
+
)
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::RespondToSmsRegistrationReviewRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **note** | **String** | Answer for the reviewer. Required when no files are sent. | [optional] |
|
|
8
|
+
| **files** | **Array<String>** | Hosted document URLs returned by POST /v1/sms/opt-in-proof. | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::RespondToSmsRegistrationReviewRequest.new(
|
|
16
|
+
note: null,
|
|
17
|
+
files: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
data/docs/SMSApi.md
CHANGED
|
@@ -15,8 +15,10 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
15
15
|
| [**list_sms_registrations**](SMSApi.md#list_sms_registrations) | **GET** /v1/sms/registrations | List carrier registrations |
|
|
16
16
|
| [**list_sms_sender_ids**](SMSApi.md#list_sms_sender_ids) | **GET** /v1/sms/sender-ids | List alphanumeric sender IDs |
|
|
17
17
|
| [**lookup_sms_number**](SMSApi.md#lookup_sms_number) | **GET** /v1/sms/lookup | Look up carrier + line type |
|
|
18
|
+
| [**preflight_sms_registration**](SMSApi.md#preflight_sms_registration) | **POST** /v1/sms/registrations/preflight | Pre-check a carrier registration |
|
|
18
19
|
| [**request_sms_sender_id_limit_increase**](SMSApi.md#request_sms_sender_id_limit_increase) | **POST** /v1/sms/sender-ids/limit-request | Request a higher sender ID daily limit |
|
|
19
20
|
| [**resend_sms_registration_otp**](SMSApi.md#resend_sms_registration_otp) | **POST** /v1/sms/registrations/{id}/resend-otp | Re-send the sole-prop OTP |
|
|
21
|
+
| [**respond_to_sms_registration_review**](SMSApi.md#respond_to_sms_registration_review) | **POST** /v1/sms/registrations/{id}/respond | Reply to a change request |
|
|
20
22
|
| [**reuse_sms_registration_for_number**](SMSApi.md#reuse_sms_registration_for_number) | **POST** /v1/phone-numbers/{id}/sms/reuse-registration | Add number to SMS registration |
|
|
21
23
|
| [**send_sms**](SMSApi.md#send_sms) | **POST** /v1/sms/messages | Send an SMS/MMS |
|
|
22
24
|
| [**share_sms_registration**](SMSApi.md#share_sms_registration) | **POST** /v1/sms/registrations/share | Create a registration share link |
|
|
@@ -786,6 +788,75 @@ end
|
|
|
786
788
|
- **Accept**: application/json
|
|
787
789
|
|
|
788
790
|
|
|
791
|
+
## preflight_sms_registration
|
|
792
|
+
|
|
793
|
+
> <PreflightSmsRegistration200Response> preflight_sms_registration(preflight_sms_registration_request)
|
|
794
|
+
|
|
795
|
+
Pre-check a carrier registration
|
|
796
|
+
|
|
797
|
+
Dry-run of `POST /v1/sms/registrations` for 10DLC: validates and composes the exact brand/campaign payloads a submission would store (branding, disclosures, auto-replies), runs deterministic compliance lints plus an AI reviewer over them, and returns the findings WITHOUT creating anything. Use it to fix issues before submitting; `block` severity findings indicate a near-certain carrier rejection.
|
|
798
|
+
|
|
799
|
+
### Examples
|
|
800
|
+
|
|
801
|
+
```ruby
|
|
802
|
+
require 'time'
|
|
803
|
+
require 'zernio-sdk'
|
|
804
|
+
# setup authorization
|
|
805
|
+
Zernio.configure do |config|
|
|
806
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
807
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
808
|
+
end
|
|
809
|
+
|
|
810
|
+
api_instance = Zernio::SMSApi.new
|
|
811
|
+
preflight_sms_registration_request = Zernio::PreflightSmsRegistrationRequest.new({registration_type: 'standard_10dlc', brand: 3.56, campaign: 3.56}) # PreflightSmsRegistrationRequest |
|
|
812
|
+
|
|
813
|
+
begin
|
|
814
|
+
# Pre-check a carrier registration
|
|
815
|
+
result = api_instance.preflight_sms_registration(preflight_sms_registration_request)
|
|
816
|
+
p result
|
|
817
|
+
rescue Zernio::ApiError => e
|
|
818
|
+
puts "Error when calling SMSApi->preflight_sms_registration: #{e}"
|
|
819
|
+
end
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
#### Using the preflight_sms_registration_with_http_info variant
|
|
823
|
+
|
|
824
|
+
This returns an Array which contains the response data, status code and headers.
|
|
825
|
+
|
|
826
|
+
> <Array(<PreflightSmsRegistration200Response>, Integer, Hash)> preflight_sms_registration_with_http_info(preflight_sms_registration_request)
|
|
827
|
+
|
|
828
|
+
```ruby
|
|
829
|
+
begin
|
|
830
|
+
# Pre-check a carrier registration
|
|
831
|
+
data, status_code, headers = api_instance.preflight_sms_registration_with_http_info(preflight_sms_registration_request)
|
|
832
|
+
p status_code # => 2xx
|
|
833
|
+
p headers # => { ... }
|
|
834
|
+
p data # => <PreflightSmsRegistration200Response>
|
|
835
|
+
rescue Zernio::ApiError => e
|
|
836
|
+
puts "Error when calling SMSApi->preflight_sms_registration_with_http_info: #{e}"
|
|
837
|
+
end
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
### Parameters
|
|
841
|
+
|
|
842
|
+
| Name | Type | Description | Notes |
|
|
843
|
+
| ---- | ---- | ----------- | ----- |
|
|
844
|
+
| **preflight_sms_registration_request** | [**PreflightSmsRegistrationRequest**](PreflightSmsRegistrationRequest.md) | | |
|
|
845
|
+
|
|
846
|
+
### Return type
|
|
847
|
+
|
|
848
|
+
[**PreflightSmsRegistration200Response**](PreflightSmsRegistration200Response.md)
|
|
849
|
+
|
|
850
|
+
### Authorization
|
|
851
|
+
|
|
852
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
853
|
+
|
|
854
|
+
### HTTP request headers
|
|
855
|
+
|
|
856
|
+
- **Content-Type**: application/json
|
|
857
|
+
- **Accept**: application/json
|
|
858
|
+
|
|
859
|
+
|
|
789
860
|
## request_sms_sender_id_limit_increase
|
|
790
861
|
|
|
791
862
|
> <RequestSmsSenderIdLimitIncrease200Response> request_sms_sender_id_limit_increase(request_sms_sender_id_limit_increase_request)
|
|
@@ -924,6 +995,77 @@ end
|
|
|
924
995
|
- **Accept**: application/json
|
|
925
996
|
|
|
926
997
|
|
|
998
|
+
## respond_to_sms_registration_review
|
|
999
|
+
|
|
1000
|
+
> <RespondToSmsRegistrationReview200Response> respond_to_sms_registration_review(id, respond_to_sms_registration_review_request)
|
|
1001
|
+
|
|
1002
|
+
Reply to a change request
|
|
1003
|
+
|
|
1004
|
+
Replies to a reviewer change request on a registration in `changes_requested` state: a note, hosted document URLs (from `POST /v1/sms/opt-in-proof`), or both, sent together. The registration returns to `requested` (back in review) — no need to resubmit the whole registration. To change the submitted brand/campaign fields themselves, resubmit via `POST /v1/sms/registrations` with `resubmitRequestId` instead.
|
|
1005
|
+
|
|
1006
|
+
### Examples
|
|
1007
|
+
|
|
1008
|
+
```ruby
|
|
1009
|
+
require 'time'
|
|
1010
|
+
require 'zernio-sdk'
|
|
1011
|
+
# setup authorization
|
|
1012
|
+
Zernio.configure do |config|
|
|
1013
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
1014
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
1015
|
+
end
|
|
1016
|
+
|
|
1017
|
+
api_instance = Zernio::SMSApi.new
|
|
1018
|
+
id = 'id_example' # String |
|
|
1019
|
+
respond_to_sms_registration_review_request = Zernio::RespondToSmsRegistrationReviewRequest.new # RespondToSmsRegistrationReviewRequest |
|
|
1020
|
+
|
|
1021
|
+
begin
|
|
1022
|
+
# Reply to a change request
|
|
1023
|
+
result = api_instance.respond_to_sms_registration_review(id, respond_to_sms_registration_review_request)
|
|
1024
|
+
p result
|
|
1025
|
+
rescue Zernio::ApiError => e
|
|
1026
|
+
puts "Error when calling SMSApi->respond_to_sms_registration_review: #{e}"
|
|
1027
|
+
end
|
|
1028
|
+
```
|
|
1029
|
+
|
|
1030
|
+
#### Using the respond_to_sms_registration_review_with_http_info variant
|
|
1031
|
+
|
|
1032
|
+
This returns an Array which contains the response data, status code and headers.
|
|
1033
|
+
|
|
1034
|
+
> <Array(<RespondToSmsRegistrationReview200Response>, Integer, Hash)> respond_to_sms_registration_review_with_http_info(id, respond_to_sms_registration_review_request)
|
|
1035
|
+
|
|
1036
|
+
```ruby
|
|
1037
|
+
begin
|
|
1038
|
+
# Reply to a change request
|
|
1039
|
+
data, status_code, headers = api_instance.respond_to_sms_registration_review_with_http_info(id, respond_to_sms_registration_review_request)
|
|
1040
|
+
p status_code # => 2xx
|
|
1041
|
+
p headers # => { ... }
|
|
1042
|
+
p data # => <RespondToSmsRegistrationReview200Response>
|
|
1043
|
+
rescue Zernio::ApiError => e
|
|
1044
|
+
puts "Error when calling SMSApi->respond_to_sms_registration_review_with_http_info: #{e}"
|
|
1045
|
+
end
|
|
1046
|
+
```
|
|
1047
|
+
|
|
1048
|
+
### Parameters
|
|
1049
|
+
|
|
1050
|
+
| Name | Type | Description | Notes |
|
|
1051
|
+
| ---- | ---- | ----------- | ----- |
|
|
1052
|
+
| **id** | **String** | | |
|
|
1053
|
+
| **respond_to_sms_registration_review_request** | [**RespondToSmsRegistrationReviewRequest**](RespondToSmsRegistrationReviewRequest.md) | | |
|
|
1054
|
+
|
|
1055
|
+
### Return type
|
|
1056
|
+
|
|
1057
|
+
[**RespondToSmsRegistrationReview200Response**](RespondToSmsRegistrationReview200Response.md)
|
|
1058
|
+
|
|
1059
|
+
### Authorization
|
|
1060
|
+
|
|
1061
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
1062
|
+
|
|
1063
|
+
### HTTP request headers
|
|
1064
|
+
|
|
1065
|
+
- **Content-Type**: application/json
|
|
1066
|
+
- **Accept**: application/json
|
|
1067
|
+
|
|
1068
|
+
|
|
927
1069
|
## reuse_sms_registration_for_number
|
|
928
1070
|
|
|
929
1071
|
> <ReuseSmsRegistrationForNumber200Response> reuse_sms_registration_for_number(id)
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
| **phone_numbers** | **Array<String>** | Your numbers this registration covers. | |
|
|
9
9
|
| **brand** | [**StartSmsRegistrationRequestBrand**](StartSmsRegistrationRequestBrand.md) | | [optional] |
|
|
10
10
|
| **campaign** | [**StartSmsRegistrationRequestCampaign**](StartSmsRegistrationRequestCampaign.md) | | [optional] |
|
|
11
|
+
| **messaging_brand_name** | **String** | DBA / trade name used to brand message content (samples and auto-replies) when it differs from the legal name, e.g. a sole proprietor texting under a business name. The legal `brand.displayName` is still what the carrier vets. | [optional] |
|
|
11
12
|
| **wizard_values** | **Hash<String, String>** | Raw dashboard-wizard answers, stored only to prefill edit-and-resubmit. API integrators can omit. | [optional] |
|
|
12
13
|
| **resubmit_request_id** | **String** | Resubmit a registration that was returned for changes — updates it in place instead of creating a new one. | [optional] |
|
|
13
14
|
| **toll_free** | [**StartSmsRegistrationRequestTollFree**](StartSmsRegistrationRequestTollFree.md) | | [optional] |
|
|
@@ -22,6 +23,7 @@ instance = Zernio::StartSmsRegistrationRequest.new(
|
|
|
22
23
|
phone_numbers: null,
|
|
23
24
|
brand: null,
|
|
24
25
|
campaign: null,
|
|
26
|
+
messaging_brand_name: null,
|
|
25
27
|
wizard_values: null,
|
|
26
28
|
resubmit_request_id: null,
|
|
27
29
|
toll_free: null
|
|
@@ -732,6 +732,74 @@ module Zernio
|
|
|
732
732
|
return data, status_code, headers
|
|
733
733
|
end
|
|
734
734
|
|
|
735
|
+
# Pre-check a carrier registration
|
|
736
|
+
# Dry-run of `POST /v1/sms/registrations` for 10DLC: validates and composes the exact brand/campaign payloads a submission would store (branding, disclosures, auto-replies), runs deterministic compliance lints plus an AI reviewer over them, and returns the findings WITHOUT creating anything. Use it to fix issues before submitting; `block` severity findings indicate a near-certain carrier rejection.
|
|
737
|
+
# @param preflight_sms_registration_request [PreflightSmsRegistrationRequest]
|
|
738
|
+
# @param [Hash] opts the optional parameters
|
|
739
|
+
# @return [PreflightSmsRegistration200Response]
|
|
740
|
+
def preflight_sms_registration(preflight_sms_registration_request, opts = {})
|
|
741
|
+
data, _status_code, _headers = preflight_sms_registration_with_http_info(preflight_sms_registration_request, opts)
|
|
742
|
+
data
|
|
743
|
+
end
|
|
744
|
+
|
|
745
|
+
# Pre-check a carrier registration
|
|
746
|
+
# Dry-run of `POST /v1/sms/registrations` for 10DLC: validates and composes the exact brand/campaign payloads a submission would store (branding, disclosures, auto-replies), runs deterministic compliance lints plus an AI reviewer over them, and returns the findings WITHOUT creating anything. Use it to fix issues before submitting; `block` severity findings indicate a near-certain carrier rejection.
|
|
747
|
+
# @param preflight_sms_registration_request [PreflightSmsRegistrationRequest]
|
|
748
|
+
# @param [Hash] opts the optional parameters
|
|
749
|
+
# @return [Array<(PreflightSmsRegistration200Response, Integer, Hash)>] PreflightSmsRegistration200Response data, response status code and response headers
|
|
750
|
+
def preflight_sms_registration_with_http_info(preflight_sms_registration_request, opts = {})
|
|
751
|
+
if @api_client.config.debugging
|
|
752
|
+
@api_client.config.logger.debug 'Calling API: SMSApi.preflight_sms_registration ...'
|
|
753
|
+
end
|
|
754
|
+
# verify the required parameter 'preflight_sms_registration_request' is set
|
|
755
|
+
if @api_client.config.client_side_validation && preflight_sms_registration_request.nil?
|
|
756
|
+
fail ArgumentError, "Missing the required parameter 'preflight_sms_registration_request' when calling SMSApi.preflight_sms_registration"
|
|
757
|
+
end
|
|
758
|
+
# resource path
|
|
759
|
+
local_var_path = '/v1/sms/registrations/preflight'
|
|
760
|
+
|
|
761
|
+
# query parameters
|
|
762
|
+
query_params = opts[:query_params] || {}
|
|
763
|
+
|
|
764
|
+
# header parameters
|
|
765
|
+
header_params = opts[:header_params] || {}
|
|
766
|
+
# HTTP header 'Accept' (if needed)
|
|
767
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
768
|
+
# HTTP header 'Content-Type'
|
|
769
|
+
content_type = @api_client.select_header_content_type(['application/json'])
|
|
770
|
+
if !content_type.nil?
|
|
771
|
+
header_params['Content-Type'] = content_type
|
|
772
|
+
end
|
|
773
|
+
|
|
774
|
+
# form parameters
|
|
775
|
+
form_params = opts[:form_params] || {}
|
|
776
|
+
|
|
777
|
+
# http body (model)
|
|
778
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(preflight_sms_registration_request)
|
|
779
|
+
|
|
780
|
+
# return_type
|
|
781
|
+
return_type = opts[:debug_return_type] || 'PreflightSmsRegistration200Response'
|
|
782
|
+
|
|
783
|
+
# auth_names
|
|
784
|
+
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
|
785
|
+
|
|
786
|
+
new_options = opts.merge(
|
|
787
|
+
:operation => :"SMSApi.preflight_sms_registration",
|
|
788
|
+
:header_params => header_params,
|
|
789
|
+
:query_params => query_params,
|
|
790
|
+
:form_params => form_params,
|
|
791
|
+
:body => post_body,
|
|
792
|
+
:auth_names => auth_names,
|
|
793
|
+
:return_type => return_type
|
|
794
|
+
)
|
|
795
|
+
|
|
796
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
797
|
+
if @api_client.config.debugging
|
|
798
|
+
@api_client.config.logger.debug "API called: SMSApi#preflight_sms_registration\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
799
|
+
end
|
|
800
|
+
return data, status_code, headers
|
|
801
|
+
end
|
|
802
|
+
|
|
735
803
|
# Request a higher sender ID daily limit
|
|
736
804
|
# Asks support to raise the workspace's daily sender-ID message cap. There is no self-serve raise: the request (desired cap + use case) is reviewed manually, usually within a business day.
|
|
737
805
|
# @param request_sms_sender_id_limit_increase_request [RequestSmsSenderIdLimitIncreaseRequest]
|
|
@@ -863,6 +931,80 @@ module Zernio
|
|
|
863
931
|
return data, status_code, headers
|
|
864
932
|
end
|
|
865
933
|
|
|
934
|
+
# Reply to a change request
|
|
935
|
+
# Replies to a reviewer change request on a registration in `changes_requested` state: a note, hosted document URLs (from `POST /v1/sms/opt-in-proof`), or both, sent together. The registration returns to `requested` (back in review) — no need to resubmit the whole registration. To change the submitted brand/campaign fields themselves, resubmit via `POST /v1/sms/registrations` with `resubmitRequestId` instead.
|
|
936
|
+
# @param id [String]
|
|
937
|
+
# @param respond_to_sms_registration_review_request [RespondToSmsRegistrationReviewRequest]
|
|
938
|
+
# @param [Hash] opts the optional parameters
|
|
939
|
+
# @return [RespondToSmsRegistrationReview200Response]
|
|
940
|
+
def respond_to_sms_registration_review(id, respond_to_sms_registration_review_request, opts = {})
|
|
941
|
+
data, _status_code, _headers = respond_to_sms_registration_review_with_http_info(id, respond_to_sms_registration_review_request, opts)
|
|
942
|
+
data
|
|
943
|
+
end
|
|
944
|
+
|
|
945
|
+
# Reply to a change request
|
|
946
|
+
# Replies to a reviewer change request on a registration in `changes_requested` state: a note, hosted document URLs (from `POST /v1/sms/opt-in-proof`), or both, sent together. The registration returns to `requested` (back in review) — no need to resubmit the whole registration. To change the submitted brand/campaign fields themselves, resubmit via `POST /v1/sms/registrations` with `resubmitRequestId` instead.
|
|
947
|
+
# @param id [String]
|
|
948
|
+
# @param respond_to_sms_registration_review_request [RespondToSmsRegistrationReviewRequest]
|
|
949
|
+
# @param [Hash] opts the optional parameters
|
|
950
|
+
# @return [Array<(RespondToSmsRegistrationReview200Response, Integer, Hash)>] RespondToSmsRegistrationReview200Response data, response status code and response headers
|
|
951
|
+
def respond_to_sms_registration_review_with_http_info(id, respond_to_sms_registration_review_request, opts = {})
|
|
952
|
+
if @api_client.config.debugging
|
|
953
|
+
@api_client.config.logger.debug 'Calling API: SMSApi.respond_to_sms_registration_review ...'
|
|
954
|
+
end
|
|
955
|
+
# verify the required parameter 'id' is set
|
|
956
|
+
if @api_client.config.client_side_validation && id.nil?
|
|
957
|
+
fail ArgumentError, "Missing the required parameter 'id' when calling SMSApi.respond_to_sms_registration_review"
|
|
958
|
+
end
|
|
959
|
+
# verify the required parameter 'respond_to_sms_registration_review_request' is set
|
|
960
|
+
if @api_client.config.client_side_validation && respond_to_sms_registration_review_request.nil?
|
|
961
|
+
fail ArgumentError, "Missing the required parameter 'respond_to_sms_registration_review_request' when calling SMSApi.respond_to_sms_registration_review"
|
|
962
|
+
end
|
|
963
|
+
# resource path
|
|
964
|
+
local_var_path = '/v1/sms/registrations/{id}/respond'.sub('{' + 'id' + '}', CGI.escape(id.to_s))
|
|
965
|
+
|
|
966
|
+
# query parameters
|
|
967
|
+
query_params = opts[:query_params] || {}
|
|
968
|
+
|
|
969
|
+
# header parameters
|
|
970
|
+
header_params = opts[:header_params] || {}
|
|
971
|
+
# HTTP header 'Accept' (if needed)
|
|
972
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
973
|
+
# HTTP header 'Content-Type'
|
|
974
|
+
content_type = @api_client.select_header_content_type(['application/json'])
|
|
975
|
+
if !content_type.nil?
|
|
976
|
+
header_params['Content-Type'] = content_type
|
|
977
|
+
end
|
|
978
|
+
|
|
979
|
+
# form parameters
|
|
980
|
+
form_params = opts[:form_params] || {}
|
|
981
|
+
|
|
982
|
+
# http body (model)
|
|
983
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(respond_to_sms_registration_review_request)
|
|
984
|
+
|
|
985
|
+
# return_type
|
|
986
|
+
return_type = opts[:debug_return_type] || 'RespondToSmsRegistrationReview200Response'
|
|
987
|
+
|
|
988
|
+
# auth_names
|
|
989
|
+
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
|
990
|
+
|
|
991
|
+
new_options = opts.merge(
|
|
992
|
+
:operation => :"SMSApi.respond_to_sms_registration_review",
|
|
993
|
+
:header_params => header_params,
|
|
994
|
+
:query_params => query_params,
|
|
995
|
+
:form_params => form_params,
|
|
996
|
+
:body => post_body,
|
|
997
|
+
:auth_names => auth_names,
|
|
998
|
+
:return_type => return_type
|
|
999
|
+
)
|
|
1000
|
+
|
|
1001
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
1002
|
+
if @api_client.config.debugging
|
|
1003
|
+
@api_client.config.logger.debug "API called: SMSApi#respond_to_sms_registration_review\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
1004
|
+
end
|
|
1005
|
+
return data, status_code, headers
|
|
1006
|
+
end
|
|
1007
|
+
|
|
866
1008
|
# Add number to SMS registration
|
|
867
1009
|
# Attaches this number to your existing approved 10DLC campaign instead of running a fresh registration: the number inherits the campaign's approval (no new brand or campaign, no extra carrier fee). Enable SMS on the number first (`POST /v1/phone-numbers/{id}/sms`; its response tells you whether a reusable registration exists).
|
|
868
1010
|
# @param id [String]
|
|
@@ -32,7 +32,7 @@ module Zernio
|
|
|
32
32
|
|
|
33
33
|
attr_accessor :tracking
|
|
34
34
|
|
|
35
|
-
# Required on legacy and multi-creative shapes; the attach shape inherits it from the ad set. Available goals vary by platform. **Meta** - `conversions`: OUTCOME_SALES. Requires `promotedObject.pixelId` and `promotedObject.customEventType` with a commerce event such as PURCHASE or START_TRIAL. - `lead_conversion`: OUTCOME_LEADS optimizing website pixel leads. Same pixel and event fields, but with a leads-class event such as LEAD, SUBMIT_APPLICATION, SCHEDULE or CONTACT. Meta gates conversion events by objective, so leads-class events are rejected under `conversions`. - `lead_generation`: OUTCOME_LEADS with instant forms. Requires `leadGenFormId`. `promotedObject.pageId` is optional and auto-filled from the connected Page. - `app_promotion`: requires `promotedObject.applicationId` and `promotedObject.objectStoreUrl`. - `catalog_sales`: Advantage+ catalog ads, for example vehicle inventory. Requires `promotedObject.productSetId`, `promotedObject.pixelId` and `promotedObject.customEventType`. Builds a catalog TEMPLATE creative from the copy fields, which may carry template tags like {{product.name}} or {{vehicle.make}}. No imageUrl or video is sent; Meta renders the visuals per catalog item. Discover catalogs via GET /v1/ads/catalogs and product sets via GET /v1/ads/catalogs/{catalogId}/product-sets. Single shape only, no creatives[], adSetId, dynamicCreative or placementAssets. **TikTok** - `conversions`: website-conversion ad group. Requires `promotedObject.pixelId`, your TikTok Pixel ID. Accepts an optional `promotedObject.customEventType` with a TikTok optimization_event code your pixel tracks (newer pixels use e.g. SHOPPING for purchase events; legacy pixels use ON_WEB_ORDER, INITIATE_ORDER, ON_WEB_REGISTER or FORM). To inherit pixel and event from an existing ad group, pass `adSetId` instead. **LinkedIn** - `engagement`, `traffic`, `awareness` and `video_views` create standalone Direct Sponsored Content ads. `traffic` requires `linkUrl`; `video_views` requires `video`. - `job_applicants` requires a `platformSpecificData.jobs` creative. - For `lead_generation` or `conversions` on LinkedIn, or to promote an existing post, use POST /v1/ads/boost. **OpenAI Ads** - Only `traffic`, `awareness`, and `conversions` are supported (other goals return 400). Maps to OpenAI's `bidding_type` (clicks, impressions, conversions respectively). `conversions` requires an active conversion event setting on the account; create a tracking tag with `defaultEventType` via the tracking-tags API (`POST /v1/accounts/{accountId}/tracking-tags`), or configure a conversion event in OpenAI Ads Manager, or the request returns 422.
|
|
35
|
+
# Required on legacy and multi-creative shapes; the attach shape inherits it from the ad set. Available goals vary by platform. **Meta** - `conversions`: OUTCOME_SALES. Requires `promotedObject.pixelId` and `promotedObject.customEventType` with a commerce event such as PURCHASE or START_TRIAL, or `promotedObject.customConversionId` to optimise against a Custom Conversion instead. - `lead_conversion`: OUTCOME_LEADS optimizing website pixel leads. Same pixel and event fields, but with a leads-class event such as LEAD, SUBMIT_APPLICATION, SCHEDULE or CONTACT (or `promotedObject.customConversionId` to optimise against a Custom Conversion instead). Meta gates conversion events by objective, so leads-class events are rejected under `conversions`. - `lead_generation`: OUTCOME_LEADS with instant forms. Requires `leadGenFormId`. `promotedObject.pageId` is optional and auto-filled from the connected Page. - `app_promotion`: requires `promotedObject.applicationId` and `promotedObject.objectStoreUrl`. - `catalog_sales`: Advantage+ catalog ads, for example vehicle inventory. Requires `promotedObject.productSetId`, `promotedObject.pixelId` and `promotedObject.customEventType`. Builds a catalog TEMPLATE creative from the copy fields, which may carry template tags like {{product.name}} or {{vehicle.make}}. No imageUrl or video is sent; Meta renders the visuals per catalog item. Discover catalogs via GET /v1/ads/catalogs and product sets via GET /v1/ads/catalogs/{catalogId}/product-sets. Single shape only, no creatives[], adSetId, dynamicCreative or placementAssets. **TikTok** - `conversions`: website-conversion ad group. Requires `promotedObject.pixelId`, your TikTok Pixel ID. Accepts an optional `promotedObject.customEventType` with a TikTok optimization_event code your pixel tracks (newer pixels use e.g. SHOPPING for purchase events; legacy pixels use ON_WEB_ORDER, INITIATE_ORDER, ON_WEB_REGISTER or FORM). To inherit pixel and event from an existing ad group, pass `adSetId` instead. **LinkedIn** - `engagement`, `traffic`, `awareness` and `video_views` create standalone Direct Sponsored Content ads. `traffic` requires `linkUrl`; `video_views` requires `video`. - `job_applicants` requires a `platformSpecificData.jobs` creative. - For `lead_generation` or `conversions` on LinkedIn, or to promote an existing post, use POST /v1/ads/boost. **OpenAI Ads** - Only `traffic`, `awareness`, and `conversions` are supported (other goals return 400). Maps to OpenAI's `bidding_type` (clicks, impressions, conversions respectively). `conversions` requires an active conversion event setting on the account; create a tracking tag with `defaultEventType` via the tracking-tags API (`POST /v1/accounts/{accountId}/tracking-tags`), or configure a conversion event in OpenAI Ads Manager, or the request returns 422.
|
|
36
36
|
attr_accessor :goal
|
|
37
37
|
|
|
38
38
|
# Meta only. Explicit ad-set `optimization_goal` (e.g. `LANDING_PAGE_VIEWS`, `LINK_CLICKS`, `REACH`, `IMPRESSIONS`, `OFFSITE_CONVERSIONS`, `THRUPLAY`, `LEAD_GENERATION`). Overrides the default derived from `goal` (e.g. `traffic` defaults to `LINK_CLICKS`). Forwarded verbatim to Meta, which validates compatibility with the campaign objective and rejects incompatible combinations.
|
|
@@ -14,7 +14,7 @@ require 'date'
|
|
|
14
14
|
require 'time'
|
|
15
15
|
|
|
16
16
|
module Zernio
|
|
17
|
-
# What the ad optimises against. Behaviour depends on the platform. **Meta**: forwarded to the ad set's `promoted_object` (snake-cased). Required for goals whose ad-set optimization_goal points at a specific event/page/app (without it Meta rejects the ad-set create with `error_subcode: 1815430` \"Please select a promoted object for your ad set\"): - `goal: conversions` (OFFSITE_CONVERSIONS): requires `pixelId` + `customEventType` - `goal: app_promotion` (APP_INSTALLS): requires `applicationId` + `objectStoreUrl` - `goal: lead_generation` (LEAD_GENERATION): `pageId` is auto-filled from the connected Page when omitted Other Meta goals (engagement, traffic, awareness, video_views) ignore this field. **TikTok**: only `goal: conversions` uses it. - `pixelId` maps to the ad group's `pixel_id`. Required: a TikTok website-conversion ad group without a pixel is rejected with `40002: Please select a pixel`. - `customEventType` maps to the ad group's `optimization_event` (the pixel event to optimise for). Optional: TikTok accepts a pixel-only auto-bid conversion ad group. See the `customEventType` field below for the valid TikTok codes. The remaining `promotedObject.*` fields are Meta-only. Platforms other than Meta and TikTok ignore `promotedObject` entirely.
|
|
17
|
+
# What the ad optimises against. Behaviour depends on the platform. **Meta**: forwarded to the ad set's `promoted_object` (snake-cased). Required for goals whose ad-set optimization_goal points at a specific event/page/app (without it Meta rejects the ad-set create with `error_subcode: 1815430` \"Please select a promoted object for your ad set\"): - `goal: conversions` / `lead_conversion` (OFFSITE_CONVERSIONS): requires `pixelId` + `customEventType`, or `customConversionId` when optimising against a Custom Conversion (the conversion carries its own event definition) - `goal: app_promotion` (APP_INSTALLS): requires `applicationId` + `objectStoreUrl` - `goal: lead_generation` (LEAD_GENERATION): `pageId` is auto-filled from the connected Page when omitted Other Meta goals (engagement, traffic, awareness, video_views) ignore this field. **TikTok**: only `goal: conversions` uses it. - `pixelId` maps to the ad group's `pixel_id`. Required: a TikTok website-conversion ad group without a pixel is rejected with `40002: Please select a pixel`. - `customEventType` maps to the ad group's `optimization_event` (the pixel event to optimise for). Optional: TikTok accepts a pixel-only auto-bid conversion ad group. See the `customEventType` field below for the valid TikTok codes. The remaining `promotedObject.*` fields are Meta-only. Platforms other than Meta and TikTok ignore `promotedObject` entirely.
|
|
18
18
|
class CreateStandaloneAdRequestPromotedObject < ApiModelBase
|
|
19
19
|
# Pixel ID. **Meta:** Facebook Pixel ID, required for `goal: conversions`. **TikTok:** TikTok Pixel ID, required for `goal: conversions`.
|
|
20
20
|
attr_accessor :pixel_id
|