example(PeopleAI): add people_ai connector example#358
example(PeopleAI): add people_ai connector example#358fivetran-adamrees wants to merge 43 commits intomainfrom
Conversation
🧹 Python Code Quality Check✅ No issues found in Python Files. This comment is auto-updated with every commit. |
There was a problem hiding this comment.
Pull Request Overview
This PR adds a new People.ai connector example that demonstrates how to sync activity and participant data from the People.ai API using OAuth2 authentication with client credentials. The connector implements token refresh logic, exponential backoff retry handling, and offset-based pagination.
Key Changes
- New People.ai connector with OAuth2 authentication and automatic token refresh on 401 errors
- Implements retry logic with exponential backoff for transient 5xx and connection errors
- Syncs two tables:
activity(base activities) andparticipants(participant details)
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 29 comments.
| File | Description |
|---|---|
| connectors/people_ai/connector.py | Core connector implementation with authentication, pagination, error handling, and data sync logic |
| connectors/people_ai/configuration.json | Configuration file with API key and secret placeholders |
| connectors/people_ai/README.md | Documentation covering connector overview, features, authentication, pagination, data handling, and error handling |
| README.md | Added People.ai connector to the main repository connector list |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
to resolve black / flake issues
5tran-alexil
left a comment
There was a problem hiding this comment.
See my suggestions. Otherwise, README looks good.
Co-authored-by: Alex Ilyichov <alexander.ilyichov@fivetran.com>
Co-authored-by: Alex Ilyichov <alexander.ilyichov@fivetran.com>
Co-authored-by: Alex Ilyichov <alexander.ilyichov@fivetran.com>
Co-authored-by: Alex Ilyichov <alexander.ilyichov@fivetran.com>
Co-authored-by: Alex Ilyichov <alexander.ilyichov@fivetran.com>
Co-authored-by: Alex Ilyichov <alexander.ilyichov@fivetran.com>
| def update(configuration: dict, state: dict): | ||
| """ | ||
| Define the update function which lets you configure | ||
| how your connector fetches data. | ||
| See the technical reference documentation for more details | ||
| on the update function: https://fivetran.com/docs/connectors/connector-sdk/technical-reference#update | ||
|
|
||
| Args: | ||
| configuration: A dictionary containing connection details. | ||
| state: A dictionary containing state information from previous runs. | ||
| The state dictionary is empty for the first sync or for any | ||
| full re-sync. | ||
| """ |
There was a problem hiding this comment.
The update() function is missing a required validate_configuration() function call. According to SDK guidelines, every connector must implement and call validate_configuration() at the start of the update() function to validate configuration parameters (api_key and api_secret in this case).
Add this function before update():
def validate_configuration(configuration: dict):
"""
Validate the configuration dictionary to ensure it contains all required parameters.
This function is called at the start of the update method to ensure that the connector has all necessary configuration values.
Args:
configuration: a dictionary that holds the configuration settings for the connector.
Raises:
ValueError: if any required configuration parameter is missing.
"""
required_configs = ["api_key", "api_secret"]
for key in required_configs:
if key not in configuration:
raise ValueError(f"Missing required configuration value: {key}")Then call it at the start of update():
def update(configuration: dict, state: dict):
"""..."""
validate_configuration(configuration)
# rest of the codeThere was a problem hiding this comment.
made this change. Earlier review said to not have a validate_configuration function
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
5tran-alexil
left a comment
There was a problem hiding this comment.
@fivetran-adamrees @fivetran-pranavtotala READMEs LGTM, i fixed a merge conflict
Description of Change
Adding a new connection to the example repository
Testing
This is actively being used by a customer. Also, tested locally this morning here

Checklist
Some tips and links to help validate your PR:
fivetran debugcommand.