sendx-ruby-sdk 1.1.0 → 2.0.0
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 +220 -81
- data/lib/sendx-ruby-sdk/api/campaign_api.rb +95 -143
- data/lib/sendx-ruby-sdk/api/contact_api.rb +129 -96
- data/lib/sendx-ruby-sdk/api/custom_field_api.rb +391 -0
- data/lib/sendx-ruby-sdk/api/email_sending_api.rb +158 -0
- data/lib/sendx-ruby-sdk/api/event_api.rb +91 -57
- data/lib/sendx-ruby-sdk/api/events_api.rb +158 -0
- data/lib/sendx-ruby-sdk/api/getting_started_api.rb +2 -2
- data/lib/sendx-ruby-sdk/api/list_api.rb +126 -91
- data/lib/sendx-ruby-sdk/api/post_api.rb +380 -0
- data/lib/sendx-ruby-sdk/api/post_category_api.rb +362 -0
- data/lib/sendx-ruby-sdk/api/post_tag_api.rb +362 -0
- data/lib/sendx-ruby-sdk/api/report_api.rb +90 -0
- data/lib/sendx-ruby-sdk/api/reports_api.rb +4 -4
- data/lib/sendx-ruby-sdk/api/sender_api.rb +28 -37
- data/lib/sendx-ruby-sdk/api/tag_api.rb +380 -0
- data/lib/sendx-ruby-sdk/api/tags_api.rb +8 -8
- data/lib/sendx-ruby-sdk/api/team_member_api.rb +147 -0
- data/lib/sendx-ruby-sdk/api/template_api.rb +391 -0
- data/lib/sendx-ruby-sdk/api/tracking_api.rb +158 -0
- data/lib/sendx-ruby-sdk/api/webhook_api.rb +362 -0
- data/lib/sendx-ruby-sdk/api_client.rb +10 -11
- data/lib/sendx-ruby-sdk/api_error.rb +3 -3
- data/lib/sendx-ruby-sdk/configuration.rb +6 -10
- data/lib/sendx-ruby-sdk/models/campaign.rb +23 -7
- data/lib/sendx-ruby-sdk/models/campaign_dashboard_data.rb +11 -5
- data/lib/sendx-ruby-sdk/models/campaign_request.rb +13 -41
- data/lib/sendx-ruby-sdk/models/contact.rb +11 -5
- data/lib/sendx-ruby-sdk/models/contact_request.rb +11 -5
- data/lib/sendx-ruby-sdk/models/create_response.rb +11 -5
- data/lib/sendx-ruby-sdk/models/custom_event_request.rb +37 -42
- data/lib/sendx-ruby-sdk/models/custom_field.rb +285 -0
- data/lib/sendx-ruby-sdk/models/customfield_customfield_id_delete200_response.rb +220 -0
- data/lib/sendx-ruby-sdk/models/dashboard_stats.rb +11 -5
- data/lib/sendx-ruby-sdk/models/delete_campaign200_response.rb +11 -5
- data/lib/sendx-ruby-sdk/models/delete_request.rb +11 -5
- data/lib/sendx-ruby-sdk/models/delete_response.rb +77 -13
- data/lib/sendx-ruby-sdk/models/e_custom_field.rb +295 -0
- data/lib/sendx-ruby-sdk/models/error_response.rb +288 -0
- data/lib/sendx-ruby-sdk/models/event_response.rb +13 -19
- data/lib/sendx-ruby-sdk/models/events_revenue_postback_get200_response.rb +229 -0
- data/lib/sendx-ruby-sdk/models/events_revenue_postback_get400_response.rb +220 -0
- data/lib/sendx-ruby-sdk/models/events_revenue_postback_get500_response.rb +220 -0
- data/lib/sendx-ruby-sdk/models/identify_error_response.rb +220 -0
- data/lib/sendx-ruby-sdk/models/identify_request.rb +52 -40
- data/lib/sendx-ruby-sdk/models/identify_response.rb +16 -19
- data/lib/sendx-ruby-sdk/models/last_sent_campaign_stat.rb +11 -5
- data/lib/sendx-ruby-sdk/models/link_stat.rb +232 -0
- data/lib/sendx-ruby-sdk/models/list_model.rb +11 -6
- data/lib/sendx-ruby-sdk/models/list_request.rb +11 -5
- data/lib/sendx-ruby-sdk/models/message_response.rb +229 -0
- data/lib/sendx-ruby-sdk/models/operation_response.rb +241 -0
- data/lib/sendx-ruby-sdk/models/postback_response.rb +229 -0
- data/lib/sendx-ruby-sdk/models/report_data.rb +11 -5
- data/lib/sendx-ruby-sdk/models/response.rb +11 -5
- data/lib/sendx-ruby-sdk/models/rest_e_campaign.rb +539 -0
- data/lib/sendx-ruby-sdk/models/rest_e_contact.rb +380 -0
- data/lib/sendx-ruby-sdk/models/rest_e_custom_field.rb +299 -0
- data/lib/sendx-ruby-sdk/models/rest_e_list.rb +238 -0
- data/lib/sendx-ruby-sdk/models/rest_e_post.rb +443 -0
- data/lib/sendx-ruby-sdk/models/rest_e_post_category.rb +238 -0
- data/lib/sendx-ruby-sdk/models/rest_e_post_tag.rb +238 -0
- data/lib/sendx-ruby-sdk/models/rest_e_sender.rb +265 -0
- data/lib/sendx-ruby-sdk/models/rest_e_tag.rb +238 -0
- data/lib/sendx-ruby-sdk/models/rest_e_template.rb +307 -0
- data/lib/sendx-ruby-sdk/models/rest_e_webhook.rb +349 -0
- data/lib/sendx-ruby-sdk/models/rest_r_campaign.rb +580 -0
- data/lib/sendx-ruby-sdk/models/rest_r_contact.rb +438 -0
- data/lib/sendx-ruby-sdk/models/rest_r_custom_field.rb +306 -0
- data/lib/sendx-ruby-sdk/models/rest_r_list.rb +291 -0
- data/lib/sendx-ruby-sdk/models/rest_r_member.rb +274 -0
- data/lib/sendx-ruby-sdk/models/rest_r_post.rb +384 -0
- data/lib/sendx-ruby-sdk/models/rest_r_post_category.rb +251 -0
- data/lib/sendx-ruby-sdk/models/rest_r_post_tag.rb +250 -0
- data/lib/sendx-ruby-sdk/models/rest_r_sender.rb +272 -0
- data/lib/sendx-ruby-sdk/models/rest_r_tag.rb +272 -0
- data/lib/sendx-ruby-sdk/models/rest_r_template.rb +366 -0
- data/lib/sendx-ruby-sdk/models/rest_r_webhook.rb +326 -0
- data/lib/sendx-ruby-sdk/models/rest_report_data.rb +312 -0
- data/lib/sendx-ruby-sdk/models/revenue_event_request.rb +37 -42
- data/lib/sendx-ruby-sdk/models/sender.rb +41 -5
- data/lib/sendx-ruby-sdk/models/sender_request.rb +31 -5
- data/lib/sendx-ruby-sdk/models/sender_response.rb +51 -5
- data/lib/sendx-ruby-sdk/models/tag.rb +11 -5
- data/lib/sendx-ruby-sdk/models/tag_request.rb +11 -5
- data/lib/sendx-ruby-sdk/models/template_email_message.rb +337 -0
- data/lib/sendx-ruby-sdk/models/track_request.rb +28 -20
- data/lib/sendx-ruby-sdk/models/track_response.rb +12 -6
- data/lib/sendx-ruby-sdk/models/webhook.rb +311 -0
- data/lib/sendx-ruby-sdk/models/webhook_object.rb +451 -0
- data/lib/sendx-ruby-sdk/models/webhook_request.rb +291 -0
- data/lib/sendx-ruby-sdk/models/x_attachment.rb +263 -0
- data/lib/sendx-ruby-sdk/models/x_email_message.rb +356 -0
- data/lib/sendx-ruby-sdk/models/x_email_response.rb +261 -0
- data/lib/sendx-ruby-sdk/models/x_from.rb +246 -0
- data/lib/sendx-ruby-sdk/models/x_reply_to.rb +246 -0
- data/lib/sendx-ruby-sdk/models/xto.rb +279 -0
- data/lib/sendx-ruby-sdk/version.rb +4 -4
- data/lib/sendx-ruby-sdk.rb +53 -25
- data/spec/api/custom_field_api_spec.rb +98 -0
- data/spec/api/email_sending_api_spec.rb +59 -0
- data/spec/api/events_api_spec.rb +59 -0
- data/spec/api/post_api_spec.rb +97 -0
- data/spec/api/post_category_api_spec.rb +95 -0
- data/spec/api/post_tag_api_spec.rb +95 -0
- data/spec/api/report_api_spec.rb +47 -0
- data/spec/api/tag_api_spec.rb +97 -0
- data/spec/api/team_member_api_spec.rb +58 -0
- data/spec/api/template_api_spec.rb +98 -0
- data/spec/api/tracking_api_spec.rb +59 -0
- data/spec/api/webhook_api_spec.rb +95 -0
- data/spec/models/custom_field_spec.rb +58 -0
- data/spec/models/customfield_customfield_id_delete200_response_spec.rb +36 -0
- data/spec/models/e_custom_field_spec.rb +64 -0
- data/spec/models/error_response_spec.rb +46 -0
- data/spec/models/events_revenue_postback_get200_response_spec.rb +42 -0
- data/spec/models/events_revenue_postback_get400_response_spec.rb +36 -0
- data/spec/models/events_revenue_postback_get500_response_spec.rb +36 -0
- data/spec/models/identify_error_response_spec.rb +36 -0
- data/spec/models/link_stat_spec.rb +42 -0
- data/spec/models/message_response_spec.rb +42 -0
- data/spec/models/operation_response_spec.rb +48 -0
- data/spec/models/postback_response_spec.rb +42 -0
- data/spec/models/rest_e_campaign_spec.rb +154 -0
- data/spec/models/rest_e_contact_spec.rb +78 -0
- data/spec/models/rest_e_custom_field_spec.rb +52 -0
- data/spec/models/rest_e_list_spec.rb +36 -0
- data/spec/models/rest_e_post_category_spec.rb +36 -0
- data/spec/models/rest_e_post_spec.rb +144 -0
- data/spec/models/rest_e_post_tag_spec.rb +36 -0
- data/spec/models/rest_e_sender_spec.rb +42 -0
- data/spec/models/rest_e_tag_spec.rb +36 -0
- data/spec/models/rest_e_template_spec.rb +66 -0
- data/spec/models/rest_e_webhook_spec.rb +84 -0
- data/spec/models/rest_r_campaign_spec.rb +178 -0
- data/spec/models/rest_r_contact_spec.rb +150 -0
- data/spec/models/rest_r_custom_field_spec.rb +58 -0
- data/spec/models/rest_r_list_spec.rb +64 -0
- data/spec/models/rest_r_member_spec.rb +72 -0
- data/spec/models/rest_r_post_category_spec.rb +54 -0
- data/spec/models/rest_r_post_spec.rb +144 -0
- data/spec/models/rest_r_post_tag_spec.rb +54 -0
- data/spec/models/rest_r_sender_spec.rb +54 -0
- data/spec/models/rest_r_tag_spec.rb +54 -0
- data/spec/models/rest_r_template_spec.rb +94 -0
- data/spec/models/rest_r_webhook_spec.rb +90 -0
- data/spec/models/rest_report_data_spec.rb +90 -0
- data/spec/models/template_email_message_spec.rb +72 -0
- data/spec/models/webhook_object_spec.rb +180 -0
- data/spec/models/webhook_request_spec.rb +78 -0
- data/spec/models/webhook_spec.rb +90 -0
- data/spec/models/x_attachment_spec.rb +42 -0
- data/spec/models/x_email_message_spec.rb +90 -0
- data/spec/models/x_email_response_spec.rb +60 -0
- data/spec/models/x_from_spec.rb +42 -0
- data/spec/models/x_reply_to_spec.rb +42 -0
- data/spec/models/xto_spec.rb +60 -0
- data/spec/spec_helper.rb +3 -3
- metadata +202 -28
@@ -1,12 +1,12 @@
|
|
1
1
|
=begin
|
2
2
|
#SendX REST API
|
3
3
|
|
4
|
-
## Introduction SendX is
|
4
|
+
## SendX REST API Documentation ## 🚀 Introduction The SendX API is organized around REST principles. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs. **Key Features:** - 🔒 **Security**: Team-based authentication with optional member-level access - 🎯 **Resource-Oriented**: RESTful design with clear resource boundaries - 📊 **Rich Data Models**: Three-layer model system (Input/Output/Internal) - 🔗 **Relationships**: Automatic prefix handling for resource relationships - 📈 **Scalable**: Built for high-volume email marketing operations ## 🏗️ Architecture Overview SendX uses a three-layer model architecture: 1. **Input Models** (`RestE*`): For API requests 2. **Output Models** (`RestR*`): For API responses with prefixed IDs 3. **Internal Models**: Core business logic (not exposed in API) ## 🔐 Security & Authentication SendX uses API key authentication: ### Team API Key ```http X-Team-ApiKey: YOUR_TEAM_API_KEY ``` - **Required for all requests** - Team-level access to resources - Available in SendX Settings → Team API Key ## 🆔 Encrypted ID System SendX uses encrypted IDs for security and better developer experience: - **Internal IDs**: Sequential integers (not exposed) - **Encrypted IDs**: 22-character alphanumeric strings - **Prefixed IDs**: Resource-type prefixes in API responses (`contact_<22-char-id>`) ### ID Format **All resource IDs follow this pattern:** ``` <resource_prefix>_<22_character_alphanumeric_string> ``` **Example:** ```json { \"id\": \"contact_BnKjkbBBS500CoBCP0oChQ\", \"lists\": [\"list_OcuxJHdiAvujmwQVJfd3ss\", \"list_0tOFLp5RgV7s3LNiHrjGYs\"], \"tags\": [\"tag_UhsDkjL772Qbj5lWtT62VK\", \"tag_fL7t9lsnZ9swvx2HrtQ9wM\"] } ``` ## 📚 Resource Prefixes | Resource | Prefix | Example | |----------|--------|---------| | Contact | `contact_` | `contact_BnKjkbBBS500CoBCP0oChQ` | | Campaign | `campaign_` | `campaign_LUE9BTxmksSmqHWbh96zsn` | | List | `list_` | `list_OcuxJHdiAvujmwQVJfd3ss` | | Tag | `tag_` | `tag_UhsDkjL772Qbj5lWtT62VK` | | Sender | `sender_` | `sender_4vK3WFhMgvOwUNyaL4QxCD` | | Template | `template_` | `template_f3lJvTEhSjKGVb5Lwc5SWS` | | Custom Field | `field_` | `field_MnuqBAG2NPLm7PZMWbjQxt` | | Webhook | `webhook_` | `webhook_9l154iiXlZoPo7vngmamee` | | Post | `post_` | `post_XyZ123aBc456DeF789GhI` | | Post Category | `post_category_` | `post_category_YzS1wOU20yw87UUHKxMzwn` | | Post Tag | `post_tag_` | `post_tag_123XyZ456AbC` | | Member | `member_` | `member_JkL012MnO345PqR678` | ## 🎯 Best Practices ### Error Handling - **Always check status codes**: 2xx = success, 4xx = client error, 5xx = server error - **Read error messages**: Descriptive messages help debug issues - **Handle rate limits**: Respect API rate limits for optimal performance ### Data Validation - **Email format**: Must be valid email addresses - **Required fields**: Check documentation for mandatory fields - **Field lengths**: Respect maximum length constraints ### Performance - **Pagination**: Use offset/limit for large datasets - **Batch operations**: Process multiple items when supported - **Caching**: Cache responses when appropriate ## 🛠️ SDKs & Integration Official SDKs available for: - [Golang](https://github.com/sendx/sendx-go-sdk) - [Python](https://github.com/sendx/sendx-python-sdk) - [Ruby](https://github.com/sendx/sendx-ruby-sdk) - [Java](https://github.com/sendx/sendx-java-sdk) - [PHP](https://github.com/sendx/sendx-php-sdk) - [JavaScript](https://github.com/sendx/sendx-javascript-sdk) ## 📞 Support Need help? Contact us: - 💬 **Website Chat**: Available on sendx.io - 📧 **Email**: hello@sendx.io - 📚 **Documentation**: Full guides at help.sendx.io --- **API Endpoint:** `https://api.sendx.io/api/v1/rest` [<img src=\"https://run.pstmn.io/button.svg\" alt=\"Run In Postman\" style=\"width: 128px; height: 32px;\">](https://god.gw.postman.com/run-collection/33476323-44b198b0-5219-4619-a01f-cfc24d573885?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D33476323-44b198b0-5219-4619-a01f-cfc24d573885%26entityType%3Dcollection%26workspaceId%3D6b1e4f65-96a9-4136-9512-6266c852517e)
|
5
5
|
|
6
6
|
The version of the OpenAPI document: 1.0.0
|
7
|
-
Contact:
|
7
|
+
Contact: hello@sendx.io
|
8
8
|
Generated by: https://openapi-generator.tech
|
9
|
-
Generator version: 7.
|
9
|
+
Generator version: 7.13.0
|
10
10
|
|
11
11
|
=end
|
12
12
|
|
@@ -19,28 +19,28 @@ module SendX
|
|
19
19
|
def initialize(api_client = ApiClient.default)
|
20
20
|
@api_client = api_client
|
21
21
|
end
|
22
|
-
# Create a contact
|
23
|
-
#
|
24
|
-
# @param
|
22
|
+
# Create a new contact
|
23
|
+
# Creates a new contact in your SendX team with the provided information. **🎯 Key Features:** - Email validation and duplicate detection - Automatic relationship building with lists and tags - Smart custom field handling **📋 Business Rules:** - Email is mandatory and must be unique within the team - Last tracked IP is stored for analytics
|
24
|
+
# @param rest_e_contact [RestEContact]
|
25
25
|
# @param [Hash] opts the optional parameters
|
26
|
-
# @return [
|
27
|
-
def create_contact(
|
28
|
-
data, _status_code, _headers = create_contact_with_http_info(
|
26
|
+
# @return [RestRContact]
|
27
|
+
def create_contact(rest_e_contact, opts = {})
|
28
|
+
data, _status_code, _headers = create_contact_with_http_info(rest_e_contact, opts)
|
29
29
|
data
|
30
30
|
end
|
31
31
|
|
32
|
-
# Create a contact
|
33
|
-
#
|
34
|
-
# @param
|
32
|
+
# Create a new contact
|
33
|
+
# Creates a new contact in your SendX team with the provided information. **🎯 Key Features:** - Email validation and duplicate detection - Automatic relationship building with lists and tags - Smart custom field handling **📋 Business Rules:** - Email is mandatory and must be unique within the team - Last tracked IP is stored for analytics
|
34
|
+
# @param rest_e_contact [RestEContact]
|
35
35
|
# @param [Hash] opts the optional parameters
|
36
|
-
# @return [Array<(
|
37
|
-
def create_contact_with_http_info(
|
36
|
+
# @return [Array<(RestRContact, Integer, Hash)>] RestRContact data, response status code and response headers
|
37
|
+
def create_contact_with_http_info(rest_e_contact, opts = {})
|
38
38
|
if @api_client.config.debugging
|
39
39
|
@api_client.config.logger.debug 'Calling API: ContactApi.create_contact ...'
|
40
40
|
end
|
41
|
-
# verify the required parameter '
|
42
|
-
if @api_client.config.client_side_validation &&
|
43
|
-
fail ArgumentError, "Missing the required parameter '
|
41
|
+
# verify the required parameter 'rest_e_contact' is set
|
42
|
+
if @api_client.config.client_side_validation && rest_e_contact.nil?
|
43
|
+
fail ArgumentError, "Missing the required parameter 'rest_e_contact' when calling ContactApi.create_contact"
|
44
44
|
end
|
45
45
|
# resource path
|
46
46
|
local_var_path = '/contact'
|
@@ -62,13 +62,13 @@ module SendX
|
|
62
62
|
form_params = opts[:form_params] || {}
|
63
63
|
|
64
64
|
# http body (model)
|
65
|
-
post_body = opts[:debug_body] || @api_client.object_to_http_body(
|
65
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(rest_e_contact)
|
66
66
|
|
67
67
|
# return_type
|
68
|
-
return_type = opts[:debug_return_type] || '
|
68
|
+
return_type = opts[:debug_return_type] || 'RestRContact'
|
69
69
|
|
70
70
|
# auth_names
|
71
|
-
auth_names = opts[:debug_auth_names] || ['
|
71
|
+
auth_names = opts[:debug_auth_names] || ['TeamApiKey']
|
72
72
|
|
73
73
|
new_options = opts.merge(
|
74
74
|
:operation => :"ContactApi.create_contact",
|
@@ -87,21 +87,21 @@ module SendX
|
|
87
87
|
return data, status_code, headers
|
88
88
|
end
|
89
89
|
|
90
|
-
# Delete
|
91
|
-
#
|
92
|
-
# @param identifier [String]
|
90
|
+
# Delete contact
|
91
|
+
# Soft deletes a contact from your team. **🎯 Key Features:** - Soft delete preserves data - Removes from all lists - Cancels pending campaigns - Maintains historical data
|
92
|
+
# @param identifier [String] Resource identifier with prefix (e.g., `contact_BnKjkbBBS500CoBCP0oChQ`) **Format:** `<prefix>_<22-character-id>`
|
93
93
|
# @param [Hash] opts the optional parameters
|
94
|
-
# @return [
|
94
|
+
# @return [DeleteResponse]
|
95
95
|
def delete_contact(identifier, opts = {})
|
96
96
|
data, _status_code, _headers = delete_contact_with_http_info(identifier, opts)
|
97
97
|
data
|
98
98
|
end
|
99
99
|
|
100
|
-
# Delete
|
101
|
-
#
|
102
|
-
# @param identifier [String]
|
100
|
+
# Delete contact
|
101
|
+
# Soft deletes a contact from your team. **🎯 Key Features:** - Soft delete preserves data - Removes from all lists - Cancels pending campaigns - Maintains historical data
|
102
|
+
# @param identifier [String] Resource identifier with prefix (e.g., `contact_BnKjkbBBS500CoBCP0oChQ`) **Format:** `<prefix>_<22-character-id>`
|
103
103
|
# @param [Hash] opts the optional parameters
|
104
|
-
# @return [Array<(
|
104
|
+
# @return [Array<(DeleteResponse, Integer, Hash)>] DeleteResponse data, response status code and response headers
|
105
105
|
def delete_contact_with_http_info(identifier, opts = {})
|
106
106
|
if @api_client.config.debugging
|
107
107
|
@api_client.config.logger.debug 'Calling API: ContactApi.delete_contact ...'
|
@@ -110,6 +110,11 @@ module SendX
|
|
110
110
|
if @api_client.config.client_side_validation && identifier.nil?
|
111
111
|
fail ArgumentError, "Missing the required parameter 'identifier' when calling ContactApi.delete_contact"
|
112
112
|
end
|
113
|
+
pattern = Regexp.new(/^[a-z_]+_[a-zA-Z0-9]{22}$/)
|
114
|
+
if @api_client.config.client_side_validation && identifier !~ pattern
|
115
|
+
fail ArgumentError, "invalid value for 'identifier' when calling ContactApi.delete_contact, must conform to the pattern #{pattern}."
|
116
|
+
end
|
117
|
+
|
113
118
|
# resource path
|
114
119
|
local_var_path = '/contact/{identifier}'.sub('{' + 'identifier' + '}', CGI.escape(identifier.to_s))
|
115
120
|
|
@@ -128,10 +133,10 @@ module SendX
|
|
128
133
|
post_body = opts[:debug_body]
|
129
134
|
|
130
135
|
# return_type
|
131
|
-
return_type = opts[:debug_return_type] || '
|
136
|
+
return_type = opts[:debug_return_type] || 'DeleteResponse'
|
132
137
|
|
133
138
|
# auth_names
|
134
|
-
auth_names = opts[:debug_auth_names] || ['
|
139
|
+
auth_names = opts[:debug_auth_names] || ['TeamApiKey']
|
135
140
|
|
136
141
|
new_options = opts.merge(
|
137
142
|
:operation => :"ContactApi.delete_contact",
|
@@ -150,35 +155,49 @@ module SendX
|
|
150
155
|
return data, status_code, headers
|
151
156
|
end
|
152
157
|
|
153
|
-
# Get
|
154
|
-
#
|
158
|
+
# Get all contacts
|
159
|
+
# Retrieves a paginated list of all contacts in your team with optional filtering capabilities. **🎯 Key Features:** - Pagination support with offset/limit - Search contacts by name or email - All relationships included (lists, tags, custom fields) - Prefixed IDs for easy integration **📊 Pagination:** - Default limit: 10 contacts per page - Maximum limit: 100 contacts per page - Use offset for page navigation **🔍 Search:** - Searches across firstName, lastName, and email fields - Case-insensitive partial matching - Combine with pagination for large datasets
|
155
160
|
# @param [Hash] opts the optional parameters
|
156
|
-
# @option opts [Integer] :offset
|
157
|
-
# @option opts [Integer] :limit
|
158
|
-
# @option opts [String] :
|
159
|
-
# @
|
160
|
-
# @return [Array<Contact>]
|
161
|
+
# @option opts [Integer] :offset Number of records to skip for pagination. **Examples:** - `0` - First page (default) - `50` - Second page (with limit=50) - `100` - Third page (with limit=50) (default to 0)
|
162
|
+
# @option opts [Integer] :limit Maximum number of records to return. **Constraints:** - Minimum: 1 - Maximum: 100 - Default: 10 (default to 50)
|
163
|
+
# @option opts [String] :search Search term to filter contacts by name or email. **Search Behavior:** - Searches firstName, lastName, and email fields - Case-insensitive partial matching - Minimum 2 characters for search **Examples:** - `john` - Finds \"John Doe\", \"johnson@example.com\" - `@company.com` - Finds all emails from company.com - `smith` - Finds \"John Smith\", \"smith@email.com\"
|
164
|
+
# @return [Array<RestRContact>]
|
161
165
|
def get_all_contacts(opts = {})
|
162
166
|
data, _status_code, _headers = get_all_contacts_with_http_info(opts)
|
163
167
|
data
|
164
168
|
end
|
165
169
|
|
166
|
-
# Get
|
167
|
-
#
|
170
|
+
# Get all contacts
|
171
|
+
# Retrieves a paginated list of all contacts in your team with optional filtering capabilities. **🎯 Key Features:** - Pagination support with offset/limit - Search contacts by name or email - All relationships included (lists, tags, custom fields) - Prefixed IDs for easy integration **📊 Pagination:** - Default limit: 10 contacts per page - Maximum limit: 100 contacts per page - Use offset for page navigation **🔍 Search:** - Searches across firstName, lastName, and email fields - Case-insensitive partial matching - Combine with pagination for large datasets
|
168
172
|
# @param [Hash] opts the optional parameters
|
169
|
-
# @option opts [Integer] :offset
|
170
|
-
# @option opts [Integer] :limit
|
171
|
-
# @option opts [String] :
|
172
|
-
# @
|
173
|
-
# @return [Array<(Array<Contact>, Integer, Hash)>] Array<Contact> data, response status code and response headers
|
173
|
+
# @option opts [Integer] :offset Number of records to skip for pagination. **Examples:** - `0` - First page (default) - `50` - Second page (with limit=50) - `100` - Third page (with limit=50) (default to 0)
|
174
|
+
# @option opts [Integer] :limit Maximum number of records to return. **Constraints:** - Minimum: 1 - Maximum: 100 - Default: 10 (default to 50)
|
175
|
+
# @option opts [String] :search Search term to filter contacts by name or email. **Search Behavior:** - Searches firstName, lastName, and email fields - Case-insensitive partial matching - Minimum 2 characters for search **Examples:** - `john` - Finds \"John Doe\", \"johnson@example.com\" - `@company.com` - Finds all emails from company.com - `smith` - Finds \"John Smith\", \"smith@email.com\"
|
176
|
+
# @return [Array<(Array<RestRContact>, Integer, Hash)>] Array<RestRContact> data, response status code and response headers
|
174
177
|
def get_all_contacts_with_http_info(opts = {})
|
175
178
|
if @api_client.config.debugging
|
176
179
|
@api_client.config.logger.debug 'Calling API: ContactApi.get_all_contacts ...'
|
177
180
|
end
|
178
|
-
|
179
|
-
|
180
|
-
fail ArgumentError, "invalid value for \"contact_type\", must be one of #{allowable_values}"
|
181
|
+
if @api_client.config.client_side_validation && !opts[:'offset'].nil? && opts[:'offset'] < 0
|
182
|
+
fail ArgumentError, 'invalid value for "opts[:"offset"]" when calling ContactApi.get_all_contacts, must be greater than or equal to 0.'
|
181
183
|
end
|
184
|
+
|
185
|
+
if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 1000
|
186
|
+
fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling ContactApi.get_all_contacts, must be smaller than or equal to 1000.'
|
187
|
+
end
|
188
|
+
|
189
|
+
if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
|
190
|
+
fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling ContactApi.get_all_contacts, must be greater than or equal to 1.'
|
191
|
+
end
|
192
|
+
|
193
|
+
if @api_client.config.client_side_validation && !opts[:'search'].nil? && opts[:'search'].to_s.length > 255
|
194
|
+
fail ArgumentError, 'invalid value for "opts[:"search"]" when calling ContactApi.get_all_contacts, the character length must be smaller than or equal to 255.'
|
195
|
+
end
|
196
|
+
|
197
|
+
if @api_client.config.client_side_validation && !opts[:'search'].nil? && opts[:'search'].to_s.length < 2
|
198
|
+
fail ArgumentError, 'invalid value for "opts[:"search"]" when calling ContactApi.get_all_contacts, the character length must be great than or equal to 2.'
|
199
|
+
end
|
200
|
+
|
182
201
|
# resource path
|
183
202
|
local_var_path = '/contact'
|
184
203
|
|
@@ -186,7 +205,6 @@ module SendX
|
|
186
205
|
query_params = opts[:query_params] || {}
|
187
206
|
query_params[:'offset'] = opts[:'offset'] if !opts[:'offset'].nil?
|
188
207
|
query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
|
189
|
-
query_params[:'contactType'] = opts[:'contact_type'] if !opts[:'contact_type'].nil?
|
190
208
|
query_params[:'search'] = opts[:'search'] if !opts[:'search'].nil?
|
191
209
|
|
192
210
|
# header parameters
|
@@ -201,10 +219,10 @@ module SendX
|
|
201
219
|
post_body = opts[:debug_body]
|
202
220
|
|
203
221
|
# return_type
|
204
|
-
return_type = opts[:debug_return_type] || 'Array<
|
222
|
+
return_type = opts[:debug_return_type] || 'Array<RestRContact>'
|
205
223
|
|
206
224
|
# auth_names
|
207
|
-
auth_names = opts[:debug_auth_names] || ['
|
225
|
+
auth_names = opts[:debug_auth_names] || ['TeamApiKey']
|
208
226
|
|
209
227
|
new_options = opts.merge(
|
210
228
|
:operation => :"ContactApi.get_all_contacts",
|
@@ -223,29 +241,34 @@ module SendX
|
|
223
241
|
return data, status_code, headers
|
224
242
|
end
|
225
243
|
|
226
|
-
# Get
|
227
|
-
#
|
228
|
-
# @param identifier [String]
|
244
|
+
# Get contact by ID
|
245
|
+
# Retrieves detailed information about a specific contact. **🎯 Key Features:** - Returns complete contact profile - Includes all lists and tags - Shows custom field values - Provides engagement metrics
|
246
|
+
# @param identifier [String] Resource identifier with prefix (e.g., `contact_BnKjkbBBS500CoBCP0oChQ`) **Format:** `<prefix>_<22-character-id>`
|
229
247
|
# @param [Hash] opts the optional parameters
|
230
|
-
# @return [
|
231
|
-
def
|
232
|
-
data, _status_code, _headers =
|
248
|
+
# @return [RestRContact]
|
249
|
+
def get_contact(identifier, opts = {})
|
250
|
+
data, _status_code, _headers = get_contact_with_http_info(identifier, opts)
|
233
251
|
data
|
234
252
|
end
|
235
253
|
|
236
|
-
# Get
|
237
|
-
#
|
238
|
-
# @param identifier [String]
|
254
|
+
# Get contact by ID
|
255
|
+
# Retrieves detailed information about a specific contact. **🎯 Key Features:** - Returns complete contact profile - Includes all lists and tags - Shows custom field values - Provides engagement metrics
|
256
|
+
# @param identifier [String] Resource identifier with prefix (e.g., `contact_BnKjkbBBS500CoBCP0oChQ`) **Format:** `<prefix>_<22-character-id>`
|
239
257
|
# @param [Hash] opts the optional parameters
|
240
|
-
# @return [Array<(
|
241
|
-
def
|
258
|
+
# @return [Array<(RestRContact, Integer, Hash)>] RestRContact data, response status code and response headers
|
259
|
+
def get_contact_with_http_info(identifier, opts = {})
|
242
260
|
if @api_client.config.debugging
|
243
|
-
@api_client.config.logger.debug 'Calling API: ContactApi.
|
261
|
+
@api_client.config.logger.debug 'Calling API: ContactApi.get_contact ...'
|
244
262
|
end
|
245
263
|
# verify the required parameter 'identifier' is set
|
246
264
|
if @api_client.config.client_side_validation && identifier.nil?
|
247
|
-
fail ArgumentError, "Missing the required parameter 'identifier' when calling ContactApi.
|
265
|
+
fail ArgumentError, "Missing the required parameter 'identifier' when calling ContactApi.get_contact"
|
248
266
|
end
|
267
|
+
pattern = Regexp.new(/^[a-z_]+_[a-zA-Z0-9]{22}$/)
|
268
|
+
if @api_client.config.client_side_validation && identifier !~ pattern
|
269
|
+
fail ArgumentError, "invalid value for 'identifier' when calling ContactApi.get_contact, must conform to the pattern #{pattern}."
|
270
|
+
end
|
271
|
+
|
249
272
|
# resource path
|
250
273
|
local_var_path = '/contact/{identifier}'.sub('{' + 'identifier' + '}', CGI.escape(identifier.to_s))
|
251
274
|
|
@@ -264,13 +287,13 @@ module SendX
|
|
264
287
|
post_body = opts[:debug_body]
|
265
288
|
|
266
289
|
# return_type
|
267
|
-
return_type = opts[:debug_return_type] || '
|
290
|
+
return_type = opts[:debug_return_type] || 'RestRContact'
|
268
291
|
|
269
292
|
# auth_names
|
270
|
-
auth_names = opts[:debug_auth_names] || ['
|
293
|
+
auth_names = opts[:debug_auth_names] || ['TeamApiKey']
|
271
294
|
|
272
295
|
new_options = opts.merge(
|
273
|
-
:operation => :"ContactApi.
|
296
|
+
:operation => :"ContactApi.get_contact",
|
274
297
|
:header_params => header_params,
|
275
298
|
:query_params => query_params,
|
276
299
|
:form_params => form_params,
|
@@ -281,26 +304,26 @@ module SendX
|
|
281
304
|
|
282
305
|
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
283
306
|
if @api_client.config.debugging
|
284
|
-
@api_client.config.logger.debug "API called: ContactApi#
|
307
|
+
@api_client.config.logger.debug "API called: ContactApi#get_contact\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
285
308
|
end
|
286
309
|
return data, status_code, headers
|
287
310
|
end
|
288
311
|
|
289
|
-
# Unsubscribe
|
290
|
-
#
|
291
|
-
# @param identifier [String]
|
312
|
+
# Unsubscribe contact
|
313
|
+
# Unsubscribes a contact from all marketing communications. **🎯 Key Features:** - Marks contact as unsubscribed - Removes from all active campaigns - Maintains unsubscribe history - Complies with anti-spam regulations
|
314
|
+
# @param identifier [String] Resource identifier with prefix (e.g., `contact_BnKjkbBBS500CoBCP0oChQ`) **Format:** `<prefix>_<22-character-id>`
|
292
315
|
# @param [Hash] opts the optional parameters
|
293
|
-
# @return [
|
316
|
+
# @return [MessageResponse]
|
294
317
|
def unsubscribe_contact(identifier, opts = {})
|
295
318
|
data, _status_code, _headers = unsubscribe_contact_with_http_info(identifier, opts)
|
296
319
|
data
|
297
320
|
end
|
298
321
|
|
299
|
-
# Unsubscribe
|
300
|
-
#
|
301
|
-
# @param identifier [String]
|
322
|
+
# Unsubscribe contact
|
323
|
+
# Unsubscribes a contact from all marketing communications. **🎯 Key Features:** - Marks contact as unsubscribed - Removes from all active campaigns - Maintains unsubscribe history - Complies with anti-spam regulations
|
324
|
+
# @param identifier [String] Resource identifier with prefix (e.g., `contact_BnKjkbBBS500CoBCP0oChQ`) **Format:** `<prefix>_<22-character-id>`
|
302
325
|
# @param [Hash] opts the optional parameters
|
303
|
-
# @return [Array<(
|
326
|
+
# @return [Array<(MessageResponse, Integer, Hash)>] MessageResponse data, response status code and response headers
|
304
327
|
def unsubscribe_contact_with_http_info(identifier, opts = {})
|
305
328
|
if @api_client.config.debugging
|
306
329
|
@api_client.config.logger.debug 'Calling API: ContactApi.unsubscribe_contact ...'
|
@@ -309,6 +332,11 @@ module SendX
|
|
309
332
|
if @api_client.config.client_side_validation && identifier.nil?
|
310
333
|
fail ArgumentError, "Missing the required parameter 'identifier' when calling ContactApi.unsubscribe_contact"
|
311
334
|
end
|
335
|
+
pattern = Regexp.new(/^[a-z_]+_[a-zA-Z0-9]{22}$/)
|
336
|
+
if @api_client.config.client_side_validation && identifier !~ pattern
|
337
|
+
fail ArgumentError, "invalid value for 'identifier' when calling ContactApi.unsubscribe_contact, must conform to the pattern #{pattern}."
|
338
|
+
end
|
339
|
+
|
312
340
|
# resource path
|
313
341
|
local_var_path = '/contact/unsubscribe/{identifier}'.sub('{' + 'identifier' + '}', CGI.escape(identifier.to_s))
|
314
342
|
|
@@ -327,10 +355,10 @@ module SendX
|
|
327
355
|
post_body = opts[:debug_body]
|
328
356
|
|
329
357
|
# return_type
|
330
|
-
return_type = opts[:debug_return_type] || '
|
358
|
+
return_type = opts[:debug_return_type] || 'MessageResponse'
|
331
359
|
|
332
360
|
# auth_names
|
333
|
-
auth_names = opts[:debug_auth_names] || ['
|
361
|
+
auth_names = opts[:debug_auth_names] || ['TeamApiKey']
|
334
362
|
|
335
363
|
new_options = opts.merge(
|
336
364
|
:operation => :"ContactApi.unsubscribe_contact",
|
@@ -349,35 +377,40 @@ module SendX
|
|
349
377
|
return data, status_code, headers
|
350
378
|
end
|
351
379
|
|
352
|
-
# Update
|
353
|
-
# Update
|
354
|
-
# @param
|
355
|
-
# @param identifier [String]
|
380
|
+
# Update contact
|
381
|
+
# Updates an existing contact's information. **🎯 Key Features:** - Partial updates supported - Add/remove lists and tags - Update custom fields - Change email address
|
382
|
+
# @param rest_e_contact [RestEContact]
|
383
|
+
# @param identifier [String] Resource identifier with prefix (e.g., `contact_BnKjkbBBS500CoBCP0oChQ`) **Format:** `<prefix>_<22-character-id>`
|
356
384
|
# @param [Hash] opts the optional parameters
|
357
|
-
# @return [
|
358
|
-
def update_contact(
|
359
|
-
data, _status_code, _headers = update_contact_with_http_info(
|
385
|
+
# @return [RestRContact]
|
386
|
+
def update_contact(rest_e_contact, identifier, opts = {})
|
387
|
+
data, _status_code, _headers = update_contact_with_http_info(rest_e_contact, identifier, opts)
|
360
388
|
data
|
361
389
|
end
|
362
390
|
|
363
|
-
# Update
|
364
|
-
# Update
|
365
|
-
# @param
|
366
|
-
# @param identifier [String]
|
391
|
+
# Update contact
|
392
|
+
# Updates an existing contact's information. **🎯 Key Features:** - Partial updates supported - Add/remove lists and tags - Update custom fields - Change email address
|
393
|
+
# @param rest_e_contact [RestEContact]
|
394
|
+
# @param identifier [String] Resource identifier with prefix (e.g., `contact_BnKjkbBBS500CoBCP0oChQ`) **Format:** `<prefix>_<22-character-id>`
|
367
395
|
# @param [Hash] opts the optional parameters
|
368
|
-
# @return [Array<(
|
369
|
-
def update_contact_with_http_info(
|
396
|
+
# @return [Array<(RestRContact, Integer, Hash)>] RestRContact data, response status code and response headers
|
397
|
+
def update_contact_with_http_info(rest_e_contact, identifier, opts = {})
|
370
398
|
if @api_client.config.debugging
|
371
399
|
@api_client.config.logger.debug 'Calling API: ContactApi.update_contact ...'
|
372
400
|
end
|
373
|
-
# verify the required parameter '
|
374
|
-
if @api_client.config.client_side_validation &&
|
375
|
-
fail ArgumentError, "Missing the required parameter '
|
401
|
+
# verify the required parameter 'rest_e_contact' is set
|
402
|
+
if @api_client.config.client_side_validation && rest_e_contact.nil?
|
403
|
+
fail ArgumentError, "Missing the required parameter 'rest_e_contact' when calling ContactApi.update_contact"
|
376
404
|
end
|
377
405
|
# verify the required parameter 'identifier' is set
|
378
406
|
if @api_client.config.client_side_validation && identifier.nil?
|
379
407
|
fail ArgumentError, "Missing the required parameter 'identifier' when calling ContactApi.update_contact"
|
380
408
|
end
|
409
|
+
pattern = Regexp.new(/^[a-z_]+_[a-zA-Z0-9]{22}$/)
|
410
|
+
if @api_client.config.client_side_validation && identifier !~ pattern
|
411
|
+
fail ArgumentError, "invalid value for 'identifier' when calling ContactApi.update_contact, must conform to the pattern #{pattern}."
|
412
|
+
end
|
413
|
+
|
381
414
|
# resource path
|
382
415
|
local_var_path = '/contact/{identifier}'.sub('{' + 'identifier' + '}', CGI.escape(identifier.to_s))
|
383
416
|
|
@@ -398,13 +431,13 @@ module SendX
|
|
398
431
|
form_params = opts[:form_params] || {}
|
399
432
|
|
400
433
|
# http body (model)
|
401
|
-
post_body = opts[:debug_body] || @api_client.object_to_http_body(
|
434
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(rest_e_contact)
|
402
435
|
|
403
436
|
# return_type
|
404
|
-
return_type = opts[:debug_return_type] || '
|
437
|
+
return_type = opts[:debug_return_type] || 'RestRContact'
|
405
438
|
|
406
439
|
# auth_names
|
407
|
-
auth_names = opts[:debug_auth_names] || ['
|
440
|
+
auth_names = opts[:debug_auth_names] || ['TeamApiKey']
|
408
441
|
|
409
442
|
new_options = opts.merge(
|
410
443
|
:operation => :"ContactApi.update_contact",
|