feat: add Baserow data source integration#454
Merged
Conversation
Adds Baserow alongside the existing CRM integrations, with import,
enrichment write-back, tagging, column deletion and webhook-driven
auto-import.
Baserow has no OAuth flow, and its database tokens are rejected by the
field and webhook endpoints, so the adaptor signs in with an account
email and password to obtain a JWT. Refresh tokens expire after 7 days
and are not rotated, so the password has to be stored for background
syncs to keep working; the form recommends creating a dedicated bot
account to bound the blast radius, and the config panel now masks
password values.
The API base URL is configurable to support self-hosted instances.
Link and select field values are unwrapped from Baserow's
`{ id, value }` objects to the plain strings and string arrays that
Airtable already returns, so they can be filtered and mapped rather
than importing as ColumnType.Object.
Tests run against the real Baserow API; the table fixture they expect is
documented at the top of the test file.
Extends the existing link and select unwrapping to the remaining field
types Baserow serializes as objects. These wrap their value in `name`
rather than `value`, so the previous unwrapper passed them through
untouched and they imported as ColumnType.Object:
- multiple_collaborators: [{ id, name }]
- created_by: { id, name }
- last_modified_by: { id, name }
The field type table now carries both the wrapping property and whether
the value is an array, so adding a type is a one-line change.
Shapes were confirmed against the real API rather than assumed. The two
new tests assert by shape rather than by user name, so they survive the
test credentials being pointed at a different account.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Baserow alongside the existing CRM integrations, with import, enrichment write-back, tagging, column deletion and webhook-driven auto-import.
Baserow has no OAuth flow, and its database tokens are rejected by the field and webhook endpoints, so the adaptor signs in with an account email and password to obtain a JWT. Refresh tokens expire after 7 days and are not rotated, so the password has to be stored for background syncs to keep working; the form recommends creating a dedicated bot account to bound the blast radius, and the config panel now masks password values.
The API base URL is configurable to support self-hosted instances.
Link and select field values are unwrapped from Baserow's
{ id, value }objects to the plain strings and string arrays that Airtable already returns, so they can be filtered and mapped rather than importing as ColumnType.Object.Tests run against the real Baserow API; the table fixture they expect is documented at the top of the test file.