1
+ require "net/http"
2
+ require "uri"
3
+ require 'json'
4
+
5
+ class AgileCRM
6
+ class << self
7
+ def api_key = ( key )
8
+ @@api_key = key
9
+ end
10
+
11
+ def domain = ( d )
12
+ @@domain = d
13
+ end
14
+
15
+ def email = ( email )
16
+ @@email = email
17
+ end
18
+
19
+ def api_key
20
+ @@api_key
21
+ end
22
+
23
+ def domain
24
+ @@domain
25
+ end
26
+
27
+ def email
28
+ @@email
29
+ end
30
+
31
+ def request ( method , subject , data = { } )
32
+ path = "/dev/api/#{ subject } "
33
+ case method
34
+ when :get
35
+ request = Net ::HTTP ::Get . new ( path )
36
+ when :post
37
+ request = Net ::HTTP ::Post . new ( path )
38
+ request . body = data . to_json
39
+ when :put
40
+ request = Net ::HTTP ::Put . new ( path )
41
+ request . body = data . to_json
42
+ when :delete
43
+ request = Net ::HTTP ::Delete . new ( path )
44
+ else
45
+ raise "Unknown method: #{ method } "
46
+ end
47
+ uri = URI . parse ( "https://#{ domain } .agilecrm.com" )
48
+ http = Net ::HTTP . new ( uri . host , uri . port )
49
+ http . use_ssl = true
50
+ http . verify_mode = OpenSSL ::SSL ::VERIFY_NONE
51
+ request [ "Content-Type" ] = 'application/json'
52
+ request [ "Accept" ] = 'application/json'
53
+ request . basic_auth AgileCRM . email , AgileCRM . api_key
54
+ response = http . request ( request )
55
+ response . body
56
+ end
57
+ end
58
+ end
59
+
60
+ AgileCRM . api_key = '123456' # This is Rest API key
61
+ AgileCRM . domain = 'ghanshyam' # This is Domain
62
+ AgileCRM . email = 'ghanshyam.raut@agilecrm.com' # This is Email
63
+
64
+
65
+ # ======================Create Contact====================================
66
+
67
+ contact_data = '{
68
+ "star_value": "4",
69
+ "lead_score": "92",
70
+ "tags": [
71
+ "Lead",
72
+ "Likely Buyer"
73
+ ],
74
+ "properties": [
75
+ {
76
+ "type": "SYSTEM",
77
+ "name": "first_name",
78
+ "value": "Los "
79
+ }
80
+ ]
81
+ }'
82
+ parsed_contact_data = JSON . parse ( contact_data )
83
+ #print(AgileCRM.request :post, "contacts", parsed_contact_data)
84
+
85
+ # ======================Get Contact By ID====================================
86
+
87
+ #print(AgileCRM.request :get, "contacts/5762169748586496", nil) # Get Contact By Id
88
+
89
+ # ======================Get Contact By Email====================================
90
+
91
+ #print(AgileCRM.request :get, "contacts/search/email/tester@agilecrm.com", nil) # Get Contact By Email
92
+
93
+ # ======================Update Contact====================================
94
+
95
+ update_contact_data = '{
96
+ "id": "5748927693324288",
97
+ "properties": [
98
+ {
99
+ "type": "SYSTEM",
100
+ "name": "last_name",
101
+ "value": "Lee Chu"
102
+ },
103
+ {
104
+ "type": "CUSTOM",
105
+ "name": "My Custom Field",
106
+ "value": "Custom value chane"
107
+ }
108
+ ]
109
+ }'
110
+ parsed_update_contact_data = JSON . parse ( update_contact_data )
111
+ #print(AgileCRM.request :put, "contacts/edit-properties", parsed_update_contact_data)
112
+
113
+ # ======================Delete Contact====================================
114
+
115
+ #print(AgileCRM.request :delete, "contacts/5748927693324288", nil)
116
+
117
+ # ======================Create Deal====================================
118
+
119
+ deal_data = '{
120
+ "name": "Deal-Tomato",
121
+ "expected_value": "500",
122
+ "probability": "75",
123
+ "close_date": 1455042600,
124
+ "milestone": "Proposal",
125
+ "contact_ids": [
126
+ "5705059971104768"
127
+ ],
128
+ "custom_data": [
129
+ {
130
+ "name": "Group Size",
131
+ "value": "10"
132
+ }
133
+ ]
134
+ }'
135
+ parsed_deal_data = JSON . parse ( deal_data )
136
+ #print(AgileCRM.request :post, "opportunity", parsed_deal_data)
137
+
138
+ # ======================Update Deal====================================
139
+
140
+ update_deal_data = '{
141
+ "id": "5743182100824064",
142
+ "name": "Deal-Tomato-changed",
143
+ "expected_value": "500",
144
+ "probability": "75",
145
+ "close_date": 1455042600,
146
+ "milestone": "Proposal",
147
+ "contact_ids": [
148
+ "5705059971104768"
149
+ ],
150
+ "custom_data": [
151
+ {
152
+ "name": "Group Size",
153
+ "value": "10"
154
+ }
155
+ ]
156
+ }'
157
+ parsed_update_deal_data = JSON . parse ( update_deal_data )
158
+ #print(AgileCRM.request :put, "opportunity/partial-update", parsed_update_deal_data)
159
+
160
+ # ======================Get Deal By ID====================================
161
+
162
+ #print(AgileCRM.request :get, "opportunity/5743182100824064", nil) # Get Deal By Id
163
+
164
+ # ======================Delete Deal By ID====================================
165
+
166
+ print ( AgileCRM . request :delete , "opportunity/5743182100824064" , nil ) # Get Deal By Id
0 commit comments