late-sdk 0.0.664 → 0.0.666
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 -4
- data/docs/CreateInboxConversationRequest.md +1 -1
- data/docs/ListSlackMembers200Response.md +18 -0
- data/docs/ListSlackMembers200ResponseMembersInner.md +24 -0
- data/docs/MessagesApi.md +1 -1
- data/docs/SendInboxMessageRequestInteractiveAction.md +3 -1
- data/docs/SendInboxMessageRequestInteractiveActionOneOf5.md +2 -4
- data/docs/SendInboxMessageRequestInteractiveActionOneOf6.md +2 -2
- data/docs/SendInboxMessageRequestInteractiveActionOneOf7.md +4 -4
- data/docs/{SendInboxMessageRequestInteractiveActionOneOf6SectionsInner.md → SendInboxMessageRequestInteractiveActionOneOf7SectionsInner.md} +3 -3
- data/docs/{SendInboxMessageRequestInteractiveActionOneOf6SectionsInnerProductItemsInner.md → SendInboxMessageRequestInteractiveActionOneOf7SectionsInnerProductItemsInner.md} +2 -2
- data/docs/SendInboxMessageRequestInteractiveActionOneOf8.md +4 -2
- data/docs/{SendInboxMessageRequestInteractiveActionOneOf7Parameters.md → SendInboxMessageRequestInteractiveActionOneOf8Parameters.md} +2 -2
- data/docs/SendInboxMessageRequestInteractiveActionOneOf9.md +18 -0
- data/docs/{SendInboxMessageRequestInteractiveActionOneOf8CardsInner.md → SendInboxMessageRequestInteractiveActionOneOf9CardsInner.md} +2 -2
- data/docs/SlackApi.md +83 -0
- data/docs/WebhookPayloadMessageMetadata.md +4 -0
- data/lib/zernio-sdk/api/messages_api.rb +2 -2
- data/lib/zernio-sdk/api/slack_api.rb +103 -0
- data/lib/zernio-sdk/models/create_inbox_conversation_request.rb +1 -1
- data/lib/zernio-sdk/models/list_slack_members200_response.rb +149 -0
- data/lib/zernio-sdk/models/list_slack_members200_response_members_inner.rb +180 -0
- data/lib/zernio-sdk/models/send_inbox_message_request_interactive.rb +3 -3
- data/lib/zernio-sdk/models/send_inbox_message_request_interactive_action.rb +2 -1
- data/lib/zernio-sdk/models/send_inbox_message_request_interactive_action_one_of5.rb +42 -46
- data/lib/zernio-sdk/models/send_inbox_message_request_interactive_action_one_of6.rb +18 -38
- data/lib/zernio-sdk/models/send_inbox_message_request_interactive_action_one_of7.rb +64 -49
- data/lib/zernio-sdk/models/{send_inbox_message_request_interactive_action_one_of6_sections_inner.rb → send_inbox_message_request_interactive_action_one_of7_sections_inner.rb} +4 -4
- data/lib/zernio-sdk/models/{send_inbox_message_request_interactive_action_one_of6_sections_inner_product_items_inner.rb → send_inbox_message_request_interactive_action_one_of7_sections_inner_product_items_inner.rb} +3 -3
- data/lib/zernio-sdk/models/send_inbox_message_request_interactive_action_one_of8.rb +52 -39
- data/lib/zernio-sdk/models/{send_inbox_message_request_interactive_action_one_of7_parameters.rb → send_inbox_message_request_interactive_action_one_of8_parameters.rb} +3 -3
- data/lib/zernio-sdk/models/send_inbox_message_request_interactive_action_one_of9.rb +185 -0
- data/lib/zernio-sdk/models/{send_inbox_message_request_interactive_action_one_of8_cards_inner.rb → send_inbox_message_request_interactive_action_one_of9_cards_inner.rb} +3 -3
- data/lib/zernio-sdk/models/webhook_payload_message_metadata.rb +35 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +8 -4
- data/openapi.yaml +87 -3
- data/spec/api/messages_api_spec.rb +1 -1
- data/spec/api/slack_api_spec.rb +49 -0
- data/spec/models/list_slack_members200_response_members_inner_spec.rb +54 -0
- data/spec/models/list_slack_members200_response_spec.rb +36 -0
- data/spec/models/send_inbox_message_request_interactive_action_one_of5_spec.rb +5 -7
- data/spec/models/send_inbox_message_request_interactive_action_one_of6_spec.rb +1 -1
- data/spec/models/{send_inbox_message_request_interactive_action_one_of6_sections_inner_product_items_inner_spec.rb → send_inbox_message_request_interactive_action_one_of7_sections_inner_product_items_inner_spec.rb} +6 -6
- data/spec/models/{send_inbox_message_request_interactive_action_one_of6_sections_inner_spec.rb → send_inbox_message_request_interactive_action_one_of7_sections_inner_spec.rb} +6 -6
- data/spec/models/send_inbox_message_request_interactive_action_one_of7_spec.rb +2 -6
- data/spec/models/{send_inbox_message_request_interactive_action_one_of7_parameters_spec.rb → send_inbox_message_request_interactive_action_one_of8_parameters_spec.rb} +6 -6
- data/spec/models/send_inbox_message_request_interactive_action_one_of8_spec.rb +11 -1
- data/spec/models/{send_inbox_message_request_interactive_action_one_of8_cards_inner_spec.rb → send_inbox_message_request_interactive_action_one_of9_cards_inner_spec.rb} +6 -6
- data/spec/models/send_inbox_message_request_interactive_action_one_of9_spec.rb +36 -0
- data/spec/models/send_inbox_message_request_interactive_spec.rb +1 -1
- data/spec/models/webhook_payload_message_metadata_spec.rb +16 -0
- data/zernio-sdk-0.0.666.gem +0 -0
- metadata +34 -18
- data/zernio-sdk-0.0.664.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: 014b4a3e2c935be51cfda88e94f014f071111168f3b845c09c103f7835f5ea76
|
|
4
|
+
data.tar.gz: 76508c5193b771242f841ea0ac05956629b8cc08f370f746b51f168563eb0dbe
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1fc60d43791fb1d3462f8c9162e545ccc09bcc01b518b8e6ce13ad576ac684d64a1b8c91d1653b23cea0309edde116e0839c7df60d30fbd1c27a4a9ad392f99d
|
|
7
|
+
data.tar.gz: 951a320ad95e26aea5e908ba59936dcbe2f256fe02fe4c5f56a1f15fd1307090574c2ad0e6b3407e78e86d0bf790e762e6f756b08884b88eb053ea5c5e04ba7f
|
data/README.md
CHANGED
|
@@ -459,6 +459,7 @@ Class | Method | HTTP request | Description
|
|
|
459
459
|
*Zernio::SequencesApi* | [**pause_sequence**](docs/SequencesApi.md#pause_sequence) | **POST** /v1/sequences/{sequenceId}/pause | Pause sequence
|
|
460
460
|
*Zernio::SequencesApi* | [**unenroll_contact**](docs/SequencesApi.md#unenroll_contact) | **DELETE** /v1/sequences/{sequenceId}/enroll/{contactId} | Unenroll contact
|
|
461
461
|
*Zernio::SequencesApi* | [**update_sequence**](docs/SequencesApi.md#update_sequence) | **PATCH** /v1/sequences/{sequenceId} | Update sequence
|
|
462
|
+
*Zernio::SlackApi* | [**list_slack_members**](docs/SlackApi.md#list_slack_members) | **GET** /v1/accounts/{accountId}/slack-members | List Slack workspace members
|
|
462
463
|
*Zernio::TrackingTagsApi* | [**add_tracking_tag_shared_account**](docs/TrackingTagsApi.md#add_tracking_tag_shared_account) | **POST** /v1/accounts/{accountId}/tracking-tags/{tagId}/shared-accounts | Share with an ad account
|
|
463
464
|
*Zernio::TrackingTagsApi* | [**create_tracking_tag**](docs/TrackingTagsApi.md#create_tracking_tag) | **POST** /v1/accounts/{accountId}/tracking-tags | Create a tracking tag
|
|
464
465
|
*Zernio::TrackingTagsApi* | [**get_ad_tracking_tags**](docs/TrackingTagsApi.md#get_ad_tracking_tags) | **GET** /v1/ads/{adId}/tracking-tags | Get ad tracking tags
|
|
@@ -1513,6 +1514,8 @@ Class | Method | HTTP request | Description
|
|
|
1513
1514
|
- [Zernio::ListSequenceEnrollments200ResponseEnrollmentsInner](docs/ListSequenceEnrollments200ResponseEnrollmentsInner.md)
|
|
1514
1515
|
- [Zernio::ListSequences200Response](docs/ListSequences200Response.md)
|
|
1515
1516
|
- [Zernio::ListSequences200ResponseSequencesInner](docs/ListSequences200ResponseSequencesInner.md)
|
|
1517
|
+
- [Zernio::ListSlackMembers200Response](docs/ListSlackMembers200Response.md)
|
|
1518
|
+
- [Zernio::ListSlackMembers200ResponseMembersInner](docs/ListSlackMembers200ResponseMembersInner.md)
|
|
1516
1519
|
- [Zernio::ListSmsOptOuts200Response](docs/ListSmsOptOuts200Response.md)
|
|
1517
1520
|
- [Zernio::ListSmsOptOuts200ResponseOptOutsInner](docs/ListSmsOptOuts200ResponseOptOutsInner.md)
|
|
1518
1521
|
- [Zernio::ListSmsRegistrations200Response](docs/ListSmsRegistrations200Response.md)
|
|
@@ -1771,12 +1774,13 @@ Class | Method | HTTP request | Description
|
|
|
1771
1774
|
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf4](docs/SendInboxMessageRequestInteractiveActionOneOf4.md)
|
|
1772
1775
|
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf5](docs/SendInboxMessageRequestInteractiveActionOneOf5.md)
|
|
1773
1776
|
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf6](docs/SendInboxMessageRequestInteractiveActionOneOf6.md)
|
|
1774
|
-
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf6SectionsInner](docs/SendInboxMessageRequestInteractiveActionOneOf6SectionsInner.md)
|
|
1775
|
-
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf6SectionsInnerProductItemsInner](docs/SendInboxMessageRequestInteractiveActionOneOf6SectionsInnerProductItemsInner.md)
|
|
1776
1777
|
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf7](docs/SendInboxMessageRequestInteractiveActionOneOf7.md)
|
|
1777
|
-
- [Zernio::
|
|
1778
|
+
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf7SectionsInner](docs/SendInboxMessageRequestInteractiveActionOneOf7SectionsInner.md)
|
|
1779
|
+
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf7SectionsInnerProductItemsInner](docs/SendInboxMessageRequestInteractiveActionOneOf7SectionsInnerProductItemsInner.md)
|
|
1778
1780
|
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf8](docs/SendInboxMessageRequestInteractiveActionOneOf8.md)
|
|
1779
|
-
- [Zernio::
|
|
1781
|
+
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf8Parameters](docs/SendInboxMessageRequestInteractiveActionOneOf8Parameters.md)
|
|
1782
|
+
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf9](docs/SendInboxMessageRequestInteractiveActionOneOf9.md)
|
|
1783
|
+
- [Zernio::SendInboxMessageRequestInteractiveActionOneOf9CardsInner](docs/SendInboxMessageRequestInteractiveActionOneOf9CardsInner.md)
|
|
1780
1784
|
- [Zernio::SendInboxMessageRequestInteractiveActionOneOfSectionsInner](docs/SendInboxMessageRequestInteractiveActionOneOfSectionsInner.md)
|
|
1781
1785
|
- [Zernio::SendInboxMessageRequestInteractiveActionOneOfSectionsInnerRowsInner](docs/SendInboxMessageRequestInteractiveActionOneOfSectionsInnerRowsInner.md)
|
|
1782
1786
|
- [Zernio::SendInboxMessageRequestInteractiveBody](docs/SendInboxMessageRequestInteractiveBody.md)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **account_id** | **String** | The social account ID to send from | |
|
|
8
|
-
| **participant_id** | **String** | Recipient identifier. For X this is the numeric user ID; for WhatsApp, the recipient phone number in international format (digits, country code included). Provide either this or participantUsername. | [optional] |
|
|
8
|
+
| **participant_id** | **String** | Recipient identifier. For X this is the numeric user ID; for WhatsApp and SMS, the recipient phone number in international format (digits, country code included); for Slack, the workspace member id (e.g. U01ABCDEF). Provide either this or participantUsername. | [optional] |
|
|
9
9
|
| **participant_username** | **String** | Recipient handle/username — an X or Bluesky handle (with or without @) or a Reddit username (with or without u/). Resolved via lookup. Provide either this or participantId. | [optional] |
|
|
10
10
|
| **message** | **String** | Text content of the message. At least one of message, attachment, or (for WhatsApp) templateName is required. Required when category is set (a Direct Send utility message is a text message). | [optional] |
|
|
11
11
|
| **skip_dm_check** | **Boolean** | X/Twitter only. Skip the receives_your_dm eligibility check before sending. Use if you have already verified the recipient accepts DMs. | [optional][default to false] |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Zernio::ListSlackMembers200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **members** | [**Array<ListSlackMembers200ResponseMembersInner>**](ListSlackMembers200ResponseMembersInner.md) | | [optional] |
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'zernio-sdk'
|
|
13
|
+
|
|
14
|
+
instance = Zernio::ListSlackMembers200Response.new(
|
|
15
|
+
members: null
|
|
16
|
+
)
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::ListSlackMembers200ResponseMembersInner
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **id** | **String** | Slack member id (pass as participantId to start a DM). | [optional] |
|
|
8
|
+
| **name** | **String** | Display name | [optional] |
|
|
9
|
+
| **username** | **String** | Slack handle | [optional] |
|
|
10
|
+
| **picture** | **String** | Avatar URL | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::ListSlackMembers200ResponseMembersInner.new(
|
|
18
|
+
id: null,
|
|
19
|
+
name: null,
|
|
20
|
+
username: null,
|
|
21
|
+
picture: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
data/docs/MessagesApi.md
CHANGED
|
@@ -99,7 +99,7 @@ end
|
|
|
99
99
|
|
|
100
100
|
Create conversation
|
|
101
101
|
|
|
102
|
-
Initiate a new direct message conversation with a specified user. If a conversation already exists with the recipient, the message is added to the existing thread. Supported platforms: X/Twitter, Bluesky, Reddit, and
|
|
102
|
+
Initiate a new direct message conversation with a specified user. If a conversation already exists with the recipient, the message is added to the existing thread. Supported platforms: X/Twitter, Bluesky, Reddit, WhatsApp, SMS, and Slack. Other platforms return PLATFORM_NOT_SUPPORTED. Slack: pass a workspace member id as participantId (list them with GET /v1/accounts/{accountId}/slack-members). Zernio opens the DM channel with that member and sends the message; the thread then behaves like any other Slack conversation in the inbox. The member must belong to the connected workspace. WhatsApp: this is the endpoint for sending an approved template message to a phone number. Provide templateName, templateLanguage, and templateParams (variable values for the text header, body and dynamic URL buttons, in that order), with the recipient phone in participantId. A template is required because WhatsApp does not permit freeform messages to open a conversation; a missing template returns TEMPLATE_REQUIRED. Templates with media headers (image, video, document) are handled automatically: Zernio reads the approved template definition and fills the header at send time with the template's approved sample asset. To send a DIFFERENT asset per message (e.g. a distinct invoice PDF for each recipient), pass the headerMedia field with a public link (or a Meta media id); it overrides the sample for that send. Calling this for a number you already have a thread with simply sends the template into that thread, which also makes it the way to re-engage a contact after the 24-hour customer-service window has closed. Once the recipient replies (opening the 24h window), send freeform messages with the send-message endpoint (POST /v1/inbox/conversations/{conversationId}/messages). Template fields are accepted on the JSON body only, not on multipart requests. Alternatively, WhatsApp Business Accounts eligible for Meta Direct Send can open a conversation with a business-initiated utility text message and no template: pass category: 'utility' together with message (and no templateName). See the category field below. DM eligibility (X/Twitter): Before sending, the endpoint checks if the recipient accepts DMs from your account (via the receives_your_dm field). If not, a 422 error with code DM_NOT_ALLOWED is returned. You can skip this check with skipDmCheck: true if you have already verified eligibility. X API tier requirement: DM write endpoints require X API Pro tier ($5,000/month) or Enterprise access. This applies to BYOK (Bring Your Own Key) users who provide their own X API credentials. Rate limits (X/Twitter only): X's DM API enforces 200 requests per 15 minutes, 1,000 per 24 hours per connected X account, and 15,000 per 24 hours per X developer app (shared across all DM endpoints). These limits do NOT apply to other platforms. WhatsApp sends are governed by Meta's per-number messaging tiers (unique business-initiated conversations per 24 hours) and per-number throughput instead.
|
|
103
103
|
|
|
104
104
|
### Examples
|
|
105
105
|
|
|
@@ -22,7 +22,8 @@ Zernio::SendInboxMessageRequestInteractiveAction.openapi_one_of
|
|
|
22
22
|
# :'SendInboxMessageRequestInteractiveActionOneOf5',
|
|
23
23
|
# :'SendInboxMessageRequestInteractiveActionOneOf6',
|
|
24
24
|
# :'SendInboxMessageRequestInteractiveActionOneOf7',
|
|
25
|
-
# :'SendInboxMessageRequestInteractiveActionOneOf8'
|
|
25
|
+
# :'SendInboxMessageRequestInteractiveActionOneOf8',
|
|
26
|
+
# :'SendInboxMessageRequestInteractiveActionOneOf9'
|
|
26
27
|
# ]
|
|
27
28
|
```
|
|
28
29
|
|
|
@@ -59,5 +60,6 @@ Zernio::SendInboxMessageRequestInteractiveAction.build(data_that_doesnt_match)
|
|
|
59
60
|
- `SendInboxMessageRequestInteractiveActionOneOf6`
|
|
60
61
|
- `SendInboxMessageRequestInteractiveActionOneOf7`
|
|
61
62
|
- `SendInboxMessageRequestInteractiveActionOneOf8`
|
|
63
|
+
- `SendInboxMessageRequestInteractiveActionOneOf9`
|
|
62
64
|
- `nil` (if no type matches)
|
|
63
65
|
|
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **
|
|
8
|
-
| **product_retailer_id** | **String** | Retailer ID (SKU) of the product inside the catalog. | |
|
|
7
|
+
| **name** | **String** | | |
|
|
9
8
|
|
|
10
9
|
## Example
|
|
11
10
|
|
|
@@ -13,8 +12,7 @@
|
|
|
13
12
|
require 'zernio-sdk'
|
|
14
13
|
|
|
15
14
|
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf5.new(
|
|
16
|
-
|
|
17
|
-
product_retailer_id: null
|
|
15
|
+
name: null
|
|
18
16
|
)
|
|
19
17
|
```
|
|
20
18
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **catalog_id** | **String** | Meta catalog ID connected to the WhatsApp Business Account. | |
|
|
8
|
-
| **
|
|
8
|
+
| **product_retailer_id** | **String** | Retailer ID (SKU) of the product inside the catalog. | |
|
|
9
9
|
|
|
10
10
|
## Example
|
|
11
11
|
|
|
@@ -14,7 +14,7 @@ require 'zernio-sdk'
|
|
|
14
14
|
|
|
15
15
|
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf6.new(
|
|
16
16
|
catalog_id: null,
|
|
17
|
-
|
|
17
|
+
product_retailer_id: null
|
|
18
18
|
)
|
|
19
19
|
```
|
|
20
20
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **
|
|
8
|
-
| **
|
|
7
|
+
| **catalog_id** | **String** | Meta catalog ID connected to the WhatsApp Business Account. | |
|
|
8
|
+
| **sections** | [**Array<SendInboxMessageRequestInteractiveActionOneOf7SectionsInner>**](SendInboxMessageRequestInteractiveActionOneOf7SectionsInner.md) | 1-10 sections. Total products across all sections cannot exceed 30. | |
|
|
9
9
|
|
|
10
10
|
## Example
|
|
11
11
|
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
require 'zernio-sdk'
|
|
14
14
|
|
|
15
15
|
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf7.new(
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
catalog_id: null,
|
|
17
|
+
sections: null
|
|
18
18
|
)
|
|
19
19
|
```
|
|
20
20
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
# Zernio::
|
|
1
|
+
# Zernio::SendInboxMessageRequestInteractiveActionOneOf7SectionsInner
|
|
2
2
|
|
|
3
3
|
## Properties
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **title** | **String** | Optional section header. | [optional] |
|
|
8
|
-
| **product_items** | [**Array<
|
|
8
|
+
| **product_items** | [**Array<SendInboxMessageRequestInteractiveActionOneOf7SectionsInnerProductItemsInner>**](SendInboxMessageRequestInteractiveActionOneOf7SectionsInnerProductItemsInner.md) | | |
|
|
9
9
|
|
|
10
10
|
## Example
|
|
11
11
|
|
|
12
12
|
```ruby
|
|
13
13
|
require 'zernio-sdk'
|
|
14
14
|
|
|
15
|
-
instance = Zernio::
|
|
15
|
+
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf7SectionsInner.new(
|
|
16
16
|
title: null,
|
|
17
17
|
product_items: null
|
|
18
18
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Zernio::
|
|
1
|
+
# Zernio::SendInboxMessageRequestInteractiveActionOneOf7SectionsInnerProductItemsInner
|
|
2
2
|
|
|
3
3
|
## Properties
|
|
4
4
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
```ruby
|
|
12
12
|
require 'zernio-sdk'
|
|
13
13
|
|
|
14
|
-
instance = Zernio::
|
|
14
|
+
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf7SectionsInnerProductItemsInner.new(
|
|
15
15
|
product_retailer_id: null
|
|
16
16
|
)
|
|
17
17
|
```
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **
|
|
7
|
+
| **name** | **String** | | |
|
|
8
|
+
| **parameters** | [**SendInboxMessageRequestInteractiveActionOneOf8Parameters**](SendInboxMessageRequestInteractiveActionOneOf8Parameters.md) | | [optional] |
|
|
8
9
|
|
|
9
10
|
## Example
|
|
10
11
|
|
|
@@ -12,7 +13,8 @@
|
|
|
12
13
|
require 'zernio-sdk'
|
|
13
14
|
|
|
14
15
|
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf8.new(
|
|
15
|
-
|
|
16
|
+
name: null,
|
|
17
|
+
parameters: null
|
|
16
18
|
)
|
|
17
19
|
```
|
|
18
20
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Zernio::
|
|
1
|
+
# Zernio::SendInboxMessageRequestInteractiveActionOneOf8Parameters
|
|
2
2
|
|
|
3
3
|
## Properties
|
|
4
4
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
```ruby
|
|
12
12
|
require 'zernio-sdk'
|
|
13
13
|
|
|
14
|
-
instance = Zernio::
|
|
14
|
+
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf8Parameters.new(
|
|
15
15
|
thumbnail_product_retailer_id: null
|
|
16
16
|
)
|
|
17
17
|
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Zernio::SendInboxMessageRequestInteractiveActionOneOf9
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **cards** | [**Array<SendInboxMessageRequestInteractiveActionOneOf9CardsInner>**](SendInboxMessageRequestInteractiveActionOneOf9CardsInner.md) | | |
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'zernio-sdk'
|
|
13
|
+
|
|
14
|
+
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf9.new(
|
|
15
|
+
cards: null
|
|
16
|
+
)
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Zernio::
|
|
1
|
+
# Zernio::SendInboxMessageRequestInteractiveActionOneOf9CardsInner
|
|
2
2
|
|
|
3
3
|
## Properties
|
|
4
4
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
```ruby
|
|
16
16
|
require 'zernio-sdk'
|
|
17
17
|
|
|
18
|
-
instance = Zernio::
|
|
18
|
+
instance = Zernio::SendInboxMessageRequestInteractiveActionOneOf9CardsInner.new(
|
|
19
19
|
card_index: null,
|
|
20
20
|
type: null,
|
|
21
21
|
header: null,
|
data/docs/SlackApi.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Zernio::SlackApi
|
|
2
|
+
|
|
3
|
+
All URIs are relative to *https://zernio.com/api*
|
|
4
|
+
|
|
5
|
+
| Method | HTTP request | Description |
|
|
6
|
+
| ------ | ------------ | ----------- |
|
|
7
|
+
| [**list_slack_members**](SlackApi.md#list_slack_members) | **GET** /v1/accounts/{accountId}/slack-members | List Slack workspace members |
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## list_slack_members
|
|
11
|
+
|
|
12
|
+
> <ListSlackMembers200Response> list_slack_members(account_id, opts)
|
|
13
|
+
|
|
14
|
+
List Slack workspace members
|
|
15
|
+
|
|
16
|
+
Members of the connected Slack workspace that can receive a direct message, for populating a recipient picker. Bots, deactivated members and Slackbot are excluded. Start a DM by passing a member id as `participantId` to POST /v1/inbox/conversations.
|
|
17
|
+
|
|
18
|
+
### Examples
|
|
19
|
+
|
|
20
|
+
```ruby
|
|
21
|
+
require 'time'
|
|
22
|
+
require 'zernio-sdk'
|
|
23
|
+
# setup authorization
|
|
24
|
+
Zernio.configure do |config|
|
|
25
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
26
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
api_instance = Zernio::SlackApi.new
|
|
30
|
+
account_id = 'account_id_example' # String |
|
|
31
|
+
opts = {
|
|
32
|
+
query: 'query_example', # String | Case-insensitive filter over display name and handle.
|
|
33
|
+
limit: 56 # Integer |
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
begin
|
|
37
|
+
# List Slack workspace members
|
|
38
|
+
result = api_instance.list_slack_members(account_id, opts)
|
|
39
|
+
p result
|
|
40
|
+
rescue Zernio::ApiError => e
|
|
41
|
+
puts "Error when calling SlackApi->list_slack_members: #{e}"
|
|
42
|
+
end
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### Using the list_slack_members_with_http_info variant
|
|
46
|
+
|
|
47
|
+
This returns an Array which contains the response data, status code and headers.
|
|
48
|
+
|
|
49
|
+
> <Array(<ListSlackMembers200Response>, Integer, Hash)> list_slack_members_with_http_info(account_id, opts)
|
|
50
|
+
|
|
51
|
+
```ruby
|
|
52
|
+
begin
|
|
53
|
+
# List Slack workspace members
|
|
54
|
+
data, status_code, headers = api_instance.list_slack_members_with_http_info(account_id, opts)
|
|
55
|
+
p status_code # => 2xx
|
|
56
|
+
p headers # => { ... }
|
|
57
|
+
p data # => <ListSlackMembers200Response>
|
|
58
|
+
rescue Zernio::ApiError => e
|
|
59
|
+
puts "Error when calling SlackApi->list_slack_members_with_http_info: #{e}"
|
|
60
|
+
end
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Parameters
|
|
64
|
+
|
|
65
|
+
| Name | Type | Description | Notes |
|
|
66
|
+
| ---- | ---- | ----------- | ----- |
|
|
67
|
+
| **account_id** | **String** | | |
|
|
68
|
+
| **query** | **String** | Case-insensitive filter over display name and handle. | [optional] |
|
|
69
|
+
| **limit** | **Integer** | | [optional][default to 50] |
|
|
70
|
+
|
|
71
|
+
### Return type
|
|
72
|
+
|
|
73
|
+
[**ListSlackMembers200Response**](ListSlackMembers200Response.md)
|
|
74
|
+
|
|
75
|
+
### Authorization
|
|
76
|
+
|
|
77
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
78
|
+
|
|
79
|
+
### HTTP request headers
|
|
80
|
+
|
|
81
|
+
- **Content-Type**: Not defined
|
|
82
|
+
- **Accept**: application/json
|
|
83
|
+
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
| **flow_response_data** | **Hash<String, Object>** | WhatsApp only. Parsed Flow response JSON. Populated when `flowResponseJson` is valid JSON; otherwise omitted. Keys and value types depend on the specific Flow that was submitted. | [optional] |
|
|
16
16
|
| **order** | [**WebhookPayloadMessageMetadataOrder**](WebhookPayloadMessageMetadataOrder.md) | | [optional] |
|
|
17
17
|
| **referred_product** | [**WebhookPayloadMessageMetadataReferredProduct**](WebhookPayloadMessageMetadataReferredProduct.md) | | [optional] |
|
|
18
|
+
| **contacts** | **Array<Hash<String, Object>>** | WhatsApp only. Contact cards the user shared, forwarded verbatim from Meta. Read `contactsOrigin` before treating any number here as the sender's own. | [optional] |
|
|
19
|
+
| **contacts_origin** | **String** | WhatsApp only. How the contact card was shared. `contact_request` means the user tapped a `request_contact_info` button, so the number is their own and consented. `other` means they picked a card from their address book: it may be anyone's, and must NOT be stored as the sender's identity. Omitted when Meta sends no origin. | [optional] |
|
|
18
20
|
| **story_reply** | [**WebhookPayloadMessageMetadataStoryReply**](WebhookPayloadMessageMetadataStoryReply.md) | | [optional] |
|
|
19
21
|
| **is_story_mention** | **Boolean** | Instagram only. True when the message was generated by an IG user mentioning the account in their own story (`story_mention` attachment type). Mutually exclusive in practice with `storyReply`. | [optional] |
|
|
20
22
|
| **referral** | [**WebhookPayloadMessageMetadataReferral**](WebhookPayloadMessageMetadataReferral.md) | | [optional] |
|
|
@@ -36,6 +38,8 @@ instance = Zernio::WebhookPayloadMessageMetadata.new(
|
|
|
36
38
|
flow_response_data: null,
|
|
37
39
|
order: null,
|
|
38
40
|
referred_product: null,
|
|
41
|
+
contacts: null,
|
|
42
|
+
contacts_origin: null,
|
|
39
43
|
story_reply: null,
|
|
40
44
|
is_story_mention: null,
|
|
41
45
|
referral: null
|
|
@@ -100,7 +100,7 @@ module Zernio
|
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
# Create conversation
|
|
103
|
-
# Initiate a new direct message conversation with a specified user. If a conversation already exists with the recipient, the message is added to the existing thread. Supported platforms: X/Twitter, Bluesky, Reddit, and
|
|
103
|
+
# Initiate a new direct message conversation with a specified user. If a conversation already exists with the recipient, the message is added to the existing thread. Supported platforms: X/Twitter, Bluesky, Reddit, WhatsApp, SMS, and Slack. Other platforms return PLATFORM_NOT_SUPPORTED. Slack: pass a workspace member id as participantId (list them with GET /v1/accounts/{accountId}/slack-members). Zernio opens the DM channel with that member and sends the message; the thread then behaves like any other Slack conversation in the inbox. The member must belong to the connected workspace. WhatsApp: this is the endpoint for sending an approved template message to a phone number. Provide templateName, templateLanguage, and templateParams (variable values for the text header, body and dynamic URL buttons, in that order), with the recipient phone in participantId. A template is required because WhatsApp does not permit freeform messages to open a conversation; a missing template returns TEMPLATE_REQUIRED. Templates with media headers (image, video, document) are handled automatically: Zernio reads the approved template definition and fills the header at send time with the template's approved sample asset. To send a DIFFERENT asset per message (e.g. a distinct invoice PDF for each recipient), pass the headerMedia field with a public link (or a Meta media id); it overrides the sample for that send. Calling this for a number you already have a thread with simply sends the template into that thread, which also makes it the way to re-engage a contact after the 24-hour customer-service window has closed. Once the recipient replies (opening the 24h window), send freeform messages with the send-message endpoint (POST /v1/inbox/conversations/{conversationId}/messages). Template fields are accepted on the JSON body only, not on multipart requests. Alternatively, WhatsApp Business Accounts eligible for Meta Direct Send can open a conversation with a business-initiated utility text message and no template: pass category: 'utility' together with message (and no templateName). See the category field below. DM eligibility (X/Twitter): Before sending, the endpoint checks if the recipient accepts DMs from your account (via the receives_your_dm field). If not, a 422 error with code DM_NOT_ALLOWED is returned. You can skip this check with skipDmCheck: true if you have already verified eligibility. X API tier requirement: DM write endpoints require X API Pro tier ($5,000/month) or Enterprise access. This applies to BYOK (Bring Your Own Key) users who provide their own X API credentials. Rate limits (X/Twitter only): X's DM API enforces 200 requests per 15 minutes, 1,000 per 24 hours per connected X account, and 15,000 per 24 hours per X developer app (shared across all DM endpoints). These limits do NOT apply to other platforms. WhatsApp sends are governed by Meta's per-number messaging tiers (unique business-initiated conversations per 24 hours) and per-number throughput instead.
|
|
104
104
|
# @param create_inbox_conversation_request [CreateInboxConversationRequest]
|
|
105
105
|
# @param [Hash] opts the optional parameters
|
|
106
106
|
# @return [CreateInboxConversation201Response]
|
|
@@ -110,7 +110,7 @@ module Zernio
|
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
# Create conversation
|
|
113
|
-
# Initiate a new direct message conversation with a specified user. If a conversation already exists with the recipient, the message is added to the existing thread. Supported platforms: X/Twitter, Bluesky, Reddit, and
|
|
113
|
+
# Initiate a new direct message conversation with a specified user. If a conversation already exists with the recipient, the message is added to the existing thread. Supported platforms: X/Twitter, Bluesky, Reddit, WhatsApp, SMS, and Slack. Other platforms return PLATFORM_NOT_SUPPORTED. Slack: pass a workspace member id as participantId (list them with GET /v1/accounts/{accountId}/slack-members). Zernio opens the DM channel with that member and sends the message; the thread then behaves like any other Slack conversation in the inbox. The member must belong to the connected workspace. WhatsApp: this is the endpoint for sending an approved template message to a phone number. Provide templateName, templateLanguage, and templateParams (variable values for the text header, body and dynamic URL buttons, in that order), with the recipient phone in participantId. A template is required because WhatsApp does not permit freeform messages to open a conversation; a missing template returns TEMPLATE_REQUIRED. Templates with media headers (image, video, document) are handled automatically: Zernio reads the approved template definition and fills the header at send time with the template's approved sample asset. To send a DIFFERENT asset per message (e.g. a distinct invoice PDF for each recipient), pass the headerMedia field with a public link (or a Meta media id); it overrides the sample for that send. Calling this for a number you already have a thread with simply sends the template into that thread, which also makes it the way to re-engage a contact after the 24-hour customer-service window has closed. Once the recipient replies (opening the 24h window), send freeform messages with the send-message endpoint (POST /v1/inbox/conversations/{conversationId}/messages). Template fields are accepted on the JSON body only, not on multipart requests. Alternatively, WhatsApp Business Accounts eligible for Meta Direct Send can open a conversation with a business-initiated utility text message and no template: pass category: 'utility' together with message (and no templateName). See the category field below. DM eligibility (X/Twitter): Before sending, the endpoint checks if the recipient accepts DMs from your account (via the receives_your_dm field). If not, a 422 error with code DM_NOT_ALLOWED is returned. You can skip this check with skipDmCheck: true if you have already verified eligibility. X API tier requirement: DM write endpoints require X API Pro tier ($5,000/month) or Enterprise access. This applies to BYOK (Bring Your Own Key) users who provide their own X API credentials. Rate limits (X/Twitter only): X's DM API enforces 200 requests per 15 minutes, 1,000 per 24 hours per connected X account, and 15,000 per 24 hours per X developer app (shared across all DM endpoints). These limits do NOT apply to other platforms. WhatsApp sends are governed by Meta's per-number messaging tiers (unique business-initiated conversations per 24 hours) and per-number throughput instead.
|
|
114
114
|
# @param create_inbox_conversation_request [CreateInboxConversationRequest]
|
|
115
115
|
# @param [Hash] opts the optional parameters
|
|
116
116
|
# @return [Array<(CreateInboxConversation201Response, Integer, Hash)>] CreateInboxConversation201Response data, response status code and response headers
|
|
@@ -0,0 +1,103 @@
|
|
|
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 'cgi'
|
|
14
|
+
|
|
15
|
+
module Zernio
|
|
16
|
+
class SlackApi
|
|
17
|
+
attr_accessor :api_client
|
|
18
|
+
|
|
19
|
+
def initialize(api_client = ApiClient.default)
|
|
20
|
+
@api_client = api_client
|
|
21
|
+
end
|
|
22
|
+
# List Slack workspace members
|
|
23
|
+
# Members of the connected Slack workspace that can receive a direct message, for populating a recipient picker. Bots, deactivated members and Slackbot are excluded. Start a DM by passing a member id as `participantId` to POST /v1/inbox/conversations.
|
|
24
|
+
# @param account_id [String]
|
|
25
|
+
# @param [Hash] opts the optional parameters
|
|
26
|
+
# @option opts [String] :query Case-insensitive filter over display name and handle.
|
|
27
|
+
# @option opts [Integer] :limit (default to 50)
|
|
28
|
+
# @return [ListSlackMembers200Response]
|
|
29
|
+
def list_slack_members(account_id, opts = {})
|
|
30
|
+
data, _status_code, _headers = list_slack_members_with_http_info(account_id, opts)
|
|
31
|
+
data
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# List Slack workspace members
|
|
35
|
+
# Members of the connected Slack workspace that can receive a direct message, for populating a recipient picker. Bots, deactivated members and Slackbot are excluded. Start a DM by passing a member id as `participantId` to POST /v1/inbox/conversations.
|
|
36
|
+
# @param account_id [String]
|
|
37
|
+
# @param [Hash] opts the optional parameters
|
|
38
|
+
# @option opts [String] :query Case-insensitive filter over display name and handle.
|
|
39
|
+
# @option opts [Integer] :limit (default to 50)
|
|
40
|
+
# @return [Array<(ListSlackMembers200Response, Integer, Hash)>] ListSlackMembers200Response data, response status code and response headers
|
|
41
|
+
def list_slack_members_with_http_info(account_id, opts = {})
|
|
42
|
+
if @api_client.config.debugging
|
|
43
|
+
@api_client.config.logger.debug 'Calling API: SlackApi.list_slack_members ...'
|
|
44
|
+
end
|
|
45
|
+
# verify the required parameter 'account_id' is set
|
|
46
|
+
if @api_client.config.client_side_validation && account_id.nil?
|
|
47
|
+
fail ArgumentError, "Missing the required parameter 'account_id' when calling SlackApi.list_slack_members"
|
|
48
|
+
end
|
|
49
|
+
if @api_client.config.client_side_validation && !opts[:'query'].nil? && opts[:'query'].to_s.length > 100
|
|
50
|
+
fail ArgumentError, 'invalid value for "opts[:"query"]" when calling SlackApi.list_slack_members, the character length must be smaller than or equal to 100.'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 2000
|
|
54
|
+
fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling SlackApi.list_slack_members, must be smaller than or equal to 2000.'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
|
|
58
|
+
fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling SlackApi.list_slack_members, must be greater than or equal to 1.'
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# resource path
|
|
62
|
+
local_var_path = '/v1/accounts/{accountId}/slack-members'.sub('{' + 'accountId' + '}', CGI.escape(account_id.to_s))
|
|
63
|
+
|
|
64
|
+
# query parameters
|
|
65
|
+
query_params = opts[:query_params] || {}
|
|
66
|
+
query_params[:'query'] = opts[:'query'] if !opts[:'query'].nil?
|
|
67
|
+
query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
|
|
68
|
+
|
|
69
|
+
# header parameters
|
|
70
|
+
header_params = opts[:header_params] || {}
|
|
71
|
+
# HTTP header 'Accept' (if needed)
|
|
72
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
73
|
+
|
|
74
|
+
# form parameters
|
|
75
|
+
form_params = opts[:form_params] || {}
|
|
76
|
+
|
|
77
|
+
# http body (model)
|
|
78
|
+
post_body = opts[:debug_body]
|
|
79
|
+
|
|
80
|
+
# return_type
|
|
81
|
+
return_type = opts[:debug_return_type] || 'ListSlackMembers200Response'
|
|
82
|
+
|
|
83
|
+
# auth_names
|
|
84
|
+
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
|
85
|
+
|
|
86
|
+
new_options = opts.merge(
|
|
87
|
+
:operation => :"SlackApi.list_slack_members",
|
|
88
|
+
:header_params => header_params,
|
|
89
|
+
:query_params => query_params,
|
|
90
|
+
:form_params => form_params,
|
|
91
|
+
:body => post_body,
|
|
92
|
+
:auth_names => auth_names,
|
|
93
|
+
:return_type => return_type
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
97
|
+
if @api_client.config.debugging
|
|
98
|
+
@api_client.config.logger.debug "API called: SlackApi#list_slack_members\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
99
|
+
end
|
|
100
|
+
return data, status_code, headers
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -18,7 +18,7 @@ module Zernio
|
|
|
18
18
|
# The social account ID to send from
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
|
-
# Recipient identifier. For X this is the numeric user ID; for WhatsApp, the recipient phone number in international format (digits, country code included). Provide either this or participantUsername.
|
|
21
|
+
# Recipient identifier. For X this is the numeric user ID; for WhatsApp and SMS, the recipient phone number in international format (digits, country code included); for Slack, the workspace member id (e.g. U01ABCDEF). Provide either this or participantUsername.
|
|
22
22
|
attr_accessor :participant_id
|
|
23
23
|
|
|
24
24
|
# Recipient handle/username — an X or Bluesky handle (with or without @) or a Reddit username (with or without u/). Resolved via lookup. Provide either this or participantId.
|