Skip to content

Source HubSpot: Migrate streams from deprecated V1 Contact Lists API to V3 Lists API before 5/30/2025 #56393

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

16 changes: 12 additions & 4 deletions airbyte-integrations/connectors/source-hubspot/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ data:
connectorSubtype: api
connectorType: source
definitionId: 36c891d9-4bd9-43ac-bad2-10e12756272c
dockerImageTag: 4.5.6
dockerImageTag: 5.0.0
dockerRepository: airbyte/source-hubspot
documentationUrl: https://docs.airbyte.com/integrations/sources/hubspot
erdUrl: https://dbdocs.io/airbyteio/source-hubspot?view=relationships
Expand All @@ -33,12 +33,20 @@ data:
rolloutConfiguration:
enableProgressiveRollout: false
breakingChanges:
5.0.0:
message: >-
This update migrates from the V1 Contact Lists API to the improved V3 Lists API.
Users will need to refresh their schema and reset affected streams after upgrading.
upgradeDeadline: "2025-05-30"
scopedImpact:
- scopeType: stream
impactedScopes: ["contact_lists", "contacts_list_memberships"]
4.0.0:
message: >-
This update brings extended schema with data type changes for the streams
`Deals Property History` and `Companies Property History`. Users will need
to refresh their schema and reset their streams after upgrading.
upgradeDeadline: 2024-03-10
upgradeDeadline: "2024-03-10"
scopedImpact:
- scopeType: stream
impactedScopes:
Expand All @@ -48,7 +56,7 @@ data:
This update brings extended schema with data type changes for the Marketing
Emails stream.
Users will need to refresh it and reset this stream after upgrading.
upgradeDeadline: 2024-02-12
upgradeDeadline: "2024-02-12"
scopedImpact:
- scopeType: stream
impactedScopes: ["marketing_emails"]
Expand All @@ -60,7 +68,7 @@ data:
It will affect only users who use `Property History` stream, who will need
to fix schema conflicts and sync `Contacts Property History` stream instead
of `Property History`.
upgradeDeadline: 2024-01-15
upgradeDeadline: "2024-01-15"
suggestedStreams:
streams:
- contacts
Expand Down
121 changes: 98 additions & 23 deletions airbyte-integrations/connectors/source-hubspot/poetry.lock

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",]
build-backend = "poetry.core.masonry.api"

[tool.poetry]
version = "4.5.6"
version = "5.0.0"
name = "source-hubspot"
description = "Source implementation for HubSpot."
authors = [ "Airbyte <[email protected]>",]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,178 +1,55 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": true,
"properties": {
"parentId": {
"description": "The ID of the parent list, if applicable.",
"type": ["null", "integer"]
},
"metaData": {
"description": "Additional metadata related to the fetched contact lists",
"type": ["null", "object"],
"properties": {
"processing": {
"description": "Indicates if the list is currently being processed.",
"type": ["null", "string"]
},
"size": {
"description": "The size of the contact list.",
"type": ["null", "integer"]
},
"error": {
"description": "Any error associated with the contact list.",
"type": ["null", "string"]
},
"lastProcessingStateChangeAt": {
"description": "The timestamp of the last processing state change.",
"type": ["null", "integer"]
},
"lastSizeChangeAt": {
"description": "The timestamp of the last size change.",
"type": ["null", "integer"]
},
"listReferencesCount": {
"description": "The count of references to the list.",
"type": ["null", "integer"]
},
"parentFolderId": {
"description": "The ID of the parent folder containing the list.",
"type": ["null", "integer"]
}
}
"processingType": {
"description": "The processing type of the list.",
"type": ["null", "string"]
},
"metaData_processing": {
"description": "Processing status related to list metadata.",
"objectTypeId": {
"description": "The object type of the list.",
"type": ["null", "string"]
},
"metaData_size": {
"description": "Size of the list metadata.",
"updatedById": {
"description": "The ID of the user that last updated the list.",
"type": ["null", "integer"]
},
"metaData_error": {
"description": "Error information related to list metadata.",
"filtersUpdatedAt": {
"description": "The time when the filters for this list were last updated.",
"type": ["null", "string"]
},
"metaData_lastProcessingStateChangeAt": {
"description": "Timestamp of the last processing state change for metadata.",
"type": ["null", "integer"]
"listId": {
"description": "The unique ILS ID of the contact list.",
"type": ["null", "string"]
},
"metaData_lastSizeChangeAt": {
"description": "Timestamp of the last size change for metadata.",
"type": ["null", "integer"]
"createdAt": {
"description": "The timestamp when the contact list was created.",
"type": ["null", "string"]
},
"metaData_listReferencesCount": {
"description": "References count related to list metadata.",
"type": ["null", "integer"]
"processingStatus": {
"description": "The processing status of the list.",
"type": ["null", "string"]
},
"metaData_parentFolderId": {
"description": "Parent folder ID associated with list metadata.",
"type": ["null", "integer"]
"deletedAt": {
"description": "The time when the list was deleted.",
"type": ["null", "string"]
},
"dynamic": {
"description": "Identifies if the contact list is dynamic in nature.",
"type": ["null", "boolean"]
"listVersion": {
"description": "The version of the list.",
"type": ["null", "string"]
},
"name": {
"description": "The name or title of the contact list.",
"type": ["null", "string"]
},
"filters": {
"description": "Contains filter criteria to fetch contact lists",
"type": ["null", "array"],
"items": {
"description": "Individual filter items",
"type": ["null", "array"],
"items": {
"description": "Properties for each filter item",
"type": ["null", "object"],
"properties": {
"filterFamily": {
"description": "The family to which the filter belongs.",
"type": ["null", "string"]
},
"withinTimeMode": {
"description": "Specifies the time mode within which the filter operates.",
"type": ["null", "string"]
},
"checkPastVersions": {
"description": "Specifies if past versions of the filter should be checked.",
"type": ["null", "boolean"]
},
"type": {
"description": "The type of filter being used.",
"type": ["null", "string"]
},
"property": {
"description": "The property on which the filter is applied.",
"type": ["null", "string"]
},
"value": {
"description": "The specific value for the filter.",
"type": ["null", "string"]
},
"operator": {
"description": "The operation performed by the filter.",
"type": ["null", "string"]
}
}
}
}
},
"ilsFilterBranch": {
"description": "Indicates the branch of the filter applied.",
"type": ["null", "string"]
},
"internal": {
"description": "Specifies if the contact list is internal (not accessible to customers).",
"type": ["null", "boolean"]
},
"authorId": {
"createdById": {
"description": "The ID of the user who authored or created the contact list.",
"type": ["null", "integer"]
},
"limitExempt": {
"description": "Specifies if any limits are exempted for the contact list.",
"type": ["null", "boolean"]
},
"teamIds": {
"description": "The IDs of teams that have access to the contact list.",
"type": ["null", "array"]
},
"portalId": {
"description": "The ID of the portal to which the contact list belongs.",
"type": ["null", "integer"]
},
"createdAt": {
"description": "The timestamp when the contact list was created.",
"type": ["null", "integer"]
},
"listId": {
"description": "The unique ID of the contact list.",
"type": ["null", "integer"]
"type": ["null", "string"]
},
"updatedAt": {
"description": "The timestamp of the last update to the contact list.",
"type": ["null", "integer"]
},
"internalListId": {
"description": "The internal ID of the contact list.",
"type": ["null", "integer"]
},
"readOnly": {
"description": "Specifies if the list is read-only or not.",
"type": ["null", "boolean"]
},
"deleteable": {
"description": "Specifies if the contact list can be deleted.",
"type": ["null", "boolean"]
},
"listType": {
"description": "Specifies the type of list, e.g., static or dynamic.",
"type": ["null", "string"]
},
"archived": {
"description": "Indicates if the contact list is archived or not.",
"type": ["null", "boolean"]
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,21 @@
"description": "The unique ID associated with the contact in the HubSpot CRM",
"type": ["null", "integer"]
},
"static-list-id": {
"description": "The static ID assigned to the list of contacts within the HubSpot CRM",
"type": ["null", "integer"]
},
"internal-list-id": {
"description": "The internal ID assigned to the list of contacts within the HubSpot CRM",
"type": ["null", "integer"]
"listId": {
"description": "The ID assigned to the list of contacts within the HubSpot CRM",
"type": ["null", "string"]
},
"timestamp": {
"description": "The timestamp when the contact was added to or removed from the list",
"listVersion": {
"description": "The version of the list of contacts within the HubSpot CRM",
"type": ["null", "integer"]
},
"vid": {
"description": "The ID associated with the contact in the HubSpot CRM",
"type": ["null", "integer"]
"lastAddedTimestamp": {
"description": "The timestamp when the contact was last added to the list",
"type": ["null", "string"]
},
"is-member": {
"description": "Flag indicating whether the contact is a member of the list or not",
"type": ["null", "boolean"]
"firstAddedTimestamp": {
"description": "The timestamp when the contact was first added to the list",
"type": ["null", "string"]
}
}
}
Loading
Loading