1
0
mirror of synced 2025-12-25 02:09:19 -05:00

Source Hubspot: unnest data (#30322)

This commit is contained in:
Denys Davydov
2023-09-27 09:10:22 +03:00
committed by GitHub
parent ce55da989e
commit 8186e80f94
22 changed files with 2191 additions and 89 deletions

View File

@@ -34,5 +34,5 @@ COPY source_hubspot ./source_hubspot
ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]
LABEL io.airbyte.version=1.4.1
LABEL io.airbyte.version=1.5.0
LABEL io.airbyte.name=airbyte/source-hubspot

View File

@@ -19,6 +19,8 @@ acceptance_tests:
discovery:
tests:
- config_path: secrets/config_oauth.json
backward_compatibility_tests_config:
disable_for_version: 1.4.1
basic_read:
tests:
- config_path: secrets/config_oauth.json
@@ -48,63 +50,115 @@ acceptance_tests:
- name: ilsFilterBranch
bypass_reason: Floating fields order
companies:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties_hs_was_imported
bypass_reason: attribute is not stable
- name: properties/hs_was_imported
bypass_reason: attribute is not stable
contacts:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties_hs_time_in_subscriber
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_in_subscriber
bypass_reason: Hubspot time depend on current time
- name: properties_hs_latest_source_timestamp
bypass_reason: Hubspot time depend on current time
- name: properties/hs_latest_source_timestamp
bypass_reason: Hubspot time depend on current time
- name: properties_hs_predictivescoringtier
bypass_reason: Hubspot prediction changes
- name: properties/hs_predictivescoringtier
bypass_reason: Hubspot prediction changes
- name: properties_lastmodifieddate
bypass_reason: Hubspot time depend on current time
- name: properties/lastmodifieddate
bypass_reason: Hubspot time depend on current time
- name: properties_hs_time_in_lead
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_in_lead
bypass_reason: Hubspot time depend on current time
- name: properties_hs_time_in_opportunity
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_in_opportunity
bypass_reason: Hubspot time depend on current time
- name: properties_hs_was_imported
bypass_reason: attribute is not stable
- name: properties/hs_was_imported
bypass_reason: attribute is not stable
- name: updatedAt
bypass_reason: Hubspot time depend on current time
deals:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties_hs_acv
bypass_reason: value can be an integer or float
- name: properties/hs_acv
bypass_reason: value can be an integer or float
- name: properties_hs_arr
bypass_reason: value can be an integer or float
- name: properties/hs_arr
bypass_reason: value can be an integer or float
- name: properties_hs_mrr
bypass_reason: value can be an integer or float
- name: properties/hs_mrr
bypass_reason: value can be an integer or float
- name: properties_hs_tcv
bypass_reason: value can be an integer or float
- name: properties/hs_tcv
bypass_reason: value can be an integer or float
- name: properties_hs_num_of_associated_line_items
bypass_reason: value can be an integer or float
- name: properties/hs_num_of_associated_line_items
bypass_reason: value can be an integer or float
deals_archived:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties_hs_acv
bypass_reason: value can be an integer or float
- name: properties/hs_acv
bypass_reason: value can be an integer or float
- name: properties_hs_arr
bypass_reason: value can be an integer or float
- name: properties/hs_arr
bypass_reason: value can be an integer or float
- name: properties_hs_mrr
bypass_reason: value can be an integer or float
- name: properties/hs_mrr
bypass_reason: value can be an integer or float
- name: properties_hs_tcv
bypass_reason: value can be an integer or float
- name: properties/hs_tcv
bypass_reason: value can be an integer or float
- name: properties_hs_num_of_associated_line_items
bypass_reason: value can be an integer or float
- name: properties/hs_num_of_associated_line_items
bypass_reason: value can be an integer or float
tickets:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
goals:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties_hs_lastmodifieddate
bypass_reason: Hubspot time depend on current time
- name: properties/hs_lastmodifieddate
bypass_reason: Hubspot time depend on current time
- name: properties_hs_kpi_value_last_calculated_at
bypass_reason: Hubspot time depend on current time
- name: properties/hs_kpi_value_last_calculated_at
bypass_reason: Hubspot time depend on current time
- name: updatedAt
@@ -120,15 +174,23 @@ acceptance_tests:
- name: ilsFilterBranch
bypass_reason: Floating fields order
companies:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
contacts:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
deals:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
tickets:
- name: properties_hs_time_*
bypass_reason: Hubspot time depend on current time
- name: properties/hs_time_*
bypass_reason: Hubspot time depend on current time
incremental:

File diff suppressed because one or more lines are too long

View File

@@ -5,7 +5,7 @@ data:
connectorSubtype: api
connectorType: source
definitionId: 36c891d9-4bd9-43ac-bad2-10e12756272c
dockerImageTag: 1.4.1
dockerImageTag: 1.5.0
dockerRepository: airbyte/source-hubspot
githubIssueLabel: source-hubspot
icon: hubspot.svg
@@ -14,7 +14,6 @@ data:
registries:
cloud:
enabled: true
dockerImageTag: 1.4.1
oss:
enabled: true
releaseStage: generally_available

View File

@@ -64,6 +64,54 @@
}
}
},
"counters_open": {
"type": ["null", "integer"]
},
"counters_processed": {
"type": ["null", "integer"]
},
"counters_sent": {
"type": ["null", "integer"]
},
"counters_deferred": {
"type": ["null", "integer"]
},
"counters_unsubscribed": {
"type": ["null", "integer"]
},
"counters_statuschange": {
"type": ["null", "integer"]
},
"counters_bounce": {
"type": ["null", "integer"]
},
"counters_mta_dropped": {
"type": ["null", "integer"]
},
"counters_dropped": {
"type": ["null", "integer"]
},
"counters_suppressed": {
"type": ["null", "integer"]
},
"counters_click": {
"type": ["null", "integer"]
},
"counters_delivered": {
"type": ["null", "integer"]
},
"counters_forward": {
"type": ["null", "integer"]
},
"counters_print": {
"type": ["null", "integer"]
},
"counters_reply": {
"type": ["null", "integer"]
},
"counters_spamreport": {
"type": ["null", "integer"]
},
"id": {
"type": ["null", "integer"]
},

View File

@@ -25,6 +25,27 @@
}
}
},
"metaData_processing": {
"type": ["null", "string"]
},
"metaData_size": {
"type": ["null", "integer"]
},
"metaData_error": {
"type": ["null", "string"]
},
"metaData_lastProcessingStateChangeAt": {
"type": ["null", "integer"]
},
"metaData_lastSizeChangeAt": {
"type": ["null", "integer"]
},
"metaData_listReferencesCount": {
"type": ["null", "integer"]
},
"metaData_parentFolderId": {
"type": ["null", "integer"]
},
"dynamic": {
"type": ["null", "boolean"]
},

View File

@@ -54,6 +54,33 @@
}
}
},
"merged_from_email_source-vids": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"merged_from_email_updated-by-user-id": {
"type": ["null", "integer"]
},
"merged_from_email_source-label": {
"type": ["null", "string"]
},
"merged_from_email_source-type": {
"type": ["null", "string"]
},
"merged_from_email_value": {
"type": ["null", "string"]
},
"merged_from_email_source-id": {
"type": ["null", "string"]
},
"merged_from_email_selected": {
"type": ["null", "boolean"]
},
"merged_from_email_timestamp": {
"type": ["null", "integer"]
},
"merged_to_email": {
"type": ["null", "object"],
"additionalProperties": true,
@@ -81,6 +108,27 @@
}
}
},
"merged_to_email_updated-by-user-id": {
"type": ["null", "integer"]
},
"merged_to_email_source-label": {
"type": ["null", "string"]
},
"merged_to_email_source-type": {
"type": ["null", "string"]
},
"merged_to_email_value": {
"type": ["null", "string"]
},
"merged_to_email_source-id": {
"type": ["null", "string"]
},
"merged_to_email_selected": {
"type": ["null", "boolean"]
},
"merged_to_email_timestamp": {
"type": ["null", "integer"]
},
"first-name": {
"type": ["null", "string"]
},

View File

@@ -313,6 +313,309 @@
}
}
},
"properties_amount": {
"type": ["null", "string"]
},
"properties_amount_in_home_currency": {
"type": ["null", "string"]
},
"properties_closed_lost_reason": {
"type": ["null", "string"]
},
"properties_closed_won_reason": {
"type": ["null", "string"]
},
"properties_closedate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_days_to_close": {
"type": ["null", "string"]
},
"properties_dealname": {
"type": ["null", "string"]
},
"properties_dealstage": {
"type": ["null", "string"]
},
"properties_dealtype": {
"type": ["null", "string"]
},
"properties_description": {
"type": ["null", "string"]
},
"properties_engagements_last_meeting_booked": {
"type": ["null", "string"]
},
"properties_engagements_last_meeting_booked_campaign": {
"type": ["null", "string"]
},
"properties_engagements_last_meeting_booked_medium": {
"type": ["null", "string"]
},
"properties_engagements_last_meeting_booked_source": {
"type": ["null", "string"]
},
"properties_hs_acv": {
"type": ["null", "string"]
},
"properties_hs_all_accessible_team_ids": {
"type": ["null", "string"]
},
"properties_hs_all_assigned_business_unit_ids": {
"type": ["null", "string"]
},
"properties_hs_all_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_all_team_ids": {
"type": ["null", "string"]
},
"properties_hs_analytics_source": {
"type": ["null", "string"]
},
"properties_hs_analytics_source_data_1": {
"type": ["null", "string"]
},
"properties_hs_analytics_source_data_2": {
"type": ["null", "string"]
},
"properties_hs_arr": {
"type": ["null", "string"]
},
"properties_hs_closed_amount": {
"type": ["null", "string"]
},
"properties_hs_closed_amount_in_home_currency": {
"type": ["null", "string"]
},
"properties_hs_created_by_user_id": {
"type": ["null", "string"]
},
"properties_hs_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_9567448": {
"type": ["null", "string"]
},
"properties_hs_date_entered_9567449": {
"type": ["null", "string"]
},
"properties_hs_date_entered_appointmentscheduled": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_closedlost": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_closedwon": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_contractsent": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_customclosedwonstage": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_decisionmakerboughtin": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_presentationscheduled": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_qualifiedtobuy": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_9567448": {
"type": ["null", "string"]
},
"properties_hs_date_exited_9567449": {
"type": ["null", "string"]
},
"properties_hs_date_exited_appointmentscheduled": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_closedlost": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_closedwon": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_contractsent": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_customclosedwonstage": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_decisionmakerboughtin": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_presentationscheduled": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_qualifiedtobuy": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_deal_amount_calculation_preference": {
"type": ["null", "string"]
},
"properties_hs_deal_stage_probability": {
"type": ["null", "string"]
},
"properties_hs_deal_stage_probability_shadow": {
"type": ["null", "string"]
},
"properties_hs_forecast_amount": {
"type": ["null", "string"]
},
"properties_hs_forecast_probability": {
"type": ["null", "string"]
},
"properties_hs_is_closed": {
"type": ["null", "boolean"]
},
"properties_hs_is_closed_won": {
"type": ["null", "boolean"]
},
"properties_hs_lastmodifieddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_latest_meeting_activity": {
"type": ["null", "string"]
},
"properties_hs_likelihood_to_close": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_discount_percentage": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_discount_percentage_enabled": {
"type": ["null", "boolean"]
},
"properties_hs_line_item_global_term_hs_recurring_billing_period": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_recurring_billing_period_enabled": {
"type": ["null", "boolean"]
},
"properties_hs_line_item_global_term_hs_recurring_billing_start_date": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_recurring_billing_start_date_enabled": {
"type": ["null", "boolean"]
},
"properties_hs_line_item_global_term_recurringbillingfrequency": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_recurringbillingfrequency_enabled": {
"type": ["null", "boolean"]
},
"properties_hs_manual_forecast_category": {
"type": ["null", "string"]
},
"properties_hs_merged_object_ids": {
"type": ["null", "string"]
},
"properties_hs_mrr": {
"type": ["null", "string"]
},
"properties_hs_next_step": {
"type": ["null", "string"]
},
"properties_hs_num_target_accounts": {
"type": ["null", "string"]
},
"properties_hs_object_id": {
"type": ["null", "string"]
},
"properties_hs_predicted_amount": {
"type": ["null", "string"]
},
"properties_hs_predicted_amount_in_home_currency": {
"type": ["null", "string"]
},
"properties_hs_priority": {
"type": ["null", "string"]
},
"properties_hs_projected_amount": {
"type": ["null", "string"]
},
"properties_hs_projected_amount_in_home_currency": {
"type": ["null", "string"]
},
"properties_hs_sales_email_last_replied": {
"type": ["null", "string"]
},
"properties_hs_tcv": {
"type": ["null", "string"]
},
"properties_hs_unique_creation_key": {
"type": ["null", "string"]
},
"properties_hs_updated_by_user_id": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_followers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_unfollowers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_owners": {
"type": ["null", "string"]
},
"properties_hubspot_owner_assigneddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hubspot_owner_id": {
"type": ["null", "string"]
},
"properties_hubspot_team_id": {
"type": ["null", "string"]
},
"properties_notes_last_contacted": {
"type": ["null", "string"]
},
"properties_notes_last_updated": {
"type": ["null", "string"]
},
"properties_notes_next_activity_date": {
"type": ["null", "string"]
},
"properties_num_associated_contacts": {
"type": ["null", "string"]
},
"properties_num_contacted_notes": {
"type": ["null", "string"]
},
"properties_num_notes": {
"type": ["null", "string"]
},
"properties_pipeline": {
"type": ["null", "string"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"

View File

@@ -313,6 +313,309 @@
}
}
},
"properties_amount": {
"type": ["null", "string"]
},
"properties_amount_in_home_currency": {
"type": ["null", "string"]
},
"properties_closed_lost_reason": {
"type": ["null", "string"]
},
"properties_closed_won_reason": {
"type": ["null", "string"]
},
"properties_closedate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_days_to_close": {
"type": ["null", "string"]
},
"properties_dealname": {
"type": ["null", "string"]
},
"properties_dealstage": {
"type": ["null", "string"]
},
"properties_dealtype": {
"type": ["null", "string"]
},
"properties_description": {
"type": ["null", "string"]
},
"properties_engagements_last_meeting_booked": {
"type": ["null", "string"]
},
"properties_engagements_last_meeting_booked_campaign": {
"type": ["null", "string"]
},
"properties_engagements_last_meeting_booked_medium": {
"type": ["null", "string"]
},
"properties_engagements_last_meeting_booked_source": {
"type": ["null", "string"]
},
"properties_hs_acv": {
"type": ["null", "string"]
},
"properties_hs_all_accessible_team_ids": {
"type": ["null", "string"]
},
"properties_hs_all_assigned_business_unit_ids": {
"type": ["null", "string"]
},
"properties_hs_all_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_all_team_ids": {
"type": ["null", "string"]
},
"properties_hs_analytics_source": {
"type": ["null", "string"]
},
"properties_hs_analytics_source_data_1": {
"type": ["null", "string"]
},
"properties_hs_analytics_source_data_2": {
"type": ["null", "string"]
},
"properties_hs_arr": {
"type": ["null", "string"]
},
"properties_hs_closed_amount": {
"type": ["null", "string"]
},
"properties_hs_closed_amount_in_home_currency": {
"type": ["null", "string"]
},
"properties_hs_created_by_user_id": {
"type": ["null", "string"]
},
"properties_hs_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_9567448": {
"type": ["null", "string"]
},
"properties_hs_date_entered_9567449": {
"type": ["null", "string"]
},
"properties_hs_date_entered_appointmentscheduled": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_closedlost": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_closedwon": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_contractsent": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_customclosedwonstage": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_decisionmakerboughtin": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_presentationscheduled": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_entered_qualifiedtobuy": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_9567448": {
"type": ["null", "string"]
},
"properties_hs_date_exited_9567449": {
"type": ["null", "string"]
},
"properties_hs_date_exited_appointmentscheduled": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_closedlost": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_closedwon": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_contractsent": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_customclosedwonstage": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_decisionmakerboughtin": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_presentationscheduled": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_date_exited_qualifiedtobuy": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_deal_amount_calculation_preference": {
"type": ["null", "string"]
},
"properties_hs_deal_stage_probability": {
"type": ["null", "string"]
},
"properties_hs_deal_stage_probability_shadow": {
"type": ["null", "string"]
},
"properties_hs_forecast_amount": {
"type": ["null", "string"]
},
"properties_hs_forecast_probability": {
"type": ["null", "string"]
},
"properties_hs_is_closed": {
"type": ["null", "string"]
},
"properties_hs_is_closed_won": {
"type": ["null", "string"]
},
"properties_hs_lastmodifieddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_latest_meeting_activity": {
"type": ["null", "string"]
},
"properties_hs_likelihood_to_close": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_discount_percentage": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_discount_percentage_enabled": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_recurring_billing_period": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_recurring_billing_period_enabled": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_recurring_billing_start_date": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_hs_recurring_billing_start_date_enabled": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_recurringbillingfrequency": {
"type": ["null", "string"]
},
"properties_hs_line_item_global_term_recurringbillingfrequency_enabled": {
"type": ["null", "string"]
},
"properties_hs_manual_forecast_category": {
"type": ["null", "string"]
},
"properties_hs_merged_object_ids": {
"type": ["null", "string"]
},
"properties_hs_mrr": {
"type": ["null", "string"]
},
"properties_hs_next_step": {
"type": ["null", "string"]
},
"properties_hs_num_target_accounts": {
"type": ["null", "string"]
},
"properties_hs_object_id": {
"type": ["null", "string"]
},
"properties_hs_predicted_amount": {
"type": ["null", "string"]
},
"properties_hs_predicted_amount_in_home_currency": {
"type": ["null", "string"]
},
"properties_hs_priority": {
"type": ["null", "string"]
},
"properties_hs_projected_amount": {
"type": ["null", "string"]
},
"properties_hs_projected_amount_in_home_currency": {
"type": ["null", "string"]
},
"properties_hs_sales_email_last_replied": {
"type": ["null", "string"]
},
"properties_hs_tcv": {
"type": ["null", "string"]
},
"properties_hs_unique_creation_key": {
"type": ["null", "string"]
},
"properties_hs_updated_by_user_id": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_followers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_unfollowers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_owners": {
"type": ["null", "string"]
},
"properties_hubspot_owner_assigneddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hubspot_owner_id": {
"type": ["null", "string"]
},
"properties_hubspot_team_id": {
"type": ["null", "string"]
},
"properties_notes_last_contacted": {
"type": ["null", "string"]
},
"properties_notes_last_updated": {
"type": ["null", "string"]
},
"properties_notes_next_activity_date": {
"type": ["null", "string"]
},
"properties_num_associated_contacts": {
"type": ["null", "string"]
},
"properties_num_contacted_notes": {
"type": ["null", "string"]
},
"properties_num_notes": {
"type": ["null", "string"]
},
"properties_pipeline": {
"type": ["null", "string"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"

View File

@@ -112,6 +112,60 @@
}
}
},
"associations_contactIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"associations_contentIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"associations_companyIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"associations_dealIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"associations_marketingEventIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"associations_ownerIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"associations_quoteIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"associations_workflowIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"associations_ticketIds": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"attachments": {
"type": ["null", "array"],
"items": {
@@ -329,6 +383,208 @@
"type": ["null", "boolean"]
}
}
},
"metadata_body": {
"type": ["null", "string"]
},
"metadata_from": {
"type": ["null", "object"],
"properties": {
"email": {
"type": ["null", "string"]
},
"firstName": {
"type": ["null", "string"]
},
"lastName": {
"type": ["null", "string"]
},
"raw": {
"type": ["null", "string"]
}
}
},
"metadata_sender": {
"type": ["null", "object"],
"properties": {
"email": {
"type": ["null", "string"]
}
}
},
"metadata_to": {
"type": ["null", "array"],
"items": {
"type": ["null", "object"],
"properties": {
"email": {
"type": ["null", "string"]
},
"firstName": {
"type": ["null", "string"]
},
"lastName": {
"type": ["null", "string"]
},
"raw": {
"type": ["null", "string"]
}
}
}
},
"metadata_cc": {
"type": ["null", "array"],
"items": {
"type": ["null", "object"],
"properties": {
"email": {
"type": ["null", "string"]
},
"firstName": {
"type": ["null", "string"]
},
"lastName": {
"type": ["null", "string"]
},
"raw": {
"type": ["null", "string"]
}
}
}
},
"metadata_bcc": {
"type": ["null", "array"],
"items": {
"type": ["null", "object"],
"properties": {
"email": {
"type": ["null", "string"]
}
}
}
},
"metadata_subject": {
"type": ["null", "string"]
},
"metadata_html": {
"type": ["null", "string"]
},
"metadata_text": {
"type": ["null", "string"]
},
"metadata_status": {
"type": ["null", "string"]
},
"metadata_forObjectType": {
"type": ["null", "string"]
},
"metadata_startTime": {
"type": ["null", "integer"]
},
"metadata_endTime": {
"type": ["null", "integer"]
},
"metadata_title": {
"type": ["null", "string"]
},
"metadata_toNumber": {
"type": ["null", "string"]
},
"metadata_fromNumber": {
"type": ["null", "string"]
},
"metadata_externalId": {
"type": ["null", "string"]
},
"metadata_durationMilliseconds": {
"type": ["null", "integer"]
},
"metadata_externalAccountId": {
"type": ["null", "string"]
},
"metadata_recordingUrl": {
"type": ["null", "string"]
},
"metadata_disposition": {
"type": ["null", "string"]
},
"metadata_completionDate": {
"type": ["null", "integer"]
},
"metadata_taskType": {
"type": ["null", "string"]
},
"metadata_reminders": {
"type": ["null", "array"],
"items": {
"type": ["null", "integer"]
}
},
"metadata_threadId": {
"type": ["null", "string"]
},
"metadata_messageId": {
"type": ["null", "string"]
},
"metadata_loggedFrom": {
"type": ["null", "string"]
},
"metadata_attachedVideoOpened": {
"type": ["null", "boolean"]
},
"metadata_attachedVideoWatched": {
"type": ["null", "boolean"]
},
"metadata_trackerKey": {
"type": ["null", "string"]
},
"metadata_sendDefaultReminder": {
"type": ["null", "boolean"]
},
"metadata_source": {
"type": ["null", "string"]
},
"metadata_unknownVisitorConversation": {
"type": ["null", "boolean"]
},
"metadata_facsimileSendId": {
"type": ["null", "string"]
},
"metadata_sentVia": {
"type": ["null", "string"]
},
"metadata_sequenceStepOrder": {
"type": ["null", "integer"]
},
"metadata_externalUrl": {
"type": ["null", "string"]
},
"metadata_postSendStatus": {
"type": ["null", "string"]
},
"metadata_errorMessage": {
"type": ["null", "string"]
},
"metadata_recipientDropReasons": {
"type": ["null", "string"]
},
"metadata_calleeObjectId": {
"type": ["null", "integer"]
},
"metadata_calleeObjectType": {
"type": ["null", "string"]
},
"metadata_mediaProcessingStatus": {
"type": ["null", "string"]
},
"metadata_sourceId": {
"type": ["null", "string"]
},
"metadata_priority": {
"type": ["null", "string"]
},
"metadata_isAllDay": {
"type": ["null", "boolean"]
}
}
}

View File

@@ -176,6 +176,172 @@
}
}
},
"properties_hs_activity_type": {
"type": ["null", "string"]
},
"properties_hs_all_assigned_business_unit_ids": {
"type": ["null", "string"]
},
"properties_hs_at_mentioned_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_attachment_ids": {
"type": ["null", "string"]
},
"properties_hs_body_preview": {
"type": ["null", "string"]
},
"properties_hs_body_preview_html": {
"type": ["null", "string"]
},
"properties_hs_body_preview_is_truncated": {
"type": ["null", "boolean"]
},
"properties_hs_call_app_id": {
"type": ["null", "number"]
},
"properties_hs_call_authed_url_provider": {
"type": ["null", "string"]
},
"properties_hs_call_body": {
"type": ["null", "string"]
},
"properties_hs_call_callee_object_id": {
"type": ["null", "number"]
},
"properties_hs_call_callee_object_type": {
"type": ["null", "string"]
},
"properties_hs_call_disposition": {
"type": ["null", "string"]
},
"properties_hs_call_duration": {
"type": ["null", "number"]
},
"properties_hs_call_external_account_id": {
"type": ["null", "string"]
},
"properties_hs_call_external_id": {
"type": ["null", "string"]
},
"properties_hs_call_from_number": {
"type": ["null", "string"]
},
"properties_hs_call_has_transcript": {
"type": ["null", "boolean"]
},
"properties_hs_call_recording_url": {
"type": ["null", "string"]
},
"properties_hs_call_source": {
"type": ["null", "string"]
},
"properties_hs_call_status": {
"type": ["null", "string"]
},
"properties_hs_call_title": {
"type": ["null", "string"]
},
"properties_hs_call_to_number": {
"type": ["null", "string"]
},
"properties_hs_call_transcription_id": {
"type": ["null", "number"]
},
"properties_hs_call_video_recording_url": {
"type": ["null", "string"]
},
"properties_hs_call_zoom_meeting_uuid": {
"type": ["null", "string"]
},
"properties_hs_calls_service_call_id": {
"type": ["null", "number"]
},
"properties_hs_created_by": {
"type": ["null", "number"]
},
"properties_hs_created_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_engagement_source": {
"type": ["null", "string"]
},
"properties_hs_engagement_source_id": {
"type": ["null", "string"]
},
"properties_hs_follow_up_action": {
"type": ["null", "string"]
},
"properties_hs_gdpr_deleted": {
"type": ["null", "boolean"]
},
"properties_hs_lastmodifieddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_merged_object_ids": {
"type": ["null", "string"]
},
"properties_hs_modified_by": {
"type": ["null", "number"]
},
"properties_hs_object_id": {
"type": ["null", "number"]
},
"properties_hs_product_name": {
"type": ["null", "string"]
},
"properties_hs_queue_membership_ids": {
"type": ["null", "string"]
},
"properties_hs_timestamp": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_unique_creation_key": {
"type": ["null", "string"]
},
"properties_hs_unique_id": {
"type": ["null", "string"]
},
"properties_hs_unknown_visitor_conversation": {
"type": ["null", "boolean"]
},
"properties_hs_updated_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_user_ids_of_all_notification_followers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_unfollowers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_owners": {
"type": ["null", "string"]
},
"properties_hubspot_owner_assigneddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hubspot_owner_id": {
"type": ["null", "string"]
},
"properties_hubspot_team_id": {
"type": ["null", "string"]
},
"properties_hs_all_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_all_team_ids": {
"type": ["null", "string"]
},
"properties_hs_all_accessible_team_ids": {
"type": ["null", "string"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"

View File

@@ -255,6 +255,251 @@
}
}
},
"properties_hs_all_assigned_business_unit_ids": {
"type": ["null", "string"]
},
"properties_hs_at_mentioned_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_attachment_ids": {
"type": ["null", "string"]
},
"properties_hs_body_preview": {
"type": ["null", "string"]
},
"properties_hs_body_preview_html": {
"type": ["null", "string"]
},
"properties_hs_body_preview_is_truncated": {
"type": ["null", "boolean"]
},
"properties_hs_created_by": {
"type": ["null", "string"]
},
"properties_hs_created_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_direction_and_unique_id": {
"type": ["null", "string"]
},
"properties_hs_email_attached_video_id": {
"type": ["null", "string"]
},
"properties_hs_email_attached_video_name": {
"type": ["null", "string"]
},
"properties_hs_email_attached_video_opened": {
"type": ["null", "boolean"]
},
"properties_hs_email_attached_video_watched": {
"type": ["null", "boolean"]
},
"properties_hs_email_bcc_email": {
"type": ["null", "string"]
},
"properties_hs_email_bcc_firstname": {
"type": ["null", "string"]
},
"properties_hs_email_bcc_lastname": {
"type": ["null", "string"]
},
"properties_hs_email_bcc_raw": {
"type": ["null", "string"]
},
"properties_hs_email_cc_email": {
"type": ["null", "string"]
},
"properties_hs_email_cc_firstname": {
"type": ["null", "string"]
},
"properties_hs_email_cc_lastname": {
"type": ["null", "string"]
},
"properties_hs_email_cc_raw": {
"type": ["null", "string"]
},
"properties_hs_email_direction": {
"type": ["null", "string"]
},
"properties_hs_email_encoded_email_associations_request": {
"type": ["null", "string"]
},
"properties_hs_email_error_message": {
"type": ["null", "string"]
},
"properties_hs_email_facsimile_send_id": {
"type": ["null", "string"]
},
"properties_hs_email_from_email": {
"type": ["null", "string"]
},
"properties_hs_email_from_firstname": {
"type": ["null", "string"]
},
"properties_hs_email_from_lastname": {
"type": ["null", "string"]
},
"properties_hs_email_from_raw": {
"type": ["null", "string"]
},
"properties_hs_email_headers": {
"type": ["null", "string"]
},
"properties_hs_email_html": {
"type": ["null", "string"]
},
"properties_hs_email_logged_from": {
"type": ["null", "string"]
},
"properties_hs_email_media_processing_status": {
"type": ["null", "string"]
},
"properties_hs_email_member_of_forwarded_subthread": {
"type": ["null", "boolean"]
},
"properties_hs_email_message_id": {
"type": ["null", "string"]
},
"properties_hs_email_migrated_via_portal_data_migration": {
"type": ["null", "string"]
},
"properties_hs_email_pending_inline_image_ids": {
"type": ["null", "string"]
},
"properties_hs_email_post_send_status": {
"type": ["null", "string"]
},
"properties_hs_email_recipient_drop_reasons": {
"type": ["null", "string"]
},
"properties_hs_email_send_event_id": {
"type": ["null", "string"]
},
"properties_hs_email_send_event_id_created": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_email_sender_email": {
"type": ["null", "string"]
},
"properties_hs_email_sender_firstname": {
"type": ["null", "string"]
},
"properties_hs_email_sender_lastname": {
"type": ["null", "string"]
},
"properties_hs_email_sender_raw": {
"type": ["null", "string"]
},
"properties_hs_email_sent_via": {
"type": ["null", "string"]
},
"properties_hs_email_status": {
"type": ["null", "string"]
},
"properties_hs_email_subject": {
"type": ["null", "string"]
},
"properties_hs_email_text": {
"type": ["null", "string"]
},
"properties_hs_email_thread_id": {
"type": ["null", "string"]
},
"properties_hs_email_to_email": {
"type": ["null", "string"]
},
"properties_hs_email_to_firstname": {
"type": ["null", "string"]
},
"properties_hs_email_to_lastname": {
"type": ["null", "string"]
},
"properties_hs_email_to_raw": {
"type": ["null", "string"]
},
"properties_hs_email_tracker_key": {
"type": ["null", "string"]
},
"properties_hs_email_validation_skipped": {
"type": ["null", "string"]
},
"properties_hs_engagement_source": {
"type": ["null", "string"]
},
"properties_hs_engagement_source_id": {
"type": ["null", "string"]
},
"properties_hs_follow_up_action": {
"type": ["null", "string"]
},
"properties_hs_gdpr_deleted": {
"type": ["null", "boolean"]
},
"properties_hs_lastmodifieddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_merged_object_ids": {
"type": ["null", "string"]
},
"properties_hs_modified_by": {
"type": ["null", "string"]
},
"properties_hs_object_id": {
"type": ["null", "number"]
},
"properties_hs_product_name": {
"type": ["null", "string"]
},
"properties_hs_queue_membership_ids": {
"type": ["null", "string"]
},
"properties_hs_timestamp": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_unique_creation_key": {
"type": ["null", "string"]
},
"properties_hs_unique_id": {
"type": ["null", "string"]
},
"properties_hs_updated_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_user_ids_of_all_notification_followers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_unfollowers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_owners": {
"type": ["null", "string"]
},
"properties_hubspot_owner_assigneddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hubspot_owner_id": {
"type": ["null", "string"]
},
"properties_hubspot_team_id": {
"type": ["null", "string"]
},
"properties_hs_all_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_all_team_ids": {
"type": ["null", "string"]
},
"properties_hs_all_accessible_team_ids": {
"type": ["null", "string"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"

View File

@@ -172,6 +172,168 @@
}
}
},
"properties_hs_activity_type": {
"type": ["null", "string"]
},
"properties_hs_all_assigned_business_unit_ids": {
"type": ["null", "string"]
},
"properties_hs_at_mentioned_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_attachment_ids": {
"type": ["null", "string"]
},
"properties_hs_attendee_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_body_preview": {
"type": ["null", "string"]
},
"properties_hs_body_preview_html": {
"type": ["null", "string"]
},
"properties_hs_body_preview_is_truncated": {
"type": ["null", "boolean"]
},
"properties_hs_created_by": {
"type": ["null", "number"]
},
"properties_hs_created_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_engagement_source": {
"type": ["null", "string"]
},
"properties_hs_engagement_source_id": {
"type": ["null", "string"]
},
"properties_hs_follow_up_action": {
"type": ["null", "string"]
},
"properties_hs_gdpr_deleted": {
"type": ["null", "boolean"]
},
"properties_hs_i_cal_uid": {
"type": ["null", "string"]
},
"properties_hs_internal_meeting_notes": {
"type": ["null", "string"]
},
"properties_hs_lastmodifieddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_meeting_body": {
"type": ["null", "string"]
},
"properties_hs_meeting_calendar_event_hash": {
"type": ["null", "string"]
},
"properties_hs_meeting_change_id": {
"type": ["null", "string"]
},
"properties_hs_meeting_created_from_link_id": {
"type": ["null", "string"]
},
"properties_hs_meeting_end_time": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_meeting_external_url": {
"type": ["null", "string"]
},
"properties_hs_meeting_location": {
"type": ["null", "string"]
},
"properties_hs_meeting_location_type": {
"type": ["null", "string"]
},
"properties_hs_meeting_outcome": {
"type": ["null", "string"]
},
"properties_hs_meeting_pre_meeting_prospect_reminders": {
"type": ["null", "string"]
},
"properties_hs_meeting_source": {
"type": ["null", "string"]
},
"properties_hs_meeting_source_id": {
"type": ["null", "string"]
},
"properties_hs_meeting_start_time": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_meeting_title": {
"type": ["null", "string"]
},
"properties_hs_meeting_web_conference_meeting_id": {
"type": ["null", "string"]
},
"properties_hs_merged_object_ids": {
"type": ["null", "string"]
},
"properties_hs_modified_by": {
"type": ["null", "number"]
},
"properties_hs_object_id": {
"type": ["null", "number"]
},
"properties_hs_product_name": {
"type": ["null", "string"]
},
"properties_hs_queue_membership_ids": {
"type": ["null", "string"]
},
"properties_hs_scheduled_tasks": {
"type": ["null", "string"]
},
"properties_hs_timestamp": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_unique_creation_key": {
"type": ["null", "string"]
},
"properties_hs_unique_id": {
"type": ["null", "string"]
},
"properties_hs_updated_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_user_ids_of_all_notification_followers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_unfollowers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_owners": {
"type": ["null", "string"]
},
"properties_hubspot_owner_assigneddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hubspot_owner_id": {
"type": ["null", "string"]
},
"properties_hubspot_team_id": {
"type": ["null", "string"]
},
"properties_hs_all_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_all_team_ids": {
"type": ["null", "string"]
},
"properties_hs_all_accessible_team_ids": {
"type": ["null", "string"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"

View File

@@ -113,6 +113,109 @@
}
}
},
"properties_hs_all_assigned_business_unit_ids": {
"type": ["null", "string"]
},
"properties_hs_at_mentioned_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_attachment_ids": {
"type": ["null", "string"]
},
"properties_hs_body_preview": {
"type": ["null", "string"]
},
"properties_hs_body_preview_html": {
"type": ["null", "string"]
},
"properties_hs_body_preview_is_truncated": {
"type": ["null", "boolean"]
},
"properties_hs_created_by": {
"type": ["null", "number"]
},
"properties_hs_created_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_engagement_source": {
"type": ["null", "string"]
},
"properties_hs_engagement_source_id": {
"type": ["null", "string"]
},
"properties_hs_follow_up_action": {
"type": ["null", "string"]
},
"properties_hs_gdpr_deleted": {
"type": ["null", "boolean"]
},
"properties_hs_lastmodifieddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_merged_object_ids": {
"type": ["null", "string"]
},
"properties_hs_modified_by": {
"type": ["null", "number"]
},
"properties_hs_note_body": {
"type": ["null", "string"]
},
"properties_hs_object_id": {
"type": ["null", "number"]
},
"properties_hs_product_name": {
"type": ["null", "string"]
},
"properties_hs_queue_membership_ids": {
"type": ["null", "string"]
},
"properties_hs_timestamp": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_unique_creation_key": {
"type": ["null", "string"]
},
"properties_hs_unique_id": {
"type": ["null", "string"]
},
"properties_hs_updated_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_user_ids_of_all_notification_followers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_unfollowers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_owners": {
"type": ["null", "string"]
},
"properties_hubspot_owner_assigneddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hubspot_owner_id": {
"type": ["null", "string"]
},
"properties_hubspot_team_id": {
"type": ["null", "string"]
},
"properties_hs_all_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_all_team_ids": {
"type": ["null", "string"]
},
"properties_hs_all_accessible_team_ids": {
"type": ["null", "string"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"

View File

@@ -197,6 +197,193 @@
}
}
},
"properties_hs_all_assigned_business_unit_ids": {
"type": ["null", "string"]
},
"properties_hs_at_mentioned_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_attachment_ids": {
"type": ["null", "string"]
},
"properties_hs_body_preview": {
"type": ["null", "string"]
},
"properties_hs_body_preview_html": {
"type": ["null", "string"]
},
"properties_hs_body_preview_is_truncated": {
"type": ["null", "boolean"]
},
"properties_hs_calendar_event_id": {
"type": ["null", "string"]
},
"properties_hs_created_by": {
"type": ["null", "number"]
},
"properties_hs_created_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_engagement_source": {
"type": ["null", "string"]
},
"properties_hs_engagement_source_id": {
"type": ["null", "string"]
},
"properties_hs_follow_up_action": {
"type": ["null", "string"]
},
"properties_hs_gdpr_deleted": {
"type": ["null", "boolean"]
},
"properties_hs_lastmodifieddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_merged_object_ids": {
"type": ["null", "string"]
},
"properties_hs_modified_by": {
"type": ["null", "number"]
},
"properties_hs_msteams_message_id": {
"type": ["null", "string"]
},
"properties_hs_num_associated_companies": {
"type": ["null", "number"]
},
"properties_hs_num_associated_contacts": {
"type": ["null", "number"]
},
"properties_hs_num_associated_deals": {
"type": ["null", "number"]
},
"properties_hs_num_associated_queue_objects": {
"type": ["null", "number"]
},
"properties_hs_num_associated_tickets": {
"type": ["null", "number"]
},
"properties_hs_object_id": {
"type": ["null", "number"]
},
"properties_hs_product_name": {
"type": ["null", "string"]
},
"properties_hs_queue_membership_ids": {
"type": ["null", "string"]
},
"properties_hs_scheduled_tasks": {
"type": ["null", "string"]
},
"properties_hs_task_body": {
"type": ["null", "string"]
},
"properties_hs_task_completion_date": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_task_contact_timezone": {
"type": ["null", "string"]
},
"properties_hs_task_for_object_type": {
"type": ["null", "string"]
},
"properties_hs_task_is_all_day": {
"type": ["null", "boolean"]
},
"properties_hs_task_last_contact_outreach": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_task_last_sales_activity_timestamp": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_task_priority": {
"type": ["null", "string"]
},
"properties_hs_task_probability_to_complete": {
"type": ["null", "number"]
},
"properties_hs_task_relative_reminders": {
"type": ["null", "string"]
},
"properties_hs_task_reminders": {
"type": ["null", "string"]
},
"properties_hs_task_repeat_interval": {
"type": ["null", "string"]
},
"properties_hs_task_send_default_reminder": {
"type": ["null", "boolean"]
},
"properties_hs_task_sequence_enrollment_active": {
"type": ["null", "boolean"]
},
"properties_hs_task_sequence_step_enrollment_id": {
"type": ["null", "string"]
},
"properties_hs_task_sequence_step_order": {
"type": ["null", "number"]
},
"properties_hs_task_status": {
"type": ["null", "string"]
},
"properties_hs_task_subject": {
"type": ["null", "string"]
},
"properties_hs_task_template_id": {
"type": ["null", "number"]
},
"properties_hs_task_type": {
"type": ["null", "string"]
},
"properties_hs_timestamp": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_unique_creation_key": {
"type": ["null", "string"]
},
"properties_hs_unique_id": {
"type": ["null", "string"]
},
"properties_hs_updated_by_user_id": {
"type": ["null", "number"]
},
"properties_hs_user_ids_of_all_notification_followers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_notification_unfollowers": {
"type": ["null", "string"]
},
"properties_hs_user_ids_of_all_owners": {
"type": ["null", "string"]
},
"properties_hubspot_owner_assigneddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hubspot_owner_id": {
"type": ["null", "string"]
},
"properties_hubspot_team_id": {
"type": ["null", "string"]
},
"properties_hs_all_owner_ids": {
"type": ["null", "string"]
},
"properties_hs_all_team_ids": {
"type": ["null", "string"]
},
"properties_hs_all_accessible_team_ids": {
"type": ["null", "string"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"

View File

@@ -42,6 +42,38 @@
}
}
},
"properties_hs_created_by_user_id": {
"type": ["null", "string"]
},
"properties_hs_createdate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_start_datetime": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_end_datetime": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_goal_name": {
"type": ["null", "string"]
},
"properties_hs_lastmodifieddate": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_kpi_value_last_calculated_at": {
"type": ["null", "string"],
"format": "date-time"
},
"properties_hs_object_id": {
"type": ["null", "string"]
},
"properties_hs_target_amount": {
"type": ["null", "string"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"

View File

@@ -43,6 +43,24 @@
}
}
},
"contactListIds_enrolled": {
"type": ["null", "integer"]
},
"contactListIds_active": {
"type": ["null", "integer"]
},
"contactListIds_completed": {
"type": ["null", "integer"]
},
"contactListIds_succeeded": {
"type": ["null", "integer"]
},
"contactListIds_steps": {
"type": ["null", "array"],
"items": {
"type": ["null", "string"]
}
},
"lastUpdatedByUserId": {
"type": ["null", "integer"]
},

View File

@@ -154,5 +154,11 @@ class SourceHubspot(AbstractSource):
return available_streams
def get_custom_object_streams(self, api: API, common_params: Mapping[str, Any]):
for (entity, fully_qualified_name, schema) in api.get_custom_objects_metadata():
yield CustomObject(entity=entity, schema=schema, fully_qualified_name=fully_qualified_name, **common_params)
for entity, fully_qualified_name, schema, custom_properties in api.get_custom_objects_metadata():
yield CustomObject(
entity=entity,
schema=schema,
fully_qualified_name=fully_qualified_name,
custom_properties=custom_properties,
**common_params,
)

View File

@@ -74,6 +74,35 @@ def retry_token_expired_handler(**kwargs):
)
class RecordUnnester:
def __init__(self, fields: Optional[List[str]] = None):
self.fields = fields or []
def unnest(self, records: Iterable[MutableMapping[str, Any]]) -> Iterable[MutableMapping[str, Any]]:
"""
In order to not make the users query their destinations for complicated json fields, duplicate some nested data as top level fields.
For instance:
{"id": 1, "updatedAt": "2020-01-01", "properties": {"hs_note_body": "World's best boss", "hs_created_by": "Michael Scott"}}
becomes
{
"id": 1,
"updatedAt": "2020-01-01",
"properties": {"hs_note_body": "World's best boss", "hs_created_by": "Michael Scott"},
"properties_hs_note_body": "World's best boss",
"properties_hs_created_by": "Michael Scott"
}
"""
for record in records:
fields_to_unnest = self.fields + ["properties"]
data_to_unnest = {field: record.get(field, {}) for field in fields_to_unnest}
unnested_data = {
f"{top_level_name}_{name}": value for (top_level_name, data) in data_to_unnest.items() for (name, value) in data.items()
}
final = {**record, **unnested_data}
yield final
def retry_connection_handler(**kwargs):
"""Retry helper, log each attempt"""
@@ -229,16 +258,16 @@ class API:
if not response.ok or "results" not in data:
self.logger.warn(self._parse_and_handle_errors(response))
return ()
for metadata in data["results"]:
properties = self.get_properties(raw_schema=metadata)
schema = self.generate_schema(properties)
yield metadata["name"], metadata["fullyQualifiedName"], schema, properties
return (
(metadata["name"], metadata["fullyQualifiedName"], self.generate_schema(raw_schema=metadata)) for metadata in data["results"]
)
def generate_schema(self, raw_schema: Mapping[str, Any]) -> Mapping[str, Any]:
properties = {}
for field in raw_schema["properties"]:
properties[field["name"]] = self._field_to_property_schema(field)
def get_properties(self, raw_schema: Mapping[str, Any]) -> Mapping[str, Any]:
return {field["name"]: self._field_to_property_schema(field) for field in raw_schema["properties"]}
def generate_schema(self, properties: Mapping[str, Any]) -> Mapping[str, Any]:
unnested_properties = {f"properties_{property_name}": property_value for (property_name, property_value) in properties.items()}
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": ["null", "object"],
@@ -249,6 +278,7 @@ class API:
"updatedAt": {"type": ["null", "string"], "format": "date-time"},
"archived": {"type": ["null", "boolean"]},
"properties": {"type": ["null", "object"], "properties": properties},
**unnested_properties,
},
}
@@ -292,6 +322,11 @@ class Stream(HttpStream, ABC):
denormalize_records: bool = False # one record from API response can result in multiple records emitted
granted_scopes: Set = None
properties_scopes: Set = None
unnest_fields: Optional[List[str]] = None
@cached_property
def record_unnester(self):
return RecordUnnester(self.unnest_fields)
@property
@abstractmethod
@@ -366,7 +401,12 @@ class Stream(HttpStream, ABC):
def get_json_schema(self) -> Mapping[str, Any]:
json_schema = super().get_json_schema()
if self.properties:
json_schema["properties"]["properties"] = {"type": "object", "properties": self.properties}
properties = {"properties": {"type": "object", "properties": self.properties}}
unnested_properties = {
f"properties_{property_name}": property_value for (property_name, property_value) in self.properties.items()
}
default_props = json_schema["properties"]
json_schema["properties"] = {**default_props, **properties, **unnested_properties}
return json_schema
@retry_token_expired_handler(max_tries=5)
@@ -461,7 +501,7 @@ class Stream(HttpStream, ABC):
if self.filter_old_records:
records = self._filter_old_records(records)
yield from records
yield from self.record_unnester.unnest(records)
next_page_token = self.next_page_token(response)
if not next_page_token:
@@ -1112,6 +1152,7 @@ class CRMSearchStream(IncrementalStream, ABC):
)
records = self._flat_associations(records)
records = self._filter_old_records(records)
records = self.record_unnester.unnest(records)
for record in records:
cursor = self._field_to_datetime(record[self.updated_at_field])
@@ -1256,6 +1297,7 @@ class Campaigns(ClientSideIncrementalStream):
cursor_field_datetime_format = "x"
primary_key = "id"
scopes = {"crm.lists.read"}
unnest_fields = ["counters"]
def read_records(
self,
@@ -1267,7 +1309,7 @@ class Campaigns(ClientSideIncrementalStream):
for row in super().read_records(sync_mode, cursor_field=cursor_field, stream_slice=stream_slice, stream_state=stream_state):
record, response = self._api.get(f"/email/public/v1/campaigns/{row['id']}")
if self.filter_by_state(stream_state=stream_state, record=row):
yield {**row, **record}
yield from self.record_unnester.unnest([{**row, **record}])
class ContactLists(IncrementalStream):
@@ -1286,6 +1328,7 @@ class ContactLists(IncrementalStream):
primary_key = "listId"
need_chunk = False
scopes = {"crm.lists.read"}
unnest_fields = ["metaData"]
class ContactsListMemberships(Stream):
@@ -1452,6 +1495,8 @@ class EngagementsAll(EngagementsABC):
Note: Returns all engagements records ordered by 'createdAt' (not 'lastUpdated') field
"""
unnest_fields = ["associations", "metadata"]
@property
def url(self):
return "/engagements/v1/engagements/paged"
@@ -1473,6 +1518,7 @@ class EngagementsRecent(EngagementsABC):
total_records_limit = 10000
last_days_limit = 29
unnest_fields = ["associations", "metadata"]
@property
def url(self):
@@ -1791,6 +1837,7 @@ class Workflows(ClientSideIncrementalStream):
cursor_field_datetime_format = "x"
primary_key = "id"
scopes = {"automation"}
unnest_fields = ["contactListIds"]
class Companies(CRMSearchStream):
@@ -1813,19 +1860,12 @@ class ContactsMergedAudit(Stream):
url = "/contacts/v1/contact/vids/batch/"
updated_at_field = "timestamp"
scopes = {"crm.objects.contacts.read"}
unnest_fields = ["merged_from_email", "merged_to_email"]
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.config = kwargs
def get_json_schema(self) -> Mapping[str, Any]:
"""Override get_json_schema defined in Stream class
Final object does not have properties field
We return JSON schema as defined in :
source_hubspot/schemas/contacts_merged_audit.json
"""
return super(Stream, self).get_json_schema()
def stream_slices(
self, sync_mode: SyncMode, cursor_field: List[str] = None, stream_state: Mapping[str, Any] = None, **kwargs
) -> Iterable[Mapping[str, Any]]:
@@ -1841,7 +1881,7 @@ class ContactsMergedAudit(Stream):
contacts.filter_old_records = False
for contact in contacts.read_records(sync_mode=SyncMode.full_refresh):
if contact["properties"].get("hs_merged_object_ids"):
if contact.get("properties_hs_merged_object_ids"):
contact_batch.append(contact["id"])
if len(contact_batch) == max_contacts:
@@ -1956,11 +1996,12 @@ class CustomObject(CRMSearchStream, ABC):
primary_key = "id"
scopes = {"crm.schemas.custom.read", "crm.objects.custom.read"}
def __init__(self, entity: str, schema: Mapping[str, Any], fully_qualified_name: str, **kwargs):
def __init__(self, entity: str, schema: Mapping[str, Any], fully_qualified_name: str, custom_properties: Mapping[str, Any], **kwargs):
super().__init__(**kwargs)
self.entity = entity
self.schema = schema
self.fully_qualified_name = fully_qualified_name
self.custom_properties = custom_properties
@property
def name(self) -> str:
@@ -1971,8 +2012,8 @@ class CustomObject(CRMSearchStream, ABC):
@property
def properties(self) -> Mapping[str, Any]:
# do not make extra api queries
return self.get_json_schema()["properties"]["properties"]["properties"]
# do not make extra api calls
return self.custom_properties
class EmailSubscriptions(Stream):

View File

@@ -297,6 +297,8 @@ class TestSplittingPropertiesFunctionality:
assert len(stream_records) == sum([len(ids) for ids in record_ids_paginated])
for record in stream_records:
assert len(record["properties"]) == NUMBER_OF_PROPERTIES
properties = [field for field in record if field.startswith("properties_")]
assert len(properties) == NUMBER_OF_PROPERTIES
def test_stream_with_splitting_properties_with_pagination(self, requests_mock, common_params, api, fake_properties_list):
"""
@@ -329,6 +331,8 @@ class TestSplittingPropertiesFunctionality:
assert len(stream_records) == 5
for record in stream_records:
assert len(record["properties"]) == NUMBER_OF_PROPERTIES
properties = [field for field in record if field.startswith("properties_")]
assert len(properties) == NUMBER_OF_PROPERTIES
def test_stream_with_splitting_properties_with_new_record(self, requests_mock, common_params, api, fake_properties_list):
"""

View File

@@ -30,6 +30,7 @@ from source_hubspot.streams import (
Owners,
OwnersArchived,
Products,
RecordUnnester,
TicketPipelines,
Tickets,
Workflows,
@@ -402,6 +403,7 @@ def expected_custom_object_json_schema():
"updatedAt": {"type": ["null", "string"], "format": "date-time"},
"archived": {"type": ["null", "boolean"]},
"properties": {"type": ["null", "object"], "properties": {"name": {"type": ["null", "string"]}}},
"properties_name": {"type": ["null", "string"]},
},
}
@@ -410,7 +412,7 @@ def test_custom_object_stream_doesnt_call_hubspot_to_get_json_schema_if_availabl
requests_mock, custom_object_schema, expected_custom_object_json_schema, common_params
):
stream = CustomObject(entity="animals", schema=expected_custom_object_json_schema,
fully_qualified_name="p123_animals", **common_params)
fully_qualified_name="p123_animals", custom_properties={"name": {"type": ["null", "string"]}}, **common_params)
adapter = requests_mock.register_uri(
"GET", "/crm/v3/schemas", [{"json": {"results": [custom_object_schema]}}])
@@ -446,7 +448,85 @@ def test_contacts_merged_audit_stream_doesnt_call_hubspot_to_get_json_schema(req
def test_get_custom_objects_metadata_success(requests_mock, custom_object_schema, expected_custom_object_json_schema, api):
requests_mock.register_uri(
"GET", "/crm/v3/schemas", json={"results": [custom_object_schema]})
for (entity, fully_qualified_name, schema) in api.get_custom_objects_metadata():
for (entity, fully_qualified_name, schema, custom_properties) in api.get_custom_objects_metadata():
assert entity == "animals"
assert fully_qualified_name == "p19936848_Animal"
assert schema == expected_custom_object_json_schema
@pytest.mark.parametrize(
"input_data, unnest_fields, expected_output",
(
(
[{"id": 1, "createdAt": "2020-01-01", "email": {"from": "integration-test@airbyte.io", "to": "michael_scott@gmail.com"}}],
[],
[{"id": 1, "createdAt": "2020-01-01", "email": {"from": "integration-test@airbyte.io", "to": "michael_scott@gmail.com"}}]
),
(
[
{
"id": 1,
"createdAt": "2020-01-01",
"email": {"from": "integration-test@airbyte.io", "to": "michael_scott@gmail.com"},
"properties": {"phone": "+38044-111-111", "address": "31, Cleveland str, Washington DC"}
}
],
[],
[
{
"id": 1,
"createdAt": "2020-01-01",
"email": {"from": "integration-test@airbyte.io", "to": "michael_scott@gmail.com"},
"properties": {"phone": "+38044-111-111", "address": "31, Cleveland str, Washington DC"},
"properties_phone": "+38044-111-111",
"properties_address": "31, Cleveland str, Washington DC"
}
]
),
(
[
{
"id": 1,
"createdAt": "2020-01-01",
"email": {"from": "integration-test@airbyte.io", "to": "michael_scott@gmail.com"},
}
],
["email"],
[
{
"id": 1,
"createdAt": "2020-01-01",
"email": {"from": "integration-test@airbyte.io", "to": "michael_scott@gmail.com"},
"email_from": "integration-test@airbyte.io",
"email_to": "michael_scott@gmail.com",
}
]
),
(
[
{
"id": 1,
"createdAt": "2020-01-01",
"email": {"from": "integration-test@airbyte.io", "to": "michael_scott@gmail.com"},
"properties": {"phone": "+38044-111-111", "address": "31, Cleveland str, Washington DC"}
}
],
["email"],
[
{
"id": 1,
"createdAt": "2020-01-01",
"email": {"from": "integration-test@airbyte.io", "to": "michael_scott@gmail.com"},
"email_from": "integration-test@airbyte.io",
"email_to": "michael_scott@gmail.com",
"properties": {"phone": "+38044-111-111", "address": "31, Cleveland str, Washington DC"},
"properties_phone": "+38044-111-111",
"properties_address": "31, Cleveland str, Washington DC"
}
]
)
)
)
def test_records_unnester(input_data, unnest_fields, expected_output):
unnester = RecordUnnester(fields=unnest_fields)
assert list(unnester.unnest(input_data)) == expected_output

View File

@@ -200,16 +200,34 @@ Now that you have set up the Hubspot source connector, check out the following H
[Build a single customer view with open-source tools](https://airbyte.com/tutorials/single-customer-view)
## Unnesting top level properties
Since version 1.5.0, in order to not make the users query their destinations for complicated json fields, we duplicate most of nested data as top level fields.
For instance:
`{"id": 1, "updatedAt": "2020-01-01", "properties": {"hs_note_body": "World's best boss", "hs_created_by": "Michael Scott"}}`
becomes
`{
"id": 1,
"updatedAt": "2020-01-01",
"properties": {"hs_note_body": "World's best boss", "hs_created_by": "Michael Scott"},
"properties_hs_note_body": "World's best boss",
"properties_hs_created_by": "Michael Scott"
}`
## Changelog
| Version | Date | Pull Request | Subject |
| :------ | :--------- | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1.4.1 | 2023-08-22 | [29715](https://github.com/airbytehq/airbyte/pull/29715) | Fix python package configuration stream |
| 1.4.0 | 2023-08-11 | [29249](https://github.com/airbytehq/airbyte/pull/29249) | Add `OwnersArchived` stream |
| 1.3.3 | 2023-08-10 | [29248](https://github.com/airbytehq/airbyte/pull/29248) | Specify `threadId` in `engagements` stream to type string |
| 1.3.2 | 2023-08-10 | [29326](https://github.com/airbytehq/airbyte/pull/29326) | Add primary keys to streams `ContactLists` and `PropertyHistory` |
| 1.3.1 | 2023-08-08 | [29211](https://github.com/airbytehq/airbyte/pull/29211) | Handle 400 and 403 errors without interruption of the sync |
| 1.3.0 | 2023-08-01 | [28909](https://github.com/airbytehq/airbyte/pull/28909) | Add handling of source connection errors |
|:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1.5.0 | 2023-09-11 | [30322](https://github.com/airbytehq/airbyte/pull/30322) | Unnest stream schemas |
| 1.4.1 | 2023-08-22 | [29715](https://github.com/airbytehq/airbyte/pull/29715) | Fix python package configuration stream |
| 1.4.0 | 2023-08-11 | [29249](https://github.com/airbytehq/airbyte/pull/29249) | Add `OwnersArchived` stream |
| 1.3.3 | 2023-08-10 | [29248](https://github.com/airbytehq/airbyte/pull/29248) | Specify `threadId` in `engagements` stream to type string |
| 1.3.2 | 2023-08-10 | [29326](https://github.com/airbytehq/airbyte/pull/29326) | Add primary keys to streams `ContactLists` and `PropertyHistory` |
| 1.3.1 | 2023-08-08 | [29211](https://github.com/airbytehq/airbyte/pull/29211) | Handle 400 and 403 errors without interruption of the sync |
| 1.3.0 | 2023-08-01 | [28909](https://github.com/airbytehq/airbyte/pull/28909) | Add handling of source connection errors |
| 1.2.0 | 2023-07-27 | [27091](https://github.com/airbytehq/airbyte/pull/27091) | Add new stream `ContactsMergedAudit` |
| 1.1.2 | 2023-07-27 | [28558](https://github.com/airbytehq/airbyte/pull/28558) | Improve error messages during connector setup |
| 1.1.1 | 2023-07-25 | [28705](https://github.com/airbytehq/airbyte/pull/28705) | Fix retry handler for token expired error |