late-sdk 0.0.78 → 0.0.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +28 -1
  3. data/docs/BulkCreateContacts200Response.md +26 -0
  4. data/docs/CommentAutomationsApi.md +28 -24
  5. data/docs/ContactsApi.md +42 -36
  6. data/docs/CreateCommentAutomation200Response.md +20 -0
  7. data/docs/CreateCommentAutomation200ResponseAutomation.md +38 -0
  8. data/docs/CreateCommentAutomation200ResponseAutomationStats.md +22 -0
  9. data/docs/CreateContact200Response.md +24 -0
  10. data/docs/CreateContact200ResponseChannel.md +24 -0
  11. data/docs/CreateContact200ResponseContact.md +36 -0
  12. data/docs/CreateCustomField200Response.md +20 -0
  13. data/docs/CustomFieldsApi.md +21 -18
  14. data/docs/GetBroadcast200ResponseBroadcast.md +1 -1
  15. data/docs/GetCommentAutomation200Response.md +22 -0
  16. data/docs/GetCommentAutomation200ResponseAutomation.md +46 -0
  17. data/docs/GetCommentAutomation200ResponseLogsInner.md +32 -0
  18. data/docs/GetContact200Response.md +22 -0
  19. data/docs/GetContact200ResponseChannelsInner.md +32 -0
  20. data/docs/GetContact200ResponseContact.md +42 -0
  21. data/docs/GetContactChannels200Response.md +20 -0
  22. data/docs/GetContactChannels200ResponseChannelsInner.md +34 -0
  23. data/docs/ListCommentAutomationLogs200Response.md +22 -0
  24. data/docs/ListContacts200Response.md +24 -0
  25. data/docs/ListContacts200ResponseContactsInner.md +52 -0
  26. data/docs/{GetBroadcast200ResponseBroadcastSegmentFilters.md → ListContacts200ResponseFilters.md} +2 -2
  27. data/docs/ListCustomFields200Response.md +20 -0
  28. data/docs/ListCustomFields200ResponseFieldsInner.md +28 -0
  29. data/docs/UpdateCommentAutomation200Response.md +20 -0
  30. data/docs/UpdateCommentAutomation200ResponseAutomation.md +32 -0
  31. data/docs/UpdateContact200Response.md +20 -0
  32. data/docs/UpdateContact200ResponseContact.md +36 -0
  33. data/docs/UpdateCustomField200Response.md +20 -0
  34. data/docs/UpdateCustomField200ResponseField.md +26 -0
  35. data/lib/late-sdk/api/comment_automations_api.rb +20 -20
  36. data/lib/late-sdk/api/contacts_api.rb +30 -30
  37. data/lib/late-sdk/api/custom_fields_api.rb +15 -15
  38. data/lib/late-sdk/models/bulk_create_contacts200_response.rb +185 -0
  39. data/lib/late-sdk/models/create_comment_automation200_response.rb +156 -0
  40. data/lib/late-sdk/models/create_comment_automation200_response_automation.rb +273 -0
  41. data/lib/late-sdk/models/create_comment_automation200_response_automation_stats.rb +165 -0
  42. data/lib/late-sdk/models/create_contact200_response.rb +174 -0
  43. data/lib/late-sdk/models/create_contact200_response_channel.rb +175 -0
  44. data/lib/late-sdk/models/create_contact200_response_contact.rb +230 -0
  45. data/lib/late-sdk/models/create_custom_field200_response.rb +156 -0
  46. data/lib/late-sdk/models/get_broadcast200_response_broadcast.rb +1 -1
  47. data/lib/late-sdk/models/get_comment_automation200_response.rb +167 -0
  48. data/lib/late-sdk/models/get_comment_automation200_response_automation.rb +309 -0
  49. data/lib/late-sdk/models/get_comment_automation200_response_logs_inner.rb +244 -0
  50. data/lib/late-sdk/models/get_contact200_response.rb +167 -0
  51. data/lib/late-sdk/models/get_contact200_response_channels_inner.rb +210 -0
  52. data/lib/late-sdk/models/get_contact200_response_contact.rb +259 -0
  53. data/lib/late-sdk/models/get_contact_channels200_response.rb +158 -0
  54. data/lib/late-sdk/models/get_contact_channels200_response_channels_inner.rb +219 -0
  55. data/lib/late-sdk/models/list_comment_automation_logs200_response.rb +167 -0
  56. data/lib/late-sdk/models/list_contacts200_response.rb +176 -0
  57. data/lib/late-sdk/models/list_contacts200_response_contacts_inner.rb +302 -0
  58. data/lib/late-sdk/models/{get_broadcast200_response_broadcast_segment_filters.rb → list_contacts200_response_filters.rb} +3 -3
  59. data/lib/late-sdk/models/list_custom_fields200_response.rb +158 -0
  60. data/lib/late-sdk/models/list_custom_fields200_response_fields_inner.rb +228 -0
  61. data/lib/late-sdk/models/update_comment_automation200_response.rb +156 -0
  62. data/lib/late-sdk/models/update_comment_automation200_response_automation.rb +246 -0
  63. data/lib/late-sdk/models/update_contact200_response.rb +156 -0
  64. data/lib/late-sdk/models/update_contact200_response_contact.rb +230 -0
  65. data/lib/late-sdk/models/update_custom_field200_response.rb +156 -0
  66. data/lib/late-sdk/models/update_custom_field200_response_field.rb +185 -0
  67. data/lib/late-sdk/version.rb +1 -1
  68. data/lib/late-sdk.rb +28 -1
  69. data/openapi.yaml +324 -13
  70. data/spec/api/comment_automations_api_spec.rb +4 -4
  71. data/spec/api/contacts_api_spec.rb +6 -6
  72. data/spec/api/custom_fields_api_spec.rb +3 -3
  73. data/spec/models/bulk_create_contacts200_response_spec.rb +60 -0
  74. data/spec/models/create_comment_automation200_response_automation_spec.rb +100 -0
  75. data/spec/models/create_comment_automation200_response_automation_stats_spec.rb +48 -0
  76. data/spec/models/create_comment_automation200_response_spec.rb +42 -0
  77. data/spec/models/create_contact200_response_channel_spec.rb +54 -0
  78. data/spec/models/create_contact200_response_contact_spec.rb +90 -0
  79. data/spec/models/create_contact200_response_spec.rb +54 -0
  80. data/spec/models/create_custom_field200_response_spec.rb +42 -0
  81. data/spec/models/get_comment_automation200_response_automation_spec.rb +124 -0
  82. data/spec/models/get_comment_automation200_response_logs_inner_spec.rb +82 -0
  83. data/spec/models/get_comment_automation200_response_spec.rb +48 -0
  84. data/spec/models/get_contact200_response_channels_inner_spec.rb +78 -0
  85. data/spec/models/get_contact200_response_contact_spec.rb +108 -0
  86. data/spec/models/get_contact200_response_spec.rb +48 -0
  87. data/spec/models/get_contact_channels200_response_channels_inner_spec.rb +84 -0
  88. data/spec/models/get_contact_channels200_response_spec.rb +42 -0
  89. data/spec/models/list_comment_automation_logs200_response_spec.rb +48 -0
  90. data/spec/models/list_contacts200_response_contacts_inner_spec.rb +138 -0
  91. data/spec/models/{get_broadcast200_response_broadcast_segment_filters_spec.rb → list_contacts200_response_filters_spec.rb} +6 -6
  92. data/spec/models/list_contacts200_response_spec.rb +54 -0
  93. data/spec/models/list_custom_fields200_response_fields_inner_spec.rb +70 -0
  94. data/spec/models/list_custom_fields200_response_spec.rb +42 -0
  95. data/spec/models/update_comment_automation200_response_automation_spec.rb +82 -0
  96. data/spec/models/update_comment_automation200_response_spec.rb +42 -0
  97. data/spec/models/update_contact200_response_contact_spec.rb +90 -0
  98. data/spec/models/update_contact200_response_spec.rb +42 -0
  99. data/spec/models/update_custom_field200_response_field_spec.rb +60 -0
  100. data/spec/models/update_custom_field200_response_spec.rb +42 -0
  101. data/zernio-sdk-0.0.79.gem +0 -0
  102. metadata +114 -6
  103. data/zernio-sdk-0.0.78.gem +0 -0
@@ -0,0 +1,185 @@
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.1
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Late
17
+ class UpdateCustomField200ResponseField < ApiModelBase
18
+ attr_accessor :id
19
+
20
+ attr_accessor :name
21
+
22
+ attr_accessor :slug
23
+
24
+ attr_accessor :type
25
+
26
+ attr_accessor :options
27
+
28
+ # Attribute mapping from ruby-style variable name to JSON key.
29
+ def self.attribute_map
30
+ {
31
+ :'id' => :'id',
32
+ :'name' => :'name',
33
+ :'slug' => :'slug',
34
+ :'type' => :'type',
35
+ :'options' => :'options'
36
+ }
37
+ end
38
+
39
+ # Returns attribute mapping this model knows about
40
+ def self.acceptable_attribute_map
41
+ attribute_map
42
+ end
43
+
44
+ # Returns all the JSON keys this model knows about
45
+ def self.acceptable_attributes
46
+ acceptable_attribute_map.values
47
+ end
48
+
49
+ # Attribute type mapping.
50
+ def self.openapi_types
51
+ {
52
+ :'id' => :'String',
53
+ :'name' => :'String',
54
+ :'slug' => :'String',
55
+ :'type' => :'String',
56
+ :'options' => :'Array<String>'
57
+ }
58
+ end
59
+
60
+ # List of attributes with nullable: true
61
+ def self.openapi_nullable
62
+ Set.new([
63
+ ])
64
+ end
65
+
66
+ # Initializes the object
67
+ # @param [Hash] attributes Model attributes in the form of hash
68
+ def initialize(attributes = {})
69
+ if (!attributes.is_a?(Hash))
70
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Late::UpdateCustomField200ResponseField` initialize method"
71
+ end
72
+
73
+ # check to see if the attribute exists and convert string to symbol for hash key
74
+ acceptable_attribute_map = self.class.acceptable_attribute_map
75
+ attributes = attributes.each_with_object({}) { |(k, v), h|
76
+ if (!acceptable_attribute_map.key?(k.to_sym))
77
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Late::UpdateCustomField200ResponseField`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
78
+ end
79
+ h[k.to_sym] = v
80
+ }
81
+
82
+ if attributes.key?(:'id')
83
+ self.id = attributes[:'id']
84
+ end
85
+
86
+ if attributes.key?(:'name')
87
+ self.name = attributes[:'name']
88
+ end
89
+
90
+ if attributes.key?(:'slug')
91
+ self.slug = attributes[:'slug']
92
+ end
93
+
94
+ if attributes.key?(:'type')
95
+ self.type = attributes[:'type']
96
+ end
97
+
98
+ if attributes.key?(:'options')
99
+ if (value = attributes[:'options']).is_a?(Array)
100
+ self.options = value
101
+ end
102
+ end
103
+ end
104
+
105
+ # Show invalid properties with the reasons. Usually used together with valid?
106
+ # @return Array for valid properties with the reasons
107
+ def list_invalid_properties
108
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
109
+ invalid_properties = Array.new
110
+ invalid_properties
111
+ end
112
+
113
+ # Check to see if the all the properties in the model are valid
114
+ # @return true if the model is valid
115
+ def valid?
116
+ warn '[DEPRECATED] the `valid?` method is obsolete'
117
+ true
118
+ end
119
+
120
+ # Checks equality by comparing each attribute.
121
+ # @param [Object] Object to be compared
122
+ def ==(o)
123
+ return true if self.equal?(o)
124
+ self.class == o.class &&
125
+ id == o.id &&
126
+ name == o.name &&
127
+ slug == o.slug &&
128
+ type == o.type &&
129
+ options == o.options
130
+ end
131
+
132
+ # @see the `==` method
133
+ # @param [Object] Object to be compared
134
+ def eql?(o)
135
+ self == o
136
+ end
137
+
138
+ # Calculates hash code according to all attributes.
139
+ # @return [Integer] Hash code
140
+ def hash
141
+ [id, name, slug, type, options].hash
142
+ end
143
+
144
+ # Builds the object from hash
145
+ # @param [Hash] attributes Model attributes in the form of hash
146
+ # @return [Object] Returns the model itself
147
+ def self.build_from_hash(attributes)
148
+ return nil unless attributes.is_a?(Hash)
149
+ attributes = attributes.transform_keys(&:to_sym)
150
+ transformed_hash = {}
151
+ openapi_types.each_pair do |key, type|
152
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
153
+ transformed_hash["#{key}"] = nil
154
+ elsif type =~ /\AArray<(.*)>/i
155
+ # check to ensure the input is an array given that the attribute
156
+ # is documented as an array but the input is not
157
+ if attributes[attribute_map[key]].is_a?(Array)
158
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
159
+ end
160
+ elsif !attributes[attribute_map[key]].nil?
161
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
162
+ end
163
+ end
164
+ new(transformed_hash)
165
+ end
166
+
167
+ # Returns the object in the form of hash
168
+ # @return [Hash] Returns the object in the form of hash
169
+ def to_hash
170
+ hash = {}
171
+ self.class.attribute_map.each_pair do |attr, param|
172
+ value = self.send(attr)
173
+ if value.nil?
174
+ is_nullable = self.class.openapi_nullable.include?(attr)
175
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
176
+ end
177
+
178
+ hash[param] = _to_hash(value)
179
+ end
180
+ hash
181
+ end
182
+
183
+ end
184
+
185
+ end
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Late
14
- VERSION = '0.0.78'
14
+ VERSION = '0.0.79'
15
15
  end
data/lib/late-sdk.rb CHANGED
@@ -39,6 +39,7 @@ require 'late-sdk/models/api_key_profile_ids_inner'
39
39
  require 'late-sdk/models/bluesky_platform_data'
40
40
  require 'late-sdk/models/bookmark_post200_response'
41
41
  require 'late-sdk/models/bookmark_post_request'
42
+ require 'late-sdk/models/bulk_create_contacts200_response'
42
43
  require 'late-sdk/models/bulk_create_contacts_request'
43
44
  require 'late-sdk/models/bulk_create_contacts_request_contacts_inner'
44
45
  require 'late-sdk/models/bulk_delete_whats_app_contacts200_response'
@@ -80,8 +81,15 @@ require 'late-sdk/models/create_broadcast_request_message'
80
81
  require 'late-sdk/models/create_broadcast_request_message_attachments_inner'
81
82
  require 'late-sdk/models/create_broadcast_request_segment_filters'
82
83
  require 'late-sdk/models/create_broadcast_request_template'
84
+ require 'late-sdk/models/create_comment_automation200_response'
85
+ require 'late-sdk/models/create_comment_automation200_response_automation'
86
+ require 'late-sdk/models/create_comment_automation200_response_automation_stats'
83
87
  require 'late-sdk/models/create_comment_automation_request'
88
+ require 'late-sdk/models/create_contact200_response'
89
+ require 'late-sdk/models/create_contact200_response_channel'
90
+ require 'late-sdk/models/create_contact200_response_contact'
84
91
  require 'late-sdk/models/create_contact_request'
92
+ require 'late-sdk/models/create_custom_field200_response'
85
93
  require 'late-sdk/models/create_custom_field_request'
86
94
  require 'late-sdk/models/create_google_business_media200_response'
87
95
  require 'late-sdk/models/create_google_business_media_request'
@@ -174,8 +182,15 @@ require 'late-sdk/models/get_best_time_to_post403_response'
174
182
  require 'late-sdk/models/get_broadcast200_response'
175
183
  require 'late-sdk/models/get_broadcast200_response_broadcast'
176
184
  require 'late-sdk/models/get_broadcast200_response_broadcast_message'
177
- require 'late-sdk/models/get_broadcast200_response_broadcast_segment_filters'
185
+ require 'late-sdk/models/get_comment_automation200_response'
186
+ require 'late-sdk/models/get_comment_automation200_response_automation'
187
+ require 'late-sdk/models/get_comment_automation200_response_logs_inner'
178
188
  require 'late-sdk/models/get_connect_url200_response'
189
+ require 'late-sdk/models/get_contact200_response'
190
+ require 'late-sdk/models/get_contact200_response_channels_inner'
191
+ require 'late-sdk/models/get_contact200_response_contact'
192
+ require 'late-sdk/models/get_contact_channels200_response'
193
+ require 'late-sdk/models/get_contact_channels200_response_channels_inner'
179
194
  require 'late-sdk/models/get_content_decay200_response'
180
195
  require 'late-sdk/models/get_content_decay200_response_buckets_inner'
181
196
  require 'late-sdk/models/get_daily_metrics200_response'
@@ -354,10 +369,16 @@ require 'late-sdk/models/list_broadcast_recipients200_response'
354
369
  require 'late-sdk/models/list_broadcast_recipients200_response_recipients_inner'
355
370
  require 'late-sdk/models/list_broadcasts200_response'
356
371
  require 'late-sdk/models/list_broadcasts200_response_broadcasts_inner'
372
+ require 'late-sdk/models/list_comment_automation_logs200_response'
357
373
  require 'late-sdk/models/list_comment_automations200_response'
358
374
  require 'late-sdk/models/list_comment_automations200_response_automations_inner'
359
375
  require 'late-sdk/models/list_comment_automations200_response_automations_inner_stats'
360
376
  require 'late-sdk/models/list_connection_logs200_response'
377
+ require 'late-sdk/models/list_contacts200_response'
378
+ require 'late-sdk/models/list_contacts200_response_contacts_inner'
379
+ require 'late-sdk/models/list_contacts200_response_filters'
380
+ require 'late-sdk/models/list_custom_fields200_response'
381
+ require 'late-sdk/models/list_custom_fields200_response_fields_inner'
361
382
  require 'late-sdk/models/list_facebook_pages200_response'
362
383
  require 'late-sdk/models/list_facebook_pages200_response_pages_inner'
363
384
  require 'late-sdk/models/list_google_business_locations200_response'
@@ -535,8 +556,14 @@ require 'late-sdk/models/update_account_group_request'
535
556
  require 'late-sdk/models/update_account_request'
536
557
  require 'late-sdk/models/update_broadcast200_response'
537
558
  require 'late-sdk/models/update_broadcast200_response_broadcast'
559
+ require 'late-sdk/models/update_comment_automation200_response'
560
+ require 'late-sdk/models/update_comment_automation200_response_automation'
538
561
  require 'late-sdk/models/update_comment_automation_request'
562
+ require 'late-sdk/models/update_contact200_response'
563
+ require 'late-sdk/models/update_contact200_response_contact'
539
564
  require 'late-sdk/models/update_contact_request'
565
+ require 'late-sdk/models/update_custom_field200_response'
566
+ require 'late-sdk/models/update_custom_field200_response_field'
540
567
  require 'late-sdk/models/update_custom_field_request'
541
568
  require 'late-sdk/models/update_facebook_page200_response'
542
569
  require 'late-sdk/models/update_facebook_page200_response_selected_page'
data/openapi.yaml CHANGED
@@ -14592,7 +14592,48 @@ paths:
14592
14592
  - { name: limit, in: query, schema: { type: integer, default: 50, maximum: 200 } }
14593
14593
  - { name: skip, in: query, schema: { type: integer, default: 0 } }
14594
14594
  responses:
14595
- '200': { description: Contacts list with pagination and filter metadata }
14595
+ '200':
14596
+ description: Contacts list with pagination and filter metadata
14597
+ content:
14598
+ application/json:
14599
+ schema:
14600
+ type: object
14601
+ properties:
14602
+ success: { type: boolean }
14603
+ contacts:
14604
+ type: array
14605
+ items:
14606
+ type: object
14607
+ properties:
14608
+ id: { type: string }
14609
+ name: { type: string }
14610
+ email: { type: string }
14611
+ company: { type: string }
14612
+ avatarUrl: { type: string }
14613
+ tags: { type: array, items: { type: string } }
14614
+ isSubscribed: { type: boolean }
14615
+ isBlocked: { type: boolean }
14616
+ lastMessageSentAt: { type: string, format: date-time }
14617
+ lastMessageReceivedAt: { type: string, format: date-time }
14618
+ messagesSentCount: { type: integer }
14619
+ messagesReceivedCount: { type: integer }
14620
+ customFields: { type: object }
14621
+ notes: { type: string }
14622
+ createdAt: { type: string, format: date-time }
14623
+ platform: { type: string }
14624
+ platformIdentifier: { type: string }
14625
+ displayIdentifier: { type: string }
14626
+ filters:
14627
+ type: object
14628
+ properties:
14629
+ tags: { type: array, items: { type: string } }
14630
+ pagination:
14631
+ type: object
14632
+ properties:
14633
+ total: { type: integer }
14634
+ limit: { type: integer }
14635
+ skip: { type: integer }
14636
+ hasMore: { type: boolean }
14596
14637
  '401': { $ref: '#/components/responses/Unauthorized' }
14597
14638
  post:
14598
14639
  operationId: createContact
@@ -14619,7 +14660,36 @@ paths:
14619
14660
  platformIdentifier: { type: string }
14620
14661
  displayIdentifier: { type: string }
14621
14662
  responses:
14622
- '200': { description: Contact created }
14663
+ '200':
14664
+ description: Contact created
14665
+ content:
14666
+ application/json:
14667
+ schema:
14668
+ type: object
14669
+ properties:
14670
+ success: { type: boolean }
14671
+ contact:
14672
+ type: object
14673
+ properties:
14674
+ id: { type: string }
14675
+ name: { type: string }
14676
+ email: { type: string }
14677
+ company: { type: string }
14678
+ tags: { type: array, items: { type: string } }
14679
+ isSubscribed: { type: boolean }
14680
+ isBlocked: { type: boolean }
14681
+ customFields: { type: object }
14682
+ notes: { type: string }
14683
+ createdAt: { type: string, format: date-time }
14684
+ channel:
14685
+ type: object
14686
+ description: Created when accountId, platform, and platformIdentifier are provided
14687
+ properties:
14688
+ id: { type: string }
14689
+ platform: { type: string }
14690
+ platformIdentifier: { type: string }
14691
+ displayIdentifier: { type: string }
14692
+ warning: { type: string }
14623
14693
  '401': { $ref: '#/components/responses/Unauthorized' }
14624
14694
  '409': { description: Duplicate contact }
14625
14695
 
@@ -14631,7 +14701,43 @@ paths:
14631
14701
  parameters:
14632
14702
  - { name: contactId, in: path, required: true, schema: { type: string } }
14633
14703
  responses:
14634
- '200': { description: Contact with channels }
14704
+ '200':
14705
+ description: Contact with channels
14706
+ content:
14707
+ application/json:
14708
+ schema:
14709
+ type: object
14710
+ properties:
14711
+ success: { type: boolean }
14712
+ contact:
14713
+ type: object
14714
+ properties:
14715
+ id: { type: string }
14716
+ name: { type: string }
14717
+ email: { type: string }
14718
+ company: { type: string }
14719
+ avatarUrl: { type: string }
14720
+ tags: { type: array, items: { type: string } }
14721
+ isSubscribed: { type: boolean }
14722
+ isBlocked: { type: boolean }
14723
+ customFields: { type: object }
14724
+ notes: { type: string }
14725
+ conversationIds: { type: array, items: { type: string } }
14726
+ createdAt: { type: string, format: date-time }
14727
+ updatedAt: { type: string, format: date-time }
14728
+ channels:
14729
+ type: array
14730
+ items:
14731
+ type: object
14732
+ properties:
14733
+ id: { type: string }
14734
+ accountId: { type: string }
14735
+ platform: { type: string }
14736
+ platformIdentifier: { type: string }
14737
+ displayIdentifier: { type: string }
14738
+ isSubscribed: { type: boolean }
14739
+ conversationId: { type: string }
14740
+ createdAt: { type: string, format: date-time }
14635
14741
  '401': { $ref: '#/components/responses/Unauthorized' }
14636
14742
  '404': { $ref: '#/components/responses/NotFound' }
14637
14743
  patch:
@@ -14655,7 +14761,27 @@ paths:
14655
14761
  isBlocked: { type: boolean }
14656
14762
  notes: { type: string }
14657
14763
  responses:
14658
- '200': { description: Contact updated }
14764
+ '200':
14765
+ description: Contact updated
14766
+ content:
14767
+ application/json:
14768
+ schema:
14769
+ type: object
14770
+ properties:
14771
+ success: { type: boolean }
14772
+ contact:
14773
+ type: object
14774
+ properties:
14775
+ id: { type: string }
14776
+ name: { type: string }
14777
+ email: { type: string }
14778
+ company: { type: string }
14779
+ avatarUrl: { type: string }
14780
+ tags: { type: array, items: { type: string } }
14781
+ isSubscribed: { type: boolean }
14782
+ isBlocked: { type: boolean }
14783
+ notes: { type: string }
14784
+ updatedAt: { type: string, format: date-time }
14659
14785
  '401': { $ref: '#/components/responses/Unauthorized' }
14660
14786
  '404': { $ref: '#/components/responses/NotFound' }
14661
14787
  delete:
@@ -14677,7 +14803,28 @@ paths:
14677
14803
  parameters:
14678
14804
  - { name: contactId, in: path, required: true, schema: { type: string } }
14679
14805
  responses:
14680
- '200': { description: List of contact channels }
14806
+ '200':
14807
+ description: List of contact channels
14808
+ content:
14809
+ application/json:
14810
+ schema:
14811
+ type: object
14812
+ properties:
14813
+ success: { type: boolean }
14814
+ channels:
14815
+ type: array
14816
+ items:
14817
+ type: object
14818
+ properties:
14819
+ id: { type: string }
14820
+ accountId: { type: string }
14821
+ platform: { type: string }
14822
+ platformIdentifier: { type: string }
14823
+ displayIdentifier: { type: string }
14824
+ isSubscribed: { type: boolean }
14825
+ conversationId: { type: string }
14826
+ metadata: { type: object }
14827
+ createdAt: { type: string, format: date-time }
14681
14828
  '401': { $ref: '#/components/responses/Unauthorized' }
14682
14829
  '404': { $ref: '#/components/responses/NotFound' }
14683
14830
 
@@ -14712,7 +14859,18 @@ paths:
14712
14859
  company: { type: string }
14713
14860
  tags: { type: array, items: { type: string } }
14714
14861
  responses:
14715
- '200': { description: Bulk import results }
14862
+ '200':
14863
+ description: Bulk import results
14864
+ content:
14865
+ application/json:
14866
+ schema:
14867
+ type: object
14868
+ properties:
14869
+ success: { type: boolean }
14870
+ created: { type: integer }
14871
+ skipped: { type: integer }
14872
+ errors: { type: array, items: { type: object } }
14873
+ total: { type: integer }
14716
14874
  '401': { $ref: '#/components/responses/Unauthorized' }
14717
14875
 
14718
14876
  /v1/contacts/{contactId}/fields/{slug}:
@@ -14758,7 +14916,25 @@ paths:
14758
14916
  parameters:
14759
14917
  - { name: profileId, in: query, schema: { type: string }, description: Filter by profile. Omit to list across all profiles }
14760
14918
  responses:
14761
- '200': { description: List of custom field definitions }
14919
+ '200':
14920
+ description: List of custom field definitions
14921
+ content:
14922
+ application/json:
14923
+ schema:
14924
+ type: object
14925
+ properties:
14926
+ success: { type: boolean }
14927
+ fields:
14928
+ type: array
14929
+ items:
14930
+ type: object
14931
+ properties:
14932
+ id: { type: string }
14933
+ name: { type: string }
14934
+ slug: { type: string }
14935
+ type: { type: string, enum: [text, number, date, boolean, select] }
14936
+ options: { type: array, items: { type: string } }
14937
+ createdAt: { type: string, format: date-time }
14762
14938
  '401': { $ref: '#/components/responses/Unauthorized' }
14763
14939
  post:
14764
14940
  operationId: createCustomField
@@ -14778,7 +14954,23 @@ paths:
14778
14954
  type: { type: string, enum: [text, number, date, boolean, select] }
14779
14955
  options: { type: array, items: { type: string }, description: Required for select type }
14780
14956
  responses:
14781
- '200': { description: Custom field created }
14957
+ '200':
14958
+ description: Custom field created
14959
+ content:
14960
+ application/json:
14961
+ schema:
14962
+ type: object
14963
+ properties:
14964
+ success: { type: boolean }
14965
+ field:
14966
+ type: object
14967
+ properties:
14968
+ id: { type: string }
14969
+ name: { type: string }
14970
+ slug: { type: string }
14971
+ type: { type: string, enum: [text, number, date, boolean, select] }
14972
+ options: { type: array, items: { type: string } }
14973
+ createdAt: { type: string, format: date-time }
14782
14974
  '401': { $ref: '#/components/responses/Unauthorized' }
14783
14975
  '409': { description: Duplicate slug }
14784
14976
 
@@ -14798,7 +14990,22 @@ paths:
14798
14990
  name: { type: string }
14799
14991
  options: { type: array, items: { type: string } }
14800
14992
  responses:
14801
- '200': { description: Custom field updated }
14993
+ '200':
14994
+ description: Custom field updated
14995
+ content:
14996
+ application/json:
14997
+ schema:
14998
+ type: object
14999
+ properties:
15000
+ success: { type: boolean }
15001
+ field:
15002
+ type: object
15003
+ properties:
15004
+ id: { type: string }
15005
+ name: { type: string }
15006
+ slug: { type: string }
15007
+ type: { type: string }
15008
+ options: { type: array, items: { type: string } }
14802
15009
  '401': { $ref: '#/components/responses/Unauthorized' }
14803
15010
  '404': { $ref: '#/components/responses/NotFound' }
14804
15011
  delete:
@@ -15566,7 +15773,28 @@ paths:
15566
15773
  dmMessage: { type: string, description: DM text to send to commenter }
15567
15774
  commentReply: { type: string, description: Optional public reply to the comment }
15568
15775
  responses:
15569
- '200': { description: Automation created }
15776
+ '200':
15777
+ description: Automation created
15778
+ content:
15779
+ application/json:
15780
+ schema:
15781
+ type: object
15782
+ properties:
15783
+ success: { type: boolean }
15784
+ automation:
15785
+ type: object
15786
+ properties:
15787
+ id: { type: string }
15788
+ name: { type: string }
15789
+ platform: { type: string }
15790
+ platformPostId: { type: string }
15791
+ keywords: { type: array, items: { type: string } }
15792
+ matchMode: { type: string, enum: [exact, contains] }
15793
+ dmMessage: { type: string }
15794
+ commentReply: { type: string }
15795
+ isActive: { type: boolean }
15796
+ stats: { type: object, properties: { totalTriggered: { type: integer }, totalSent: { type: integer }, totalFailed: { type: integer } } }
15797
+ createdAt: { type: string, format: date-time }
15570
15798
  '400': { description: Validation error }
15571
15799
  '401': { $ref: '#/components/responses/Unauthorized' }
15572
15800
  '409': { description: Active automation already exists for this post }
@@ -15581,7 +15809,45 @@ paths:
15581
15809
  parameters:
15582
15810
  - { name: automationId, in: path, required: true, schema: { type: string } }
15583
15811
  responses:
15584
- '200': { description: Automation details with stats and recent trigger logs }
15812
+ '200':
15813
+ description: Automation details with stats and recent trigger logs
15814
+ content:
15815
+ application/json:
15816
+ schema:
15817
+ type: object
15818
+ properties:
15819
+ success: { type: boolean }
15820
+ automation:
15821
+ type: object
15822
+ properties:
15823
+ id: { type: string }
15824
+ name: { type: string }
15825
+ platform: { type: string }
15826
+ accountId: { type: string }
15827
+ platformPostId: { type: string }
15828
+ postId: { type: string }
15829
+ postTitle: { type: string }
15830
+ keywords: { type: array, items: { type: string } }
15831
+ matchMode: { type: string, enum: [exact, contains] }
15832
+ dmMessage: { type: string }
15833
+ commentReply: { type: string }
15834
+ isActive: { type: boolean }
15835
+ stats: { type: object, properties: { totalTriggered: { type: integer }, totalSent: { type: integer }, totalFailed: { type: integer } } }
15836
+ createdAt: { type: string, format: date-time }
15837
+ updatedAt: { type: string, format: date-time }
15838
+ logs:
15839
+ type: array
15840
+ items:
15841
+ type: object
15842
+ properties:
15843
+ id: { type: string }
15844
+ commentId: { type: string }
15845
+ commenterId: { type: string }
15846
+ commenterName: { type: string }
15847
+ commentText: { type: string }
15848
+ status: { type: string, enum: [sent, failed, skipped] }
15849
+ error: { type: string }
15850
+ createdAt: { type: string, format: date-time }
15585
15851
  '401': { $ref: '#/components/responses/Unauthorized' }
15586
15852
  '404': { $ref: '#/components/responses/NotFound' }
15587
15853
  patch:
@@ -15605,7 +15871,25 @@ paths:
15605
15871
  commentReply: { type: string }
15606
15872
  isActive: { type: boolean }
15607
15873
  responses:
15608
- '200': { description: Automation updated }
15874
+ '200':
15875
+ description: Automation updated
15876
+ content:
15877
+ application/json:
15878
+ schema:
15879
+ type: object
15880
+ properties:
15881
+ success: { type: boolean }
15882
+ automation:
15883
+ type: object
15884
+ properties:
15885
+ id: { type: string }
15886
+ name: { type: string }
15887
+ keywords: { type: array, items: { type: string } }
15888
+ matchMode: { type: string, enum: [exact, contains] }
15889
+ dmMessage: { type: string }
15890
+ commentReply: { type: string }
15891
+ isActive: { type: boolean }
15892
+ updatedAt: { type: string, format: date-time }
15609
15893
  '401': { $ref: '#/components/responses/Unauthorized' }
15610
15894
  '404': { $ref: '#/components/responses/NotFound' }
15611
15895
  delete:
@@ -15635,7 +15919,34 @@ paths:
15635
15919
  - { name: limit, in: query, schema: { type: integer, default: 50 } }
15636
15920
  - { name: skip, in: query, schema: { type: integer, default: 0 } }
15637
15921
  responses:
15638
- '200': { description: Trigger logs with pagination }
15922
+ '200':
15923
+ description: Trigger logs with pagination
15924
+ content:
15925
+ application/json:
15926
+ schema:
15927
+ type: object
15928
+ properties:
15929
+ success: { type: boolean }
15930
+ logs:
15931
+ type: array
15932
+ items:
15933
+ type: object
15934
+ properties:
15935
+ id: { type: string }
15936
+ commentId: { type: string }
15937
+ commenterId: { type: string }
15938
+ commenterName: { type: string }
15939
+ commentText: { type: string }
15940
+ status: { type: string, enum: [sent, failed, skipped] }
15941
+ error: { type: string }
15942
+ createdAt: { type: string, format: date-time }
15943
+ pagination:
15944
+ type: object
15945
+ properties:
15946
+ total: { type: integer }
15947
+ limit: { type: integer }
15948
+ skip: { type: integer }
15949
+ hasMore: { type: boolean }
15639
15950
  '401': { $ref: '#/components/responses/Unauthorized' }
15640
15951
  '404': { $ref: '#/components/responses/NotFound' }
15641
15952