Hubspot
Implementation Summary
Fidesops uses the following Hubspot endpoints to retrieve and delete Personally Identifiable Information (PII) when processing a Data Subject Request (DSR). Right to Access and Right to Delete (Right to Forget) support for each endpoint is noted below.
Connection Settings
Fidesops provides a Postman collection for easily establishing connections to your third party applications. Additional connection instructions may be found in the configuration guide.
Deletion requests are fulfilled by masking PII via UPDATE
endpoints. To give fidesops permission to remove PII using DELETE
endpoints, ensure the masking_strict
variable in your fidesops.toml
file is set to false
.
Example Hubspot Configuration
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156 | saas_config:
fides_key: hubspot_connector_example
name: Hubspot SaaS Config
type: hubspot
description: A sample schema representing the Hubspot connector for Fidesops
version: 0.0.1
connector_params:
- name: domain
default_value: api.hubapi.com
- name: private_app_token
client_config:
protocol: https
host: <domain>
authentication:
strategy: bearer
configuration:
token: <private_app_token>
test_request:
method: GET
path: /companies/v2/companies/paged
endpoints:
- name: contacts
requests:
read:
path: /crm/v3/objects/contacts/search
method: POST
body: |
{
"filterGroups": [{
"filters": [{
"value": "<email>",
"propertyName": "email",
"operator": "EQ"
}]
}]
}
query_params:
- name: limit
value: 100
param_values:
- name: email
identity: email
data_path: results
pagination:
strategy: link
configuration:
source: body
path: paging.next.link
update:
path: /crm/v3/objects/contacts/<contactId>
method: PATCH
body: |
{
<masked_object_fields>
}
param_values:
- name: contactId
references:
- dataset: hubspot_connector_example
field: contacts.id
direction: from
- name: owners
requests:
read:
path: /crm/v3/owners
method: GET
query_params:
- name: limit
value: 100
param_values:
- name: placeholder
identity: email
postprocessors:
- strategy: unwrap
configuration:
data_path: results
- strategy: filter
configuration:
field: email
value:
identity: email
pagination:
strategy: link
configuration:
source: body
path: paging.next.link
- name: subscription_preferences
requests:
read:
path: /communication-preferences/v3/status/email/<email>
method: GET
param_values:
- name: email
identity: email
update:
path: /communication-preferences/v3/unsubscribe
method: POST
body: |
{
"emailAddress": "<email>",
"subscriptionId": "<subscriptionId>",
"legalBasis": "LEGITIMATE_INTEREST_CLIENT",
"legalBasisExplanation": "At users request, we opted them out"
}
data_path: subscriptionStatuses
param_values:
- name: email
identity: email
- name: subscriptionId
references:
- dataset: hubspot_connector_example
field: subscription_preferences.id
direction: from
postprocessors:
- strategy: filter
configuration:
field: status
value: SUBSCRIBED
- name: users
requests:
read:
path: /settings/v3/users/
method: GET
query_params:
- name: limit
value: 100
param_values:
- name: placeholder
identity: email
postprocessors:
- strategy: unwrap
configuration:
data_path: results
- strategy: filter
configuration:
field: email
value:
identity: email
pagination:
strategy: link
configuration:
source: body
path: paging.next.link
delete:
path: /settings/v3/users/<userId>
method: DELETE
param_values:
- name: userId
references:
- dataset: hubspot_connector_example
field: users.id
direction: from
|