Reviewer:
1. DM me to get a client ID/secret for the Hubspot app and login
credentials for a sample Hubspot account
2. For now, you'll need to run the engine on the branch
`nate/token-introspection` for the auth flow to work with Hubspot
3. Add the following to `auth.providers` in your engine yaml:
```yaml
- id: arcade-hubspot
description: 'Hubspot provider'
enabled: true
type: oauth2
provider_id: hubspot
client_id: ${env:HUBSPOT_CLIENT_ID}
client_secret: ${env:HUBSPOT_CLIENT_SECRET}
```
127 lines
3 KiB
Python
127 lines
3 KiB
Python
from arcade_hubspot.enums import HubspotObject
|
|
|
|
HUBSPOT_OBJECT_PROPERTIES = {
|
|
HubspotObject.COMPANY: [
|
|
"type",
|
|
"name",
|
|
"about_us",
|
|
"address",
|
|
"city",
|
|
"state",
|
|
"zip",
|
|
"country",
|
|
"annualrevenue",
|
|
"hs_annual_revenue_currency_code",
|
|
"industry",
|
|
"phone",
|
|
"website",
|
|
"domain",
|
|
"numberofemployees",
|
|
"hs_lead_status",
|
|
"lifecyclestage",
|
|
"linkedin_company_page",
|
|
"twitterhandle",
|
|
],
|
|
HubspotObject.CONTACT: [
|
|
"salutation",
|
|
"email",
|
|
"work_email",
|
|
"hs_additional_emails",
|
|
"mobilephone",
|
|
"phone",
|
|
"firstname",
|
|
"lastname",
|
|
"lifecyclestage",
|
|
"annualrevenue",
|
|
"address",
|
|
"date_of_birth",
|
|
"degree",
|
|
"gender",
|
|
"buying_role",
|
|
"hs_language",
|
|
"hs_lead_status",
|
|
"hs_timezone",
|
|
"hubspot_owner_id",
|
|
"hubspot_owner_name",
|
|
"job_function",
|
|
"jobtitle",
|
|
"seniority",
|
|
"industry",
|
|
"twitterhandle",
|
|
],
|
|
HubspotObject.CALL: [
|
|
"hs_body_preview",
|
|
"hs_call_direction",
|
|
"hs_call_status",
|
|
"hs_call_summary",
|
|
"hs_call_title",
|
|
"hs_createdate",
|
|
"hubspot_owner_id",
|
|
"hs_call_disposition",
|
|
"hs_timestamp",
|
|
],
|
|
HubspotObject.DEAL: [
|
|
"dealname",
|
|
"dealstage",
|
|
"dealtype",
|
|
"closedate",
|
|
"closed_lost_reason",
|
|
"closed_won_reason",
|
|
"hs_is_closed_won",
|
|
"hs_is_closed_lost",
|
|
"hs_closed_amount",
|
|
"pipeline",
|
|
"hubspot_owner_id",
|
|
"description",
|
|
"hs_deal_score",
|
|
"amount",
|
|
"hs_forecast_probability",
|
|
"hs_forecast_amount",
|
|
],
|
|
HubspotObject.EMAIL: [
|
|
"hs_object_id",
|
|
"hs_body_preview",
|
|
"hs_email_sender_raw",
|
|
"hs_email_from_raw",
|
|
"hs_email_to_raw",
|
|
"hs_email_bcc_raw",
|
|
"hs_email_cc_raw",
|
|
"hs_email_subject",
|
|
"hs_email_status",
|
|
"hs_timestamp",
|
|
"hubspot_owner_id",
|
|
"hs_email_associated_contact_id",
|
|
],
|
|
HubspotObject.MEETING: [
|
|
"hs_object_id",
|
|
"hs_meeting_title",
|
|
"hs_body_preview",
|
|
"hs_meeting_location",
|
|
"hs_meeting_outcome",
|
|
"hubspot_owner_id",
|
|
"hs_meeting_start_time",
|
|
"hs_meeting_end_time",
|
|
],
|
|
HubspotObject.NOTE: [
|
|
"hs_object_id",
|
|
"hs_body_preview",
|
|
"hs_timestamp",
|
|
"hubspot_owner_id",
|
|
],
|
|
HubspotObject.TASK: [
|
|
"hs_object_id",
|
|
"hs_body_preview",
|
|
"hs_timestamp",
|
|
"hubspot_owner_id",
|
|
"hs_associated_contact_labels",
|
|
"hs_task_is_overdue",
|
|
"hs_task_priority",
|
|
"hs_task_status",
|
|
"hs_task_subject",
|
|
"hs_task_type",
|
|
],
|
|
}
|
|
|
|
|
|
def get_object_properties(object_type: HubspotObject) -> list[str]:
|
|
return HUBSPOT_OBJECT_PROPERTIES[object_type]
|