late-sdk 0.0.814 → 0.0.816

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c95b79b6876df7fb7f4385e253843605d074b4b19457661bd7f9c9af818caa80
4
- data.tar.gz: 43aff17db2343a74defc77ae4f4037917e723de09c976707c3638bfcfbc31be9
3
+ metadata.gz: 3525f01a2062dc2131d0647fdcc7562a2774796b17c10d53066211d8b552a953
4
+ data.tar.gz: 3e9107679f37470121ddbd7b81ae7daf90a200f608ac0f33d0e662908db87a54
5
5
  SHA512:
6
- metadata.gz: d98f486356d57acb61514522ae9f7c6aa0d415f84a10b5781b77efeadf0ea6870e508de934a0a9b41ed5dcdeb82fffc1e598b453ed8c96a6b4670f5e2885d095
7
- data.tar.gz: 66e8a8121c2106e9106f1dc4f8e01a343ef149d5a029731ed3c8c365bf85ae4b1a3ad3362d352519b1ac30d08cf46c35f678a67649efd5ce6554ac4974b1bf94
6
+ metadata.gz: e99fdffbd77b99c0a73bbb49050510b21195597e76137daad38700e7b1fb29056ee1849c21dab534a845cff16af5c7826dce3c1ea04a19bbefe7043c6c2f64c9
7
+ data.tar.gz: 6f38e29b952c553f6f6272bcc53424591a32599d8ff7566cafd10e6c18d4f106183143b4dc7a30dfbdd0a15b064d169521b628afca0d4141bf4b702f69b69dc2
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **String** | | [optional] |
7
+ | **id** | **String** | The platform's own message id: the `wamid` on WhatsApp, the `mid` on Instagram and Facebook Messenger. This is what `metadata.quotedMessageId` points at, the value to pass as `replyTo` on the platforms that support quote-replies, and the `{messageId}` segment of the attachment-resolve URL. Webhooks deliver the same value as `message.platformMessageId`; this response has no field by that name. | [optional] |
8
8
  | **conversation_id** | **String** | | [optional] |
9
9
  | **account_id** | **String** | | [optional] |
10
10
  | **platform** | **String** | | [optional] |
@@ -30,7 +30,7 @@
30
30
  | **sent_at** | **Time** | Original send time for outgoing messages (used for Messenger watermark queries). | [optional] |
31
31
  | **delivery_error** | [**GetInboxConversationMessages200ResponseMessagesInnerDeliveryError**](GetInboxConversationMessages200ResponseMessagesInnerDeliveryError.md) | | [optional] |
32
32
  | **reactions** | [**Array<GetInboxConversationMessages200ResponseMessagesInnerReactionsInner>**](GetInboxConversationMessages200ResponseMessagesInnerReactionsInner.md) | Emoji reactions on this message (WhatsApp / Telegram). At most one per party in a 1:1 thread. | [optional] |
33
- | **metadata** | **Hash<String, Object>** | Platform-specific extras. Free-form, but commonly includes: `quotedMessageId` (platformMessageId this message replies to), `waInteractive` (a compact descriptor of WhatsApp interactive content sent: buttons / list / cta_url / flow / location_request), and for inbound interactive taps `interactiveType` / `interactiveId`. It can also carry `source` (`whatsapp_business_app` / `coexistence_history` on a WhatsApp Coexistence number, `bulk-api` on a POST /v1/whatsapp/bulk send), which is where the message reached us from rather than who produced it: read `sentVia` for that. | [optional] |
33
+ | **metadata** | **Hash<String, Object>** | Platform-specific extras. Free-form, but commonly includes: `quotedMessageId` (the `id` of the message this one replies to, delivered as `message.platformMessageId` on webhooks), `waInteractive` (a compact descriptor of WhatsApp interactive content sent: buttons / list / cta_url / flow / location_request), and for inbound interactive taps `interactiveType` / `interactiveId`. It can also carry `source` (`whatsapp_business_app` / `coexistence_history` on a WhatsApp Coexistence number, `bulk-api` on a POST /v1/whatsapp/bulk send), which is where the message reached us from rather than who produced it: read `sentVia` for that. | [optional] |
34
34
  | **sent_via** | **String** | Which Zernio surface produced this outgoing message: `human` (an operator in the Zernio inbox), `api` (a call to this API), `broadcast`, `sequence`, `workflow`, `comment_automation`, or `bulk-api` (POST /v1/whatsapp/bulk). Same vocabulary as the `source` filter on the inbox analytics endpoints. Always present, and `null` whenever the lineage is unknown: every incoming message, any outgoing message sent from the platform's own app, and every message stored before this field shipped (2026-08). Existing messages are NOT backfilled, so treat `null` as \"unknown\", never as \"sent by a human\". | [optional] |
35
35
 
36
36
  ## Example
@@ -19,7 +19,7 @@
19
19
  | **reply_markup** | [**SendInboxMessageRequestReplyMarkup**](SendInboxMessageRequestReplyMarkup.md) | | [optional] |
20
20
  | **messaging_type** | **String** | Facebook messaging type. Required when using messageTag. | [optional] |
21
21
  | **message_tag** | **String** | Facebook message tag for messaging outside 24h window. Requires messagingType MESSAGE_TAG. Instagram only supports HUMAN_AGENT. | [optional] |
22
- | **reply_to** | **String** | Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (both available in message.platformMessageId from webhooks or the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta's Send API rejects reply_to on Instagram and does not expose it on Messenger). | [optional] |
22
+ | **reply_to** | **String** | Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta's Send API rejects reply_to on Instagram and does not expose it on Messenger). | [optional] |
23
23
  | **location** | [**SendInboxMessageRequestLocation**](SendInboxMessageRequestLocation.md) | | [optional] |
24
24
  | **contacts** | [**Array<SendInboxMessageRequestContactsInner>**](SendInboxMessageRequestContactsInner.md) | WhatsApp-only. Send one or more contact cards. | [optional] |
25
25
 
@@ -1219,7 +1219,7 @@ nil (empty response body)
1219
1219
 
1220
1220
  Message sent event
1221
1221
 
1222
- Fired when a message is sent via the API, or from the WhatsApp Business app on Coexistence numbers. Sends that carry platform-specific context deliver it under `metadata`, so a quote-reply arrives with `metadata.quotedMessageId` and mirroring CRMs can thread it without a lookup.
1222
+ Fired when a message is sent via the API, or from the WhatsApp Business app on Coexistence numbers. Sends that carry platform-specific context deliver it under `metadata`, so a quote-reply sent through the API arrives with `metadata.quotedMessageId` and mirroring CRMs can thread it without a lookup. Which surfaces actually carry that reference is documented on `WebhookPayloadMessageSent.metadata.quotedMessageId`; a quote-reply sent from the WhatsApp Business or Instagram app is not one of them.
1223
1223
 
1224
1224
  ### Examples
1225
1225
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **quoted_message_id** | **String** | platformMessageId of the message this one is a quote-reply to. WhatsApp (`context.id`), Instagram and Facebook Messenger (`reply_to.mid`). Outgoing quote-replies carry the same field on `message.sent`; see WebhookPayloadMessageSent.metadata. | [optional] |
7
+ | **quoted_message_id** | **String** | platformMessageId of the message this one is a quote-reply to. WhatsApp (`context.id`), Instagram and Facebook Messenger (`reply_to.mid`). On outgoing messages the same field appears on `message.sent`, but only on some surfaces: see WebhookPayloadMessageSent.metadata.quotedMessageId. | [optional] |
8
8
  | **quick_reply_payload** | **String** | Payload from a quick reply tap (Facebook/Instagram Messenger). | [optional] |
9
9
  | **postback_payload** | **String** | Payload from a postback button tap (Facebook/Instagram Messenger). | [optional] |
10
10
  | **postback_title** | **String** | Title of the tapped postback button (Facebook/Instagram Messenger). | [optional] |
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **quoted_message_id** | **String** | platformMessageId of the message this send is a quote-reply to. Set when the reply was sent through Zernio with `replyTo` on the inbox send API (WhatsApp and Telegram), and when the operator replied from the native WhatsApp Business, Instagram or Messenger app. WhatsApp API sends carry it on the event fired from the delivery status, so it arrives on the same `message.sent` as any other WhatsApp send. | [optional] |
7
+ | **quoted_message_id** | **String** | `platformMessageId` of the message this send is a quote-reply to. Present when the reply was sent through Zernio with `replyTo` on the inbox send API (WhatsApp and Telegram). A WhatsApp API send fires its `message.sent` off the delivery status, and the quote reference is forwarded from the stored send there, so it arrives on the same `message.sent` as any other WhatsApp send. Not delivered on Instagram echoes. Zernio forwards `reply_to.mid` whenever Meta puts it on an echo, but on Instagram Meta does not send it, so a reply the operator quoted in the Instagram app arrives with no `quotedMessageId`. Facebook Messenger rides a separate subscription (`message_echoes`) and has not been measured, so treat it as unverified rather than supported. Absent on WhatsApp Coexistence echoes. Meta omits the quote context from `smb_message_echoes`, so a reply the operator sent from the WhatsApp Business app arrives with no `quotedMessageId` even though WhatsApp shows it as a quote-reply. Do not read the absence of this field as \"not a reply\". | [optional] |
8
8
  | **thread_ts** | **String** | Slack only. Parent thread ts of the sent message. Pass it back as `replyTo` on the inbox send API to keep replying inside the thread. | [optional] |
9
9
 
10
10
  ## Example
data/docs/WebhooksApi.md CHANGED
@@ -304,7 +304,7 @@ This endpoint does not need any parameter.
304
304
 
305
305
  Redeliver a webhook event
306
306
 
307
- Replay a past delivery: the original payload is re-sent, byte for byte, to the subscription's current URL. The original event ID is preserved so your endpoint can dedupe, and the replay is recorded as a fresh attempt, so it shows up in `GET /v1/webhooks/logs` next to the delivery it replays. Both `webhookId` and `eventId` come from a row of `GET /v1/webhooks/logs`. Because the stored payload is replayed as-is, a redelivery reflects the event as it was emitted, not the current state of the resource. Only deliveries inside the 30-day log retention window can be replayed; past that the payload is gone and the request fails with a 500. Replays run the same resource-group checks as live delivery, against both the key's groups and the subscription's `disabledResourceGroups`.
307
+ Replay a past delivery: the original payload is re-sent, byte for byte, to the subscription's current URL. The original event ID is preserved so your endpoint can dedupe, and the replay is recorded as a fresh attempt, so it shows up in `GET /v1/webhooks/logs` next to the delivery it replays. Both `webhookId` and `eventId` come from a row of `GET /v1/webhooks/logs`. Because the stored payload is replayed as-is, a redelivery reflects the event as it was emitted, not the current state of the resource. Only deliveries inside the 30-day log retention window can be replayed; past that the payload is gone and the request fails with a 422. Replays run the same resource-group checks as live delivery, against both the key's groups and the subscription's `disabledResourceGroups`.
308
308
 
309
309
  ### Examples
310
310
 
@@ -1142,7 +1142,7 @@ module Zernio
1142
1142
  end
1143
1143
 
1144
1144
  # Message sent event
1145
- # Fired when a message is sent via the API, or from the WhatsApp Business app on Coexistence numbers. Sends that carry platform-specific context deliver it under `metadata`, so a quote-reply arrives with `metadata.quotedMessageId` and mirroring CRMs can thread it without a lookup.
1145
+ # Fired when a message is sent via the API, or from the WhatsApp Business app on Coexistence numbers. Sends that carry platform-specific context deliver it under `metadata`, so a quote-reply sent through the API arrives with `metadata.quotedMessageId` and mirroring CRMs can thread it without a lookup. Which surfaces actually carry that reference is documented on `WebhookPayloadMessageSent.metadata.quotedMessageId`; a quote-reply sent from the WhatsApp Business or Instagram app is not one of them.
1146
1146
  # @param webhook_payload_message_sent [WebhookPayloadMessageSent]
1147
1147
  # @param [Hash] opts the optional parameters
1148
1148
  # @return [nil]
@@ -1152,7 +1152,7 @@ module Zernio
1152
1152
  end
1153
1153
 
1154
1154
  # Message sent event
1155
- # Fired when a message is sent via the API, or from the WhatsApp Business app on Coexistence numbers. Sends that carry platform-specific context deliver it under `metadata`, so a quote-reply arrives with `metadata.quotedMessageId` and mirroring CRMs can thread it without a lookup.
1155
+ # Fired when a message is sent via the API, or from the WhatsApp Business app on Coexistence numbers. Sends that carry platform-specific context deliver it under `metadata`, so a quote-reply sent through the API arrives with `metadata.quotedMessageId` and mirroring CRMs can thread it without a lookup. Which surfaces actually carry that reference is documented on `WebhookPayloadMessageSent.metadata.quotedMessageId`; a quote-reply sent from the WhatsApp Business or Instagram app is not one of them.
1156
1156
  # @param webhook_payload_message_sent [WebhookPayloadMessageSent]
1157
1157
  # @param [Hash] opts the optional parameters
1158
1158
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -333,7 +333,7 @@ module Zernio
333
333
  end
334
334
 
335
335
  # Redeliver a webhook event
336
- # Replay a past delivery: the original payload is re-sent, byte for byte, to the subscription's current URL. The original event ID is preserved so your endpoint can dedupe, and the replay is recorded as a fresh attempt, so it shows up in `GET /v1/webhooks/logs` next to the delivery it replays. Both `webhookId` and `eventId` come from a row of `GET /v1/webhooks/logs`. Because the stored payload is replayed as-is, a redelivery reflects the event as it was emitted, not the current state of the resource. Only deliveries inside the 30-day log retention window can be replayed; past that the payload is gone and the request fails with a 500. Replays run the same resource-group checks as live delivery, against both the key's groups and the subscription's `disabledResourceGroups`.
336
+ # Replay a past delivery: the original payload is re-sent, byte for byte, to the subscription's current URL. The original event ID is preserved so your endpoint can dedupe, and the replay is recorded as a fresh attempt, so it shows up in `GET /v1/webhooks/logs` next to the delivery it replays. Both `webhookId` and `eventId` come from a row of `GET /v1/webhooks/logs`. Because the stored payload is replayed as-is, a redelivery reflects the event as it was emitted, not the current state of the resource. Only deliveries inside the 30-day log retention window can be replayed; past that the payload is gone and the request fails with a 422. Replays run the same resource-group checks as live delivery, against both the key's groups and the subscription's `disabledResourceGroups`.
337
337
  # @param redeliver_webhook_event_request [RedeliverWebhookEventRequest]
338
338
  # @param [Hash] opts the optional parameters
339
339
  # @return [UnpublishPost200Response]
@@ -343,7 +343,7 @@ module Zernio
343
343
  end
344
344
 
345
345
  # Redeliver a webhook event
346
- # Replay a past delivery: the original payload is re-sent, byte for byte, to the subscription&#39;s current URL. The original event ID is preserved so your endpoint can dedupe, and the replay is recorded as a fresh attempt, so it shows up in &#x60;GET /v1/webhooks/logs&#x60; next to the delivery it replays. Both &#x60;webhookId&#x60; and &#x60;eventId&#x60; come from a row of &#x60;GET /v1/webhooks/logs&#x60;. Because the stored payload is replayed as-is, a redelivery reflects the event as it was emitted, not the current state of the resource. Only deliveries inside the 30-day log retention window can be replayed; past that the payload is gone and the request fails with a 500. Replays run the same resource-group checks as live delivery, against both the key&#39;s groups and the subscription&#39;s &#x60;disabledResourceGroups&#x60;.
346
+ # Replay a past delivery: the original payload is re-sent, byte for byte, to the subscription&#39;s current URL. The original event ID is preserved so your endpoint can dedupe, and the replay is recorded as a fresh attempt, so it shows up in &#x60;GET /v1/webhooks/logs&#x60; next to the delivery it replays. Both &#x60;webhookId&#x60; and &#x60;eventId&#x60; come from a row of &#x60;GET /v1/webhooks/logs&#x60;. Because the stored payload is replayed as-is, a redelivery reflects the event as it was emitted, not the current state of the resource. Only deliveries inside the 30-day log retention window can be replayed; past that the payload is gone and the request fails with a 422. Replays run the same resource-group checks as live delivery, against both the key&#39;s groups and the subscription&#39;s &#x60;disabledResourceGroups&#x60;.
347
347
  # @param redeliver_webhook_event_request [RedeliverWebhookEventRequest]
348
348
  # @param [Hash] opts the optional parameters
349
349
  # @return [Array<(UnpublishPost200Response, Integer, Hash)>] UnpublishPost200Response data, response status code and response headers
@@ -15,6 +15,7 @@ require 'time'
15
15
 
16
16
  module Zernio
17
17
  class GetInboxConversationMessages200ResponseMessagesInner < ApiModelBase
18
+ # The platform's own message id: the `wamid` on WhatsApp, the `mid` on Instagram and Facebook Messenger. This is what `metadata.quotedMessageId` points at, the value to pass as `replyTo` on the platforms that support quote-replies, and the `{messageId}` segment of the attachment-resolve URL. Webhooks deliver the same value as `message.platformMessageId`; this response has no field by that name.
18
19
  attr_accessor :id
19
20
 
20
21
  attr_accessor :conversation_id
@@ -79,7 +80,7 @@ module Zernio
79
80
  # Emoji reactions on this message (WhatsApp / Telegram). At most one per party in a 1:1 thread.
80
81
  attr_accessor :reactions
81
82
 
82
- # Platform-specific extras. Free-form, but commonly includes: `quotedMessageId` (platformMessageId this message replies to), `waInteractive` (a compact descriptor of WhatsApp interactive content sent: buttons / list / cta_url / flow / location_request), and for inbound interactive taps `interactiveType` / `interactiveId`. It can also carry `source` (`whatsapp_business_app` / `coexistence_history` on a WhatsApp Coexistence number, `bulk-api` on a POST /v1/whatsapp/bulk send), which is where the message reached us from rather than who produced it: read `sentVia` for that.
83
+ # Platform-specific extras. Free-form, but commonly includes: `quotedMessageId` (the `id` of the message this one replies to, delivered as `message.platformMessageId` on webhooks), `waInteractive` (a compact descriptor of WhatsApp interactive content sent: buttons / list / cta_url / flow / location_request), and for inbound interactive taps `interactiveType` / `interactiveId`. It can also carry `source` (`whatsapp_business_app` / `coexistence_history` on a WhatsApp Coexistence number, `bulk-api` on a POST /v1/whatsapp/bulk send), which is where the message reached us from rather than who produced it: read `sentVia` for that.
83
84
  attr_accessor :metadata
84
85
 
85
86
  # Which Zernio surface produced this outgoing message: `human` (an operator in the Zernio inbox), `api` (a call to this API), `broadcast`, `sequence`, `workflow`, `comment_automation`, or `bulk-api` (POST /v1/whatsapp/bulk). Same vocabulary as the `source` filter on the inbox analytics endpoints. Always present, and `null` whenever the lineage is unknown: every incoming message, any outgoing message sent from the platform's own app, and every message stored before this field shipped (2026-08). Existing messages are NOT backfilled, so treat `null` as \"unknown\", never as \"sent by a human\".
@@ -57,7 +57,7 @@ module Zernio
57
57
  # Facebook message tag for messaging outside 24h window. Requires messagingType MESSAGE_TAG. Instagram only supports HUMAN_AGENT.
58
58
  attr_accessor :message_tag
59
59
 
60
- # Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (both available in message.platformMessageId from webhooks or the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta's Send API rejects reply_to on Instagram and does not expose it on Messenger).
60
+ # Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta's Send API rejects reply_to on Instagram and does not expose it on Messenger).
61
61
  attr_accessor :reply_to
62
62
 
63
63
  attr_accessor :location
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- # Replace or patch the ad's creative. Meta, TikTok, and LinkedIn. - **Meta**: patch-style. Pass any subset — fields you omit are preserved from the live creative, including media (`image_hash`/`video_id` are reused, no re-upload) and `url_tags`. Sending the full set (`headline`, `body`, `callToAction`, `linkUrl`, `imageUrl`) rebuilds the creative from scratch instead. Partial patching reads the live `object_story_spec`, which Meta strips on SHARE / page-post / dark / asset_feed creatives — those return 422 asking for the full set. A `videoUrl`/`videoId` on an image creative is a type change and also needs the full set. `existingCreativeId` repoints the ad at a creative from GET /v1/ads/creatives and ignores every other field. Meta creatives are immutable, so any change creates a new creative and repoints the ad; the old creative is retained on the ad account for historical reporting. - **TikTok**: patch-style. Pass any subset; `headline` is ignored (TikTok creatives have no headline slot). `body` becomes the in-feed `ad_text`; `linkUrl` becomes `landing_page_url`; `videoUrl` triggers a fresh upload. `description`, `videoId` and `existingCreativeId` are Meta-only and return 400. - **LinkedIn**: uploads new media (image via `imageUrl` or video via `videoUrl`), creates a new inline media creative on the same campaign, and pauses the old creative (best-effort). The old creative is retained for historical reporting. `videoId` and `existingCreativeId` are Meta-only and return 400.
17
+ # Replace or patch the ad's creative. Meta, TikTok, and LinkedIn. - **Meta**: patch-style. Pass any subset — fields you omit are preserved from the live creative, including media (`image_hash`/`video_id` are reused, no re-upload) and `url_tags`. Sending the full set (`headline`, `body`, `callToAction`, `linkUrl`, `imageUrl`) rebuilds the creative from scratch instead. Partial patching reads the live `object_story_spec`, which Meta strips on SHARE / page-post / dark / asset_feed creatives — those return 422 asking for the full set. A `videoUrl`/`videoId` on an image creative is a type change and also needs the full set. `existingCreativeId` repoints the ad at a creative from GET /v1/ads/creatives and ignores every other field. Meta creatives are immutable, so any change creates a new creative and repoints the ad; the old creative is retained on the ad account for historical reporting. - **TikTok**: patch-style. Pass any subset; `headline` is ignored (TikTok creatives have no headline slot). `body` becomes the in-feed `ad_text`; `linkUrl` becomes `landing_page_url`; `videoUrl` triggers a fresh upload. `description`, `videoId` and `existingCreativeId` are Meta-only and return 400. - **LinkedIn**: requires new media (image via `imageUrl` or video via `videoUrl`); a text-only creative update returns 400. Uploads the media, creates a new inline media creative on the same campaign, and pauses the old creative (best-effort). The old creative is retained for historical reporting. `videoId` and `existingCreativeId` are Meta-only and return 400.
18
18
  class UpdateAdRequestCreative < ApiModelBase
19
19
  # Meta and LinkedIn (TikTok has no headline slot)
20
20
  attr_accessor :headline
@@ -16,7 +16,7 @@ require 'time'
16
16
  module Zernio
17
17
  # Platform-specific message context (present when the message is a quick reply tap, postback button tap, inline keyboard callback, or a quote-reply to an earlier message)
18
18
  class WebhookPayloadMessageMetadata < ApiModelBase
19
- # platformMessageId of the message this one is a quote-reply to. WhatsApp (`context.id`), Instagram and Facebook Messenger (`reply_to.mid`). Outgoing quote-replies carry the same field on `message.sent`; see WebhookPayloadMessageSent.metadata.
19
+ # platformMessageId of the message this one is a quote-reply to. WhatsApp (`context.id`), Instagram and Facebook Messenger (`reply_to.mid`). On outgoing messages the same field appears on `message.sent`, but only on some surfaces: see WebhookPayloadMessageSent.metadata.quotedMessageId.
20
20
  attr_accessor :quoted_message_id
21
21
 
22
22
  # Payload from a quick reply tap (Facebook/Instagram Messenger).
@@ -16,7 +16,7 @@ require 'time'
16
16
  module Zernio
17
17
  # Platform-specific context for the sent message. The key is present only when the send carried some context, and absent otherwise: it is never null and never an empty object.
18
18
  class WebhookPayloadMessageSentMetadata < ApiModelBase
19
- # platformMessageId of the message this send is a quote-reply to. Set when the reply was sent through Zernio with `replyTo` on the inbox send API (WhatsApp and Telegram), and when the operator replied from the native WhatsApp Business, Instagram or Messenger app. WhatsApp API sends carry it on the event fired from the delivery status, so it arrives on the same `message.sent` as any other WhatsApp send.
19
+ # `platformMessageId` of the message this send is a quote-reply to. Present when the reply was sent through Zernio with `replyTo` on the inbox send API (WhatsApp and Telegram). A WhatsApp API send fires its `message.sent` off the delivery status, and the quote reference is forwarded from the stored send there, so it arrives on the same `message.sent` as any other WhatsApp send. Not delivered on Instagram echoes. Zernio forwards `reply_to.mid` whenever Meta puts it on an echo, but on Instagram Meta does not send it, so a reply the operator quoted in the Instagram app arrives with no `quotedMessageId`. Facebook Messenger rides a separate subscription (`message_echoes`) and has not been measured, so treat it as unverified rather than supported. Absent on WhatsApp Coexistence echoes. Meta omits the quote context from `smb_message_echoes`, so a reply the operator sent from the WhatsApp Business app arrives with no `quotedMessageId` even though WhatsApp shows it as a quote-reply. Do not read the absence of this field as \"not a reply\".
20
20
  attr_accessor :quoted_message_id
21
21
 
22
22
  # Slack only. Parent thread ts of the sent message. Pass it back as `replyTo` on the inbox send API to keep replying inside the thread.
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.814'
14
+ VERSION = '0.0.816'
15
15
  end
data/openapi.yaml CHANGED
@@ -3749,8 +3749,9 @@ components:
3749
3749
  description: |
3750
3750
  platformMessageId of the message this one is a quote-reply to.
3751
3751
  WhatsApp (`context.id`), Instagram and Facebook Messenger
3752
- (`reply_to.mid`). Outgoing quote-replies carry the same field on
3753
- `message.sent`; see WebhookPayloadMessageSent.metadata.
3752
+ (`reply_to.mid`). On outgoing messages the same field appears on
3753
+ `message.sent`, but only on some surfaces: see
3754
+ WebhookPayloadMessageSent.metadata.quotedMessageId.
3754
3755
  quickReplyPayload:
3755
3756
  type: string
3756
3757
  description: Payload from a quick reply tap (Facebook/Instagram Messenger).
@@ -4142,13 +4143,27 @@ components:
4142
4143
  quotedMessageId:
4143
4144
  type: string
4144
4145
  description: |
4145
- platformMessageId of the message this send is a quote-reply to.
4146
- Set when the reply was sent through Zernio with `replyTo` on the
4147
- inbox send API (WhatsApp and Telegram), and when the operator
4148
- replied from the native WhatsApp Business, Instagram or Messenger
4149
- app. WhatsApp API sends carry it on the event fired from the
4150
- delivery status, so it arrives on the same `message.sent` as any
4151
- other WhatsApp send.
4146
+ `platformMessageId` of the message this send is a quote-reply to.
4147
+
4148
+ Present when the reply was sent through Zernio with `replyTo` on
4149
+ the inbox send API (WhatsApp and Telegram). A WhatsApp API send
4150
+ fires its `message.sent` off the delivery status, and the quote
4151
+ reference is forwarded from the stored send there, so it arrives
4152
+ on the same `message.sent` as any other WhatsApp send.
4153
+
4154
+ Not delivered on Instagram echoes. Zernio forwards
4155
+ `reply_to.mid` whenever Meta puts it on an echo, but on
4156
+ Instagram Meta does not send it, so a reply the operator quoted
4157
+ in the Instagram app arrives with no `quotedMessageId`.
4158
+ Facebook Messenger rides a separate subscription
4159
+ (`message_echoes`) and has not been measured, so treat it as
4160
+ unverified rather than supported.
4161
+
4162
+ Absent on WhatsApp Coexistence echoes. Meta omits the quote
4163
+ context from `smb_message_echoes`, so a reply the operator sent
4164
+ from the WhatsApp Business app arrives with no `quotedMessageId`
4165
+ even though WhatsApp shows it as a quote-reply. Do not read the
4166
+ absence of this field as "not a reply".
4152
4167
  threadTs:
4153
4168
  type: string
4154
4169
  description: |
@@ -9523,8 +9538,11 @@ webhooks:
9523
9538
  description: |
9524
9539
  Fired when a message is sent via the API, or from the WhatsApp Business app on
9525
9540
  Coexistence numbers. Sends that carry platform-specific context deliver it under
9526
- `metadata`, so a quote-reply arrives with `metadata.quotedMessageId` and mirroring
9527
- CRMs can thread it without a lookup.
9541
+ `metadata`, so a quote-reply sent through the API arrives with
9542
+ `metadata.quotedMessageId` and mirroring CRMs can thread it without a lookup.
9543
+ Which surfaces actually carry that reference is documented on
9544
+ `WebhookPayloadMessageSent.metadata.quotedMessageId`; a quote-reply sent from
9545
+ the WhatsApp Business or Instagram app is not one of them.
9528
9546
  tags: [Webhook Events]
9529
9547
  requestBody:
9530
9548
  required: true
@@ -25679,7 +25697,7 @@ paths:
25679
25697
  emitted, not the current state of the resource.
25680
25698
 
25681
25699
  Only deliveries inside the 30-day log retention window can be replayed; past that
25682
- the payload is gone and the request fails with a 500. Replays run the same
25700
+ the payload is gone and the request fails with a 422. Replays run the same
25683
25701
  resource-group checks as live delivery, against both the key's groups and the
25684
25702
  subscription's `disabledResourceGroups`.
25685
25703
  security:
@@ -25718,10 +25736,11 @@ paths:
25718
25736
  example:
25719
25737
  success: true
25720
25738
  message: "Webhook re-delivered"
25721
- '400': { description: 'webhookId or eventId missing or empty' }
25739
+ '400': { description: 'webhookId or eventId missing or empty, or the subscription has no URL configured' }
25722
25740
  '401': { $ref: '#/components/responses/Unauthorized' }
25723
25741
  '403': { $ref: '#/components/responses/ResourceGroupForbidden' }
25724
- '500': { description: 'Webhook no longer exists, has no URL configured, or the original payload is outside the 30-day retention window' }
25742
+ '404': { description: 'Webhook subscription not found' }
25743
+ '422': { description: 'Original payload not replayable: no delivery matches this event inside the 30-day retention window, or the stored payload is truncated or not valid JSON' }
25725
25744
  '502':
25726
25745
  description: |
25727
25746
  Re-delivery was attempted but your endpoint errored again. The attempt is still
@@ -26873,7 +26892,16 @@ paths:
26873
26892
  items:
26874
26893
  type: object
26875
26894
  properties:
26876
- id: { type: string }
26895
+ id:
26896
+ type: string
26897
+ description: |
26898
+ The platform's own message id: the `wamid` on WhatsApp, the
26899
+ `mid` on Instagram and Facebook Messenger. This is what
26900
+ `metadata.quotedMessageId` points at, the value to pass as
26901
+ `replyTo` on the platforms that support quote-replies, and the
26902
+ `{messageId}` segment of the attachment-resolve URL. Webhooks
26903
+ deliver the same value as `message.platformMessageId`; this
26904
+ response has no field by that name.
26877
26905
  conversationId: { type: string }
26878
26906
  accountId: { type: string }
26879
26907
  platform: { type: string }
@@ -26968,7 +26996,8 @@ paths:
26968
26996
  type: object
26969
26997
  description: |
26970
26998
  Platform-specific extras. Free-form, but commonly includes:
26971
- `quotedMessageId` (platformMessageId this message replies to),
26999
+ `quotedMessageId` (the `id` of the message this one replies to,
27000
+ delivered as `message.platformMessageId` on webhooks),
26972
27001
  `waInteractive` (a compact descriptor of WhatsApp interactive
26973
27002
  content sent: buttons / list / cta_url / flow / location_request),
26974
27003
  and for inbound interactive taps `interactiveType` / `interactiveId`.
@@ -27505,7 +27534,7 @@ paths:
27505
27534
  description: Facebook message tag for messaging outside 24h window. Requires messagingType MESSAGE_TAG. Instagram only supports HUMAN_AGENT.
27506
27535
  replyTo:
27507
27536
  type: string
27508
- description: 'Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (both available in message.platformMessageId from webhooks or the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta''s Send API rejects reply_to on Instagram and does not expose it on Messenger).'
27537
+ description: 'Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta''s Send API rejects reply_to on Instagram and does not expose it on Messenger).'
27509
27538
  location:
27510
27539
  type: object
27511
27540
  description: WhatsApp-only. Send a location pin.
@@ -27595,7 +27624,7 @@ paths:
27595
27624
  description: Message tag (requires messagingType MESSAGE_TAG)
27596
27625
  replyTo:
27597
27626
  type: string
27598
- description: 'Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (both available in message.platformMessageId from webhooks or the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta''s Send API rejects reply_to on Instagram and does not expose it on Messenger).'
27627
+ description: 'Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta''s Send API rejects reply_to on Instagram and does not expose it on Messenger).'
27599
27628
  voiceNote:
27600
27629
  type: string
27601
27630
  enum: ['true']
@@ -41634,10 +41663,11 @@ paths:
41634
41663
  have no headline slot). `body` becomes the in-feed `ad_text`; `linkUrl` becomes
41635
41664
  `landing_page_url`; `videoUrl` triggers a fresh upload. `description`, `videoId`
41636
41665
  and `existingCreativeId` are Meta-only and return 400.
41637
- - **LinkedIn**: uploads new media (image via `imageUrl` or video via `videoUrl`),
41638
- creates a new inline media creative on the same campaign, and pauses the old
41639
- creative (best-effort). The old creative is retained for historical reporting.
41640
- `videoId` and `existingCreativeId` are Meta-only and return 400.
41666
+ - **LinkedIn**: requires new media (image via `imageUrl` or video via `videoUrl`);
41667
+ a text-only creative update returns 400. Uploads the media, creates a new inline
41668
+ media creative on the same campaign, and pauses the old creative (best-effort).
41669
+ The old creative is retained for historical reporting. `videoId` and
41670
+ `existingCreativeId` are Meta-only and return 400.
41641
41671
  properties:
41642
41672
  headline: { type: string, description: "Meta and LinkedIn (TikTok has no headline slot)" }
41643
41673
  body: { type: string }
@@ -41660,7 +41690,7 @@ paths:
41660
41690
  ad: { $ref: '#/components/schemas/Ad' }
41661
41691
  message: { type: string }
41662
41692
  '400':
41663
- description: Invalid status transition or budget below minimum
41693
+ description: 'Invalid status transition, budget below minimum, or a LinkedIn creative update without imageUrl or videoUrl'
41664
41694
  '401': { $ref: '#/components/responses/Unauthorized' }
41665
41695
  '404': { $ref: '#/components/responses/NotFound' }
41666
41696
  '501': { description: "targeting or creative not supported on the platform (supported on Meta, TikTok, and LinkedIn)" }
@@ -86,7 +86,7 @@ describe 'WebhooksApi' do
86
86
 
87
87
  # unit tests for redeliver_webhook_event
88
88
  # Redeliver a webhook event
89
- # Replay a past delivery: the original payload is re-sent, byte for byte, to the subscription&#39;s current URL. The original event ID is preserved so your endpoint can dedupe, and the replay is recorded as a fresh attempt, so it shows up in &#x60;GET /v1/webhooks/logs&#x60; next to the delivery it replays. Both &#x60;webhookId&#x60; and &#x60;eventId&#x60; come from a row of &#x60;GET /v1/webhooks/logs&#x60;. Because the stored payload is replayed as-is, a redelivery reflects the event as it was emitted, not the current state of the resource. Only deliveries inside the 30-day log retention window can be replayed; past that the payload is gone and the request fails with a 500. Replays run the same resource-group checks as live delivery, against both the key&#39;s groups and the subscription&#39;s &#x60;disabledResourceGroups&#x60;.
89
+ # Replay a past delivery: the original payload is re-sent, byte for byte, to the subscription&#39;s current URL. The original event ID is preserved so your endpoint can dedupe, and the replay is recorded as a fresh attempt, so it shows up in &#x60;GET /v1/webhooks/logs&#x60; next to the delivery it replays. Both &#x60;webhookId&#x60; and &#x60;eventId&#x60; come from a row of &#x60;GET /v1/webhooks/logs&#x60;. Because the stored payload is replayed as-is, a redelivery reflects the event as it was emitted, not the current state of the resource. Only deliveries inside the 30-day log retention window can be replayed; past that the payload is gone and the request fails with a 422. Replays run the same resource-group checks as live delivery, against both the key&#39;s groups and the subscription&#39;s &#x60;disabledResourceGroups&#x60;.
90
90
  # @param redeliver_webhook_event_request
91
91
  # @param [Hash] opts the optional parameters
92
92
  # @return [UnpublishPost200Response]
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: late-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.814
4
+ version: 0.0.816
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
@@ -5557,7 +5557,7 @@ files:
5557
5557
  - spec/models/you_tube_video_retention_response_retention_curve_inner_spec.rb
5558
5558
  - spec/models/you_tube_video_retention_response_spec.rb
5559
5559
  - spec/spec_helper.rb
5560
- - zernio-sdk-0.0.814.gem
5560
+ - zernio-sdk-0.0.816.gem
5561
5561
  - zernio-sdk.gemspec
5562
5562
  homepage: https://openapi-generator.tech
5563
5563
  licenses:
Binary file