|
4 | 4 | contact_lists = Mailtrap::ContactListsAPI.new 3229, client
|
5 | 5 | contacts = Mailtrap::ContactsAPI.new 3229, client
|
6 | 6 | contact_fields = Mailtrap::ContactFieldsAPI.new 3229, client
|
| 7 | +contact_imports = Mailtrap::ContactImportsAPI.new 3229, client |
7 | 8 |
|
8 | 9 | # Set your API credentials as environment variables
|
9 | 10 | # export MAILTRAP_API_KEY='your-api-key'
|
|
12 | 13 | # contact_lists = Mailtrap::ContactListsAPI.new
|
13 | 14 | # contacts = Mailtrap::ContactsAPI.new
|
14 | 15 | # contact_fields = Mailtrap::ContactFieldsAPI.new
|
| 16 | +# contact_imports = Mailtrap::ContactImportsAPI.new |
15 | 17 |
|
16 | 18 | # Create new contact list
|
17 | 19 | list = contact_lists.create(name: 'Test List')
|
18 |
| -# => ContactList.new(id: 1, name: 'Test List') |
| 20 | +# => #<struct Mailtrap::ContactList id=1, name="Test List"> |
19 | 21 |
|
20 | 22 | # Get all contact lists
|
21 | 23 | contact_lists.list
|
22 |
| -# => [ContactList.new(id: 1, name: 'Test List')] |
| 24 | +# => [#<struct Mailtrap::ContactList id=1, name="Test List">] |
23 | 25 |
|
24 | 26 | # Update contact list
|
25 | 27 | contact_lists.update(list.id, name: 'Test List Updated')
|
26 |
| -# => ContactList.new(id: 1, name: 'Test List Updated') |
| 28 | +# => #<struct Mailtrap::ContactList id=1, name="Test List Updated"> |
27 | 29 |
|
28 | 30 | # Get contact list
|
29 | 31 | list = contact_lists.get(list.id)
|
30 |
| -# => ContactList.new(id: 1, name: 'Test List Updated') |
| 32 | +# => #<struct Mailtrap::ContactList id=1, name="Test List Updated"> |
| 33 | + |
| 34 | +# Delete contact list |
| 35 | +contact_lists.delete(list.id) |
31 | 36 |
|
32 | 37 | # Create new contact field
|
33 | 38 | field = contact_fields.create(name: 'Nickname', data_type: 'text', merge_tag: 'nickname')
|
34 |
| -# => ContactField.new(id: 1, name: 'Nickname', data_type: 'text', merge_tag: 'nickname') |
| 39 | +# => #<struct Mailtrap::ContactField id=1, name="Nickname", data_type="text", merge_tag="nickname"> |
35 | 40 |
|
36 | 41 | # Get all contact fields
|
37 | 42 | contact_fields.list
|
38 |
| -# => [ContactField.new(id: 1, name: 'Nickname', data_type: 'text', merge_tag: 'nickname')] |
| 43 | +# => [#<struct Mailtrap::ContactField id=1, name="Nickname", data_type="text", merge_tag="nickname">] |
39 | 44 |
|
40 | 45 | # Update contact field
|
41 | 46 | contact_fields.update(field.id, name: 'Nickname 2', merge_tag: 'nickname')
|
42 |
| -# => ContactField.new(id: 1, name: 'Nickname 2', data_type: 'text', merge_tag: 'nickname') |
| 47 | +# => #<struct Mailtrap::ContactField id=1, name="Nickname 2", data_type="text", merge_tag="nickname"> |
43 | 48 |
|
44 | 49 | # Get contact field
|
45 | 50 | field = contact_fields.get(field.id)
|
46 |
| -# => ContactField.new(id: 1, name: 'Nickname 2', data_type: 'text', merge_tag: 'nickname') |
| 51 | +# => #<struct Mailtrap::ContactField id=1, name="Nickname 2", data_type="text", merge_tag="nickname"> |
47 | 52 |
|
48 | 53 | # Create new contact with all possible fields
|
49 | 54 | contact = contacts.create(
|
50 | 55 |
|
51 | 56 | fields: { field.merge_tag => 'John Doe' },
|
52 | 57 | list_ids: [list.id]
|
53 | 58 | )
|
54 |
| -# => Contact.new( |
55 |
| -# id: 1, |
56 |
| - |
57 |
| -# fields: { 'nickname' => 'John Doe' }, |
58 |
| -# list_ids: [1], |
59 |
| -# status: 'subscribed', |
60 |
| -# created_at: 1721212345, |
61 |
| -# updated_at: 1721212345 |
62 |
| -# ) |
| 59 | +# => #<struct Mailtrap::Contact |
| 60 | +# id=1, |
| 61 | + |
| 62 | +# fields={ "nickname" => "John Doe" }, |
| 63 | +# list_ids=[1], |
| 64 | +# status="subscribed", |
| 65 | +# created_at=1721212345, |
| 66 | +# updated_at=1721212345> |
63 | 67 | contact.newly_created? # => true
|
64 | 68 |
|
65 | 69 | # Get contact
|
66 | 70 | contact = contacts.get(contact.id)
|
67 |
| -# => Contact.new( |
68 |
| -# id: 1, |
69 |
| - |
70 |
| -# fields: { 'nickname' => 'John Doe' }, |
71 |
| -# list_ids: [1], |
72 |
| -# status: 'subscribed', |
73 |
| -# created_at: 1721212345, |
74 |
| -# updated_at: 1721212345 |
75 |
| -# ) |
| 71 | +# => #<struct Mailtrap::Contact |
| 72 | +# id=1, |
| 73 | + |
| 74 | +# fields={ "nickname" => "John Doe" }, |
| 75 | +# list_ids=[1], |
| 76 | +# status="subscribed", |
| 77 | +# created_at=1721212345, |
| 78 | +# updated_at=1721212345> |
76 | 79 |
|
77 | 80 | # Update contact using id
|
78 | 81 | updated_contact = contacts.upsert(
|
79 | 82 | contact.id,
|
80 | 83 |
|
81 | 84 | fields: { field.merge_tag => 'Jane Doe' }
|
82 | 85 | )
|
83 |
| -# => Contact.new( |
84 |
| -# id: 1, |
85 |
| - |
86 |
| -# fields: { 'nickname' => 'Jane Doe' }, |
87 |
| -# list_ids: [1], |
88 |
| -# status: 'subscribed', |
89 |
| -# created_at: 1721212345, |
90 |
| -# updated_at: 1721212350 |
91 |
| -# ) |
| 86 | +# => #<struct Mailtrap::Contact |
| 87 | +# id=1, |
| 88 | + |
| 89 | +# fields={ "nickname" => "Jane Doe" }, |
| 90 | +# list_ids=[1], |
| 91 | +# status="subscribed", |
| 92 | +# created_at=1721212345, |
| 93 | +# updated_at=1721212350> |
92 | 94 | updated_contact.newly_created? # => false
|
93 | 95 |
|
94 | 96 | # Update contact using email
|
|
97 | 99 |
|
98 | 100 | fields: { field.merge_tag => 'Jane Doe' }
|
99 | 101 | )
|
100 |
| -# => Contact.new( |
101 |
| -# id: 1, |
102 |
| - |
103 |
| -# fields: { 'nickname' => 'Jane Doe' }, |
104 |
| -# list_ids: [1], |
105 |
| -# status: 'subscribed', |
106 |
| -# created_at: 1721212345, |
107 |
| -# updated_at: 1721212355 |
108 |
| -# ) |
| 102 | +# => #<struct Mailtrap::Contact |
| 103 | +# id=1, |
| 104 | + |
| 105 | +# fields={ "nickname" => "Jane Doe" }, |
| 106 | +# list_ids=[1], |
| 107 | +# status="subscribed", |
| 108 | +# created_at=1721212345, |
| 109 | +# updated_at=1721212355> |
109 | 110 | updated_contact.newly_created? # => false
|
110 | 111 |
|
111 | 112 | # Remove contact from lists
|
112 | 113 | contacts.remove_from_lists(contact.id, [list.id])
|
113 |
| -# => Contact.new( |
114 |
| -# id: 1, |
115 |
| - |
116 |
| -# fields: { 'nickname' => 'Jane Doe' }, |
117 |
| -# list_ids: [], |
118 |
| -# status: 'subscribed', |
119 |
| -# created_at: 1721212345, |
120 |
| -# updated_at: 1721212360 |
121 |
| -# ) |
| 114 | +# => #<struct Mailtrap::Contact |
| 115 | +# id=1, |
| 116 | + |
| 117 | +# fields={ "nickname" => "Jane Doe" }, |
| 118 | +# list_ids=[], |
| 119 | +# status="subscribed", |
| 120 | +# created_at=1721212345, |
| 121 | +# updated_at=1721212360> |
122 | 122 |
|
123 | 123 | # Add contact to lists
|
124 | 124 | contacts.add_to_lists(contact.id, [list.id])
|
125 |
| -# => Contact.new( |
126 |
| -# id: 1, |
127 |
| - |
128 |
| -# fields: { 'nickname' => 'Jane Doe' }, |
129 |
| -# list_ids: [1], |
130 |
| -# status: 'subscribed', |
131 |
| -# created_at: 1721212345, |
132 |
| -# updated_at: 1721212365 |
133 |
| -# ) |
| 125 | +# => #<struct Mailtrap::Contact |
| 126 | +# id=1, |
| 127 | + |
| 128 | +# fields={ "nickname" => "Jane Doe" }, |
| 129 | +# list_ids=[1], |
| 130 | +# status="subscribed", |
| 131 | +# created_at=1721212345, |
| 132 | +# updated_at=1721212365> |
134 | 133 |
|
135 | 134 | # Delete contact
|
136 | 135 | contacts.delete(contact.id)
|
137 | 136 |
|
138 |
| -# Delete contact list |
139 |
| -contact_lists.delete(list.id) |
140 |
| - |
141 | 137 | # Delete contact field
|
142 | 138 | contact_fields.delete(field.id)
|
| 139 | + |
| 140 | +# Create a new contact import using ContactsImportRequest builder |
| 141 | +import_request = Mailtrap::ContactsImportRequest.new.tap do |req| |
| 142 | + req.upsert(email: '[email protected]', fields: { first_name: 'John' }) |
| 143 | + .add_to_lists(email: '[email protected]', list_ids: [1]) |
| 144 | + .remove_from_lists(email: '[email protected]', list_ids: [2]) |
| 145 | + |
| 146 | + req.upsert(email: '[email protected]', fields: { first_name: 'Jane' }) |
| 147 | + .add_to_lists(email: '[email protected]', list_ids: [1]) |
| 148 | + .remove_from_lists(email: '[email protected]', list_ids: [2]) |
| 149 | +end |
| 150 | + |
| 151 | +# Execute the import |
| 152 | +contact_import = contact_imports.create(import_request) |
| 153 | +# => #<struct Mailtrap::ContactImport |
| 154 | +# id=1, |
| 155 | +# status="created", |
| 156 | +# created_contacts_count=nil, |
| 157 | +# updated_contacts_count=nil, |
| 158 | +# contacts_over_limit_count=nil> |
| 159 | + |
| 160 | +# Wait for the import to complete (if needed) |
| 161 | + |
| 162 | +# Get the import status |
| 163 | +contact_imports.get(contact_import.id) |
| 164 | +# => #<struct Mailtrap::ContactImport |
| 165 | +# id=1, |
| 166 | +# status="finished", |
| 167 | +# created_contacts_count=2, |
| 168 | +# updated_contacts_count=0, |
| 169 | +# contacts_over_limit_count=0> |
| 170 | + |
| 171 | +# Import using plain hash |
| 172 | +contact_imports.create( |
| 173 | + [ |
| 174 | + { email: '[email protected]', fields: { first_name: 'John' }, list_ids_included: [1], list_ids_excluded: [2] }, |
| 175 | + { email: '[email protected]', fields: { first_name: 'Jane' }, list_ids_included: [1], list_ids_excluded: [2] } |
| 176 | + ] |
| 177 | +) |
0 commit comments