suitecrm-ruby 1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3615eed6b9499fd6caa50092b93d053f83b9f43e2660198f7271cc15c674631f
4
+ data.tar.gz: 6157530b871ed03e5984c9f8113c0ca03e1d783c37ba0862418d59f9e477cb89
5
+ SHA512:
6
+ metadata.gz: 2bca716d17093b166411c94dec53410e051b922407da3b0bee71a264b7808bf69c132369b5d12482791c6a876ad84853a8c1e4233cd292728be10798a25ce035
7
+ data.tar.gz: 6c7a506155ce54629a871089457194e6436a7f81a8427429c71d7a2761625f48160e9ce902bb0690afe04e802236621c18818b3146eeca9d041f5763a7ed835c
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ .env
2
+ /.bundle/
3
+ /.yardoc
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in suitecrm-ruby.gemspec
4
+ gemspec
5
+
6
+ gem "rake", "~> 12.0"
data/Gemfile.lock ADDED
@@ -0,0 +1,94 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ suitecrm-ruby (1.0.0)
5
+ faraday (~> 1.5, >= 1.5.1)
6
+ json (~> 2.5, >= 2.5.1)
7
+ jwt (~> 2.2, >= 2.2.3)
8
+ mime-types (~> 3.3, >= 3.3.1)
9
+ openssl (~> 2.2)
10
+
11
+ GEM
12
+ remote: https://rubygems.org/
13
+ specs:
14
+ activesupport (6.1.4)
15
+ concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ i18n (>= 1.6, < 2)
17
+ minitest (>= 5.1)
18
+ tzinfo (~> 2.0)
19
+ zeitwerk (~> 2.3)
20
+ addressable (2.8.0)
21
+ public_suffix (>= 2.0.2, < 5.0)
22
+ concurrent-ruby (1.1.9)
23
+ crack (0.4.5)
24
+ rexml
25
+ diff-lcs (1.4.4)
26
+ factory_bot (4.11.1)
27
+ activesupport (>= 3.0.0)
28
+ faraday (1.5.1)
29
+ faraday-em_http (~> 1.0)
30
+ faraday-em_synchrony (~> 1.0)
31
+ faraday-excon (~> 1.1)
32
+ faraday-httpclient (~> 1.0.1)
33
+ faraday-net_http (~> 1.0)
34
+ faraday-net_http_persistent (~> 1.1)
35
+ faraday-patron (~> 1.0)
36
+ multipart-post (>= 1.2, < 3)
37
+ ruby2_keywords (>= 0.0.4)
38
+ faraday-em_http (1.0.0)
39
+ faraday-em_synchrony (1.0.0)
40
+ faraday-excon (1.1.0)
41
+ faraday-httpclient (1.0.1)
42
+ faraday-net_http (1.0.1)
43
+ faraday-net_http_persistent (1.2.0)
44
+ faraday-patron (1.0.0)
45
+ hashdiff (1.0.1)
46
+ i18n (1.8.10)
47
+ concurrent-ruby (~> 1.0)
48
+ json (2.5.1)
49
+ jwt (2.2.3)
50
+ mime-types (3.3.1)
51
+ mime-types-data (~> 3.2015)
52
+ mime-types-data (3.2021.0704)
53
+ minitest (5.14.4)
54
+ multipart-post (2.1.1)
55
+ openssl (2.2.0)
56
+ public_suffix (4.0.6)
57
+ rake (12.3.3)
58
+ rexml (3.2.5)
59
+ rspec (3.10.0)
60
+ rspec-core (~> 3.10.0)
61
+ rspec-expectations (~> 3.10.0)
62
+ rspec-mocks (~> 3.10.0)
63
+ rspec-core (3.10.1)
64
+ rspec-support (~> 3.10.0)
65
+ rspec-expectations (3.10.1)
66
+ diff-lcs (>= 1.2.0, < 2.0)
67
+ rspec-support (~> 3.10.0)
68
+ rspec-mocks (3.10.2)
69
+ diff-lcs (>= 1.2.0, < 2.0)
70
+ rspec-support (~> 3.10.0)
71
+ rspec-support (3.10.2)
72
+ ruby2_keywords (0.0.5)
73
+ tzinfo (2.0.4)
74
+ concurrent-ruby (~> 1.0)
75
+ vcr (6.0.0)
76
+ webmock (3.13.0)
77
+ addressable (>= 2.3.6)
78
+ crack (>= 0.3.2)
79
+ hashdiff (>= 0.4.0, < 2.0.0)
80
+ zeitwerk (2.4.2)
81
+
82
+ PLATFORMS
83
+ ruby
84
+
85
+ DEPENDENCIES
86
+ factory_bot (~> 4.8, >= 4.8.2)
87
+ rake (~> 12.0)
88
+ rspec (~> 3.10)
89
+ suitecrm-ruby!
90
+ vcr (~> 6.0)
91
+ webmock (~> 3.13)
92
+
93
+ BUNDLED WITH
94
+ 2.1.4
data/README.md ADDED
@@ -0,0 +1,144 @@
1
+ # SuiteCRM::Ruby
2
+
3
+ Ruby client for [SuiteCRM's](https://suitecrm.com/) V8 API
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'suitecrm-ruby'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install suitecrm-ruby
20
+
21
+ ## Usage
22
+
23
+ ### Configuration
24
+
25
+ Prior to using the API client, you will need to create a new API user as documented [here](https://docs.suitecrm.com/developer/api/developer-setup-guide/configure-authentication).
26
+
27
+ ```ruby
28
+ SuiteCRM.configure do |config|
29
+ config.api_url = "http://[ip]/suite/Api/V8"
30
+ config.token_url = "http://[ip]/suite/Api/access_token"
31
+ config.client_id = "[client id]"
32
+ config.client_secret = "[client secret]"
33
+ end
34
+ ```
35
+
36
+ ### Modules
37
+
38
+ #### Get all module records
39
+
40
+ ```ruby
41
+ SuiteCRM::Modules.get("Contacts")
42
+ ```
43
+
44
+ #### Get a single module record
45
+
46
+ ```ruby
47
+ SuiteCRM::Module.get("Contacts", "51f7baeb-fe82-d3c1-5ef9-60c0de2c67cf")
48
+ ```
49
+
50
+ #### Create a new module record
51
+
52
+ ```ruby
53
+ SuiteCRM::Module.create(
54
+ data: {
55
+ type: "FP_events",
56
+ attributes: {
57
+ name: "Meeting"
58
+ }
59
+ }
60
+ )
61
+ ```
62
+
63
+ #### Update a single module record
64
+
65
+ ```ruby
66
+ SuiteCRM::Module.update({
67
+ data: {
68
+ type: "Contacts",
69
+ id: "79a08232-6e62-dbaf-af6d-60f7146d1e87",
70
+ attributes: {
71
+ first_name: "Jordan",
72
+ last_name: "Peterson"
73
+ }
74
+ }
75
+ })
76
+ ```
77
+
78
+ #### Delete a single module record
79
+
80
+ ```ruby
81
+ SuiteCRM::Module.delete("Contacts", "79a08232-6e62-dbaf-af6d-60f7146d1e87")
82
+ ```
83
+
84
+ ### Relationships
85
+
86
+ #### Get all relationships of type for a module
87
+
88
+ ```ruby
89
+ SuiteCRM::Relationship.get(
90
+ "Contacts", "669d86ed-e5a3-7605-0d68-60c22f69743a", "fp_events_contacts"
91
+ )
92
+ ```
93
+
94
+ #### Create a new relationship of type for a module
95
+
96
+ ```ruby
97
+ SuiteCRM::Relationship.create(
98
+ "Contacts",
99
+ "669d86ed-e5a3-7605-0d68-60c22f69743a",
100
+ {
101
+ data: {
102
+ type: "FP_events",
103
+ id: "66ef1d43-06a9-5c09-0853-60f0707fad32"
104
+ }
105
+ }
106
+ )
107
+ ```
108
+
109
+ #### Delete a single module relationship
110
+
111
+ ```ruby
112
+ SuiteCRM::Relationship.delete(
113
+ "Contacts",
114
+ "669d86ed-e5a3-7605-0d68-60c22f69743a",
115
+ "fp_events_contacts",
116
+ "66ef1d43-06a9-5c09-0853-60f0707fad32"
117
+ )
118
+ ```
119
+
120
+ ### Meta
121
+
122
+ #### Obtain a list of available modules
123
+
124
+ ```ruby
125
+ SuiteCRM::Meta.get
126
+ ```
127
+
128
+ ## Testing
129
+
130
+ Export environment variables
131
+
132
+ $ export API_URL="http://1.1.1.1/suite/Api/V8"
133
+ $ export TOKEN_URL="http://1.1.1.1/suite/Api/access_token"
134
+ $ export CLIENT_ID="41fdff46..."
135
+ $ export CLIENT_SECRET="VjB_S2PICeQ..."
136
+
137
+ In developement, run the app using
138
+
139
+ $ rspec
140
+
141
+ ## Contributing
142
+
143
+ Bug reports and pull requests are welcome on GitHub at https://github.com/dinosimone/suitecrm-ruby.
144
+
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "suitecrm/ruby"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,51 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://18.236.231.13/suite/Api/V8/module/Contacts/669d86ed-e5a3-7605-0d68-60c22f69743a/relationships
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"data":{"type":"FP_events","id":"66ef1d43-06a9-5c09-0853-60f0707fad32"}}'
9
+ headers:
10
+ Authorization:
11
+ - Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjI3OGQ0NjYyNmNiZTQ3OTg3NjNjY2QxYzk5MTRiYzcxZDkzMDRhNWM4ZTZkMWVmNzZlNDgyMDE2NmRlMmJhODI1YjI5YjhhODM3ODhkNDI2In0.eyJhdWQiOiI0MWZkZmY0Ni0wNDk5LWFkZTgtZjRkNS02MGVlZmNkMmQ1ZDYiLCJqdGkiOiIyNzhkNDY2MjZjYmU0Nzk4NzYzY2NkMWM5OTE0YmM3MWQ5MzA0YTVjOGU2ZDFlZjc2ZTQ4MjAxNjZkZTJiYTgyNWIyOWI4YTgzNzg4ZDQyNiIsImlhdCI6MTYyNjgwNTQ2MiwibmJmIjoxNjI2ODA1NDYyLCJleHAiOjE2MjY4MDkwNjIsInN1YiI6IiIsInNjb3BlcyI6W119.rU7E_ZMDLwYvCdFGPMpoKoYJI9TiBz8Cwdj3e-Rb4aJl-5Ay3bzAGnn5_syWa0XARakPez3cR3lTS3kf3GnGMhdf_tuXG4i-NCQB-vzW8Ci-ITbSE4x99uR1_JY958mg-uYtxi6Vbrxa7X6c-Bs9UDL6XQKJrESNUC05yXtlYPVS0LS7hgwEUIzQ6FBsA3O1ZOEsKzigaoi5VxOs5ZdL8xn9fRtxs8iFnKlGFWDEA_isYS0LUFlNHANY-HnXBxzhKGlCWGTWW0Ja-jaw1LfC-FMEkg4PYUDf__Fbmf21cY429jrAyZVXEAosq6LSSB_WjwuU-RY5AVvi84dFuigBdw
12
+ User-Agent:
13
+ - Faraday v1.5.1
14
+ Content-Type:
15
+ - application/json
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ Accept:
19
+ - "*/*"
20
+ response:
21
+ status:
22
+ code: 201
23
+ message: Created
24
+ headers:
25
+ Date:
26
+ - Tue, 20 Jul 2021 18:56:16 GMT
27
+ Server:
28
+ - Apache/2.4.41 (Ubuntu)
29
+ Access-Control-Allow-Origin:
30
+ - "*"
31
+ Access-Control-Allow-Methods:
32
+ - POST, GET, OPTIONS, PUT, DELETE
33
+ Access-Control-Allow-Headers:
34
+ - Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With
35
+ Accept:
36
+ - application/vnd.api+json
37
+ Content-Length:
38
+ - '186'
39
+ Content-Type:
40
+ - application/vnd.api+json
41
+ body:
42
+ encoding: UTF-8
43
+ string: |-
44
+ {
45
+ "meta": {
46
+ "message": "FP_events with id 66ef1d43-06a9-5c09-0853-60f0707fad32 has been added to Contact with id 669d86ed-e5a3-7605-0d68-60c22f69743a"
47
+ },
48
+ "data": []
49
+ }
50
+ recorded_at: Tue, 20 Jul 2021 18:56:16 GMT
51
+ recorded_with: VCR 6.0.0
@@ -0,0 +1,263 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://18.236.231.13/suite/Api/access_token
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"grant_type":"client_credentials","client_id":"41fdff46-0499-ade8-f4d5-60eefcd2d5d6","client_secret":"VjB_S2PICeQTCKYJYGS8Eys_3NAdYydItUGs4S36SzxKslPXFKFApMPPlc_k6ajD"}'
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v1.5.1
12
+ Content-Type:
13
+ - application/json
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Tue, 20 Jul 2021 18:24:10 GMT
25
+ Server:
26
+ - Apache/2.4.41 (Ubuntu)
27
+ Access-Control-Allow-Origin:
28
+ - "*"
29
+ Access-Control-Allow-Methods:
30
+ - POST, GET, OPTIONS, PUT, DELETE
31
+ Access-Control-Allow-Headers:
32
+ - Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With
33
+ Pragma:
34
+ - no-cache
35
+ Cache-Control:
36
+ - no-store
37
+ Content-Length:
38
+ - '834'
39
+ Content-Type:
40
+ - application/json; charset=UTF-8
41
+ body:
42
+ encoding: UTF-8
43
+ string: '{"token_type":"Bearer","expires_in":3600,"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjNkNGJhYjJjYzY2NGEwNjgxZDFjM2M1Nzk3OWI5MmQzZjVkNzc1ZjQyMDFlMDNiZWVlOGUyOGViYjY2NjA3YWM0YzRjMmMzNTM1N2FiNTFjIn0.eyJhdWQiOiI0MWZkZmY0Ni0wNDk5LWFkZTgtZjRkNS02MGVlZmNkMmQ1ZDYiLCJqdGkiOiIzZDRiYWIyY2M2NjRhMDY4MWQxYzNjNTc5NzliOTJkM2Y1ZDc3NWY0MjAxZTAzYmVlZThlMjhlYmI2NjYwN2FjNGM0YzJjMzUzNTdhYjUxYyIsImlhdCI6MTYyNjgwNTQ1MCwibmJmIjoxNjI2ODA1NDUwLCJleHAiOjE2MjY4MDkwNTAsInN1YiI6IiIsInNjb3BlcyI6W119.q95RAynBiSurQeV8rSHCcZzf6mKNJPoHCX4b_XBOky0-vI4qcYN2WzaXqXhwIEezRT0MI0mElcSUfFxhOkmL5a4dSaC3kk8U8VSoIBa9BZuiSG7xCK5zGfcRL6uzWpvyCM6YC2gKOsJ7W9Yr56YBUKcrVBtu6guR0WiEtYPuNaotubDNUabDu1xmtxVtJxDaWjfosb5qzWSFFGTDYqCKUmkI2Jest7tVmLavc6ukffpTeQN-PeBx5XgAX3igPD8s3C4yZZh0irLyvmfKeEULe3NncCVeKjG3O2cmcxgZQjGBQUUj1Y25Y0C0oYjyNR012A0Nj9BmUImvJqbU3W4PAg"}'
44
+ recorded_at: Tue, 20 Jul 2021 18:24:10 GMT
45
+ - request:
46
+ method: post
47
+ uri: http://18.236.231.13/suite/Api/V8/module
48
+ body:
49
+ encoding: UTF-8
50
+ string: '{"data":{"type":"Contacts","attributes":{"last_name":"API Tester"}}}'
51
+ headers:
52
+ Authorization:
53
+ - Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjM2NjVmOWYzN2UxMjRjNDg3ODZlNjVhMWZkZjBiYmQ5Y2UxZDhmMjFjZjUxZDRlYTA3NWM3Y2U0YzJmMzEwNmRiYWExMjZlOTlkOWQyOWYzIn0.eyJhdWQiOiI0MWZkZmY0Ni0wNDk5LWFkZTgtZjRkNS02MGVlZmNkMmQ1ZDYiLCJqdGkiOiIzNjY1ZjlmMzdlMTI0YzQ4Nzg2ZTY1YTFmZGYwYmJkOWNlMWQ4ZjIxY2Y1MWQ0ZWEwNzVjN2NlNGMyZjMxMDZkYmFhMTI2ZTk5ZDlkMjlmMyIsImlhdCI6MTYyNjg4MzI5MywibmJmIjoxNjI2ODgzMjkzLCJleHAiOjE2MjY4ODY4OTMsInN1YiI6IiIsInNjb3BlcyI6W119.JYOlhp9Jn2DHJJpIXAC-2w4bX3MMaglDpsNhMGIeQihOgGmj5YNAuzZ8dkfbPu6NMsx_bHZOz6qXst8Je4PF4k4smnBDvFvNHx18gvs6po_8_q_TW8Io3sJfeQaZAjiTWLODPe-tsHrJPKFkX0b0birzFWrHo4nvny7V4KW6FI059eQTpoo76KtL579AN2mm14YelQGcLzwRp5IUoFccWIgS6prPGJYcgJR_Aihyo50NmvELcAoU3ZlzsMdLnFBcA18rD2uikDkfGOqShQBYIUNiQlHxcZmSOfptekDuElBCRtnJXkyToi95hL-Pgg5VCdFx2fEuIcjeoZTwmOZYWQ
54
+ User-Agent:
55
+ - Faraday v1.5.1
56
+ Content-Type:
57
+ - application/json
58
+ Accept-Encoding:
59
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
60
+ Accept:
61
+ - "*/*"
62
+ response:
63
+ status:
64
+ code: 201
65
+ message: Created
66
+ headers:
67
+ Date:
68
+ - Wed, 21 Jul 2021 16:01:34 GMT
69
+ Server:
70
+ - Apache/2.4.41 (Ubuntu)
71
+ Access-Control-Allow-Origin:
72
+ - "*"
73
+ Access-Control-Allow-Methods:
74
+ - POST, GET, OPTIONS, PUT, DELETE
75
+ Access-Control-Allow-Headers:
76
+ - Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With
77
+ Accept:
78
+ - application/vnd.api+json
79
+ Content-Length:
80
+ - '6283'
81
+ Content-Type:
82
+ - application/vnd.api+json
83
+ body:
84
+ encoding: UTF-8
85
+ string: |-
86
+ {
87
+ "data": {
88
+ "type": "Contact",
89
+ "id": "5b8f0a77-6ef8-5756-e30c-60f844cd092e",
90
+ "attributes": {
91
+ "name": "API Tester",
92
+ "date_entered": "2021-07-21T16:01:00+00:00",
93
+ "date_modified": "2021-07-21T16:01:00+00:00",
94
+ "modified_user_id": "1",
95
+ "modified_by_name": "Dino Simone",
96
+ "created_by": "1",
97
+ "created_by_name": "Dino Simone",
98
+ "description": "",
99
+ "deleted": "0",
100
+ "created_by_link": "",
101
+ "modified_user_link": "",
102
+ "assigned_user_id": "",
103
+ "assigned_user_name": "",
104
+ "assigned_user_link": "",
105
+ "SecurityGroups": "",
106
+ "salutation": "",
107
+ "first_name": "",
108
+ "last_name": "API Tester",
109
+ "full_name": "API Tester",
110
+ "title": "",
111
+ "photo": "",
112
+ "department": "",
113
+ "do_not_call": "0",
114
+ "phone_home": "",
115
+ "email": "",
116
+ "phone_mobile": "",
117
+ "phone_work": "",
118
+ "phone_other": "",
119
+ "phone_fax": "",
120
+ "email1": "",
121
+ "email2": "",
122
+ "invalid_email": "",
123
+ "email_opt_out": "",
124
+ "lawful_basis": "",
125
+ "date_reviewed": "",
126
+ "lawful_basis_source": "",
127
+ "primary_address_street": "",
128
+ "primary_address_street_2": "",
129
+ "primary_address_street_3": "",
130
+ "primary_address_city": "",
131
+ "primary_address_state": "",
132
+ "primary_address_postalcode": "",
133
+ "primary_address_country": "",
134
+ "alt_address_street": "",
135
+ "alt_address_street_2": "",
136
+ "alt_address_street_3": "",
137
+ "alt_address_city": "",
138
+ "alt_address_state": "",
139
+ "alt_address_postalcode": "",
140
+ "alt_address_country": "",
141
+ "assistant": "",
142
+ "assistant_phone": "",
143
+ "email_addresses_primary": "",
144
+ "email_addresses": "",
145
+ "email_addresses_non_primary": "",
146
+ "email_and_name1": "",
147
+ "lead_source": "",
148
+ "account_name": "",
149
+ "account_id": "",
150
+ "opportunity_role_fields": "",
151
+ "opportunity_role_id": "",
152
+ "opportunity_role": "",
153
+ "reports_to_id": "",
154
+ "report_to_name": "",
155
+ "birthdate": "",
156
+ "accounts": "",
157
+ "reports_to_link": {},
158
+ "opportunities": "",
159
+ "bugs": "",
160
+ "calls": "",
161
+ "cases": "",
162
+ "direct_reports": "",
163
+ "emails": "",
164
+ "documents": "",
165
+ "leads": "",
166
+ "meetings": "",
167
+ "notes": "",
168
+ "project": "",
169
+ "project_resource": "",
170
+ "am_projecttemplates_resources": "",
171
+ "am_projecttemplates_contacts_1": "",
172
+ "tasks": "",
173
+ "tasks_parent": "",
174
+ "notes_parent": "",
175
+ "user_sync": {},
176
+ "campaign_id": "",
177
+ "campaign_name": "",
178
+ "campaigns": "",
179
+ "campaign_contacts": {},
180
+ "c_accept_status_fields": "",
181
+ "m_accept_status_fields": "",
182
+ "accept_status_id": "",
183
+ "accept_status_name": "",
184
+ "prospect_lists": "",
185
+ "sync_contact": "",
186
+ "fp_events_contacts": "",
187
+ "aos_quotes": "",
188
+ "aos_invoices": "",
189
+ "aos_contracts": "",
190
+ "e_invite_status_fields": "",
191
+ "event_status_name": "",
192
+ "event_invite_id": "",
193
+ "e_accept_status_fields": "",
194
+ "event_accept_status": "",
195
+ "event_status_id": "",
196
+ "project_contacts_1": "",
197
+ "aop_case_updates": "",
198
+ "joomla_account_id": "",
199
+ "portal_account_disabled": false,
200
+ "joomla_account_access": "",
201
+ "portal_user_type": "Single"
202
+ },
203
+ "relationships": {
204
+ "AM_ProjectTemplates": {
205
+ "links": {
206
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/am_projecttemplates_contacts_1"
207
+ }
208
+ },
209
+ "AOS_Contracts": {
210
+ "links": {
211
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/aos_contracts"
212
+ }
213
+ },
214
+ "AOS_Invoices": {
215
+ "links": {
216
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/aos_invoices"
217
+ }
218
+ },
219
+ "AOS_Quotes": {
220
+ "links": {
221
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/aos_quotes"
222
+ }
223
+ },
224
+ "CampaignLog": {
225
+ "links": {
226
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/campaigns"
227
+ }
228
+ },
229
+ "EmailAddress": {
230
+ "links": {
231
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/email_addresses"
232
+ }
233
+ },
234
+ "Opportunities": {
235
+ "links": {
236
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/opportunities"
237
+ }
238
+ },
239
+ "Project": {
240
+ "links": {
241
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/project_contacts_1"
242
+ }
243
+ },
244
+ "ProspectLists": {
245
+ "links": {
246
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/prospect_lists"
247
+ }
248
+ },
249
+ "SecurityGroups": {
250
+ "links": {
251
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/SecurityGroups"
252
+ }
253
+ },
254
+ "Users": {
255
+ "links": {
256
+ "related": "V8/module/5b8f0a77-6ef8-5756-e30c-60f844cd092e/relationships/created_by_link"
257
+ }
258
+ }
259
+ }
260
+ }
261
+ }
262
+ recorded_at: Wed, 21 Jul 2021 16:01:34 GMT
263
+ recorded_with: VCR 6.0.0