Singer.io tap for extracting data from the buttondown API
Project description
tap-buttondown
A Singer tap for extracting data from the Buttondown API.
Installation
pip install tap-buttondown
Or run directly with uvx.
uvx tap-buttondown --help
# Example with CSV target
uvx tap-buttondown --config config.json | uvx --with setuptools target-csv
Configuration
Create a config.json file with your Buttondown API key:
{
"api_key": "your_buttondown_api_key_here"
}
You can find your API key in your Buttondown dashboard.
Usage
Discover available streams
tap-buttondown --config config.json --discover
This will output a catalog of available streams in JSON format.
Run the tap
tap-buttondown --config config.json --catalog catalog.json
Or to use the default catalog:
tap-buttondown --config config.json
State management
To maintain state between runs (for incremental syncs):
tap-buttondown --config config.json --state state.json
Streams
Subscribers
The subscribers stream extracts subscriber data from your Buttondown newsletter.
Schema:
id(string): Unique subscriber IDcreation_date(datetime): When the subscriber was createdemail_address(string): Subscriber email addressnotes(string): Notes about the subscribermetadata(object): Custom metadatatags(array): Tags associated with the subscriberreferrer_url(string): Referrer URLsecondary_id(integer): Secondary identifiertype(string): Subscriber type (e.g., "unactivated", "regular", "undeliverable")source(string): Source of the subscriptionutm_campaign(string): UTM campaign parameterutm_medium(string): UTM medium parameterutm_source(string): UTM source parameterreferral_code(string): Referral codeavatar_url(string): Avatar URLstripe_coupon(string, nullable): Stripe couponunsubscription_date(datetime, nullable): When the subscriber unsubscribedchurn_date(datetime, nullable): When the subscriber churnedundeliverability_date(datetime, nullable): When the subscriber became undeliverableundeliverability_reason(string, nullable): Reason for undeliverabilityupgrade_date(datetime, nullable): When the subscriber upgradedunsubscription_reason(string): Reason for unsubscriptiontransitions(array): Transition historyip_address(string): IP addresslast_open_date(datetime, nullable): Last email open datelast_click_date(datetime, nullable): Last email click datestripe_customer_id(string, nullable): Stripe customer IDsubscriber_import_id(string, nullable): Import IDrisk_score(number): Risk scorestripe_customer(object, nullable): Stripe customer data
Replication Method: INCREMENTAL
Replication Key: creation_date
Emails
The emails stream extracts email data from your Buttondown newsletter.
Schema:
id(string): Unique email IDcreation_date(datetime): When the email was createdmodification_date(datetime): When the email was last modifiedpublish_date(datetime, nullable): When the email was publishedsubject(string): Email subject linebody(string): Email body contentstatus(string): Email status (e.g., "draft", "sent", "scheduled")slug(string): URL slug for the emailcanonical_url(string): Canonical URLemail_type(string): Type of email (e.g., "public", "private")image(string): Featured image URLdescription(string): Email descriptionmetadata(object): Custom metadatasource(string): Source of the emailsecondary_id(integer, nullable): Secondary identifiercommenting_mode(string): Commenting mode settingabsolute_url(string): Absolute URL to the emailfilters(object): Email filtersanalytics(object, nullable): Email analytics datatemplate(object, nullable): Email template dataattachments(array): Email attachmentsrelated_email_ids(array): Related email IDsfeatured(boolean): Whether the email is featuredshould_trigger_pay_per_email_billing(boolean): Pay-per-email billing flag
Replication Method: INCREMENTAL
Replication Key: modification_date
Development
This project is managed with uv.
Setup
- Clone the repository
- Create a
config.jsonfile with your API key
Testing
# Discover streams
uv run tap-buttondown --config config.json --discover
# Run sync
uv run tap-buttondown --config config.json
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters