Singer.io tap for extracting data from the Slack Web API
It is highly recommended installing tap-slack in it's own isolated virtual environment. For example:
python3 -m venv ~/.venvs/tap-slack
source ~/.venvs/tap-slack/bin/activate
pip3 install tap-slack
deactivateThe tap requires a Slack API token to interact with your Slack workspace. You can obtain a token for a single workspace by creating a new Slack App in your workspace and assigning it the relevant scopes. As of right now, the minimum required scopes for this App are:
channels:readchannels:historyusers:read
It is recommended to follow Singer best practices when running taps either on their own or with a Singer target.
In practice, it will look something like the following:
~/.venvs/tap-slack/bin/tap-slack --config slack.config.json --catalog catalog.json | ~/.venvs/target-stitch/bin/target-stitch --config stitch.config.jsonThe Slack Conversations API does not natively store last updated timestamp information about a Conversation. In addition, Conversation records are mutable. Thus, tap-slack requires a FULL_TABLE replication strategy to ensure the most up-to-date data in replicated when replicating the following Streams:
ConversationsConversationMembersStreamConversationHistoryStream
The Users stream does store information about when a User record was last updated, so tap-slack uses that timestamp as a bookmark value and prefers using an INCREMENTAL replication strategy.
- Table Name:
conversations - Description:
- Primary Key Column:
id - Replication Strategy:
FULL_TABLE - API Documentation: Link
- Table Name:
conversation_members - Description:
- Primary Key Column: N/A
- Replication Strategy:
FULL_TABLE - API Documentation: Link
- Table Name:
conversation_history - Description:
- Primary Key Column: N/A
- Replication Strategy:
FULL_TABLE - API Documentation: Link
- Table Name:
users - Description:
- Primary Key Column:
id - Replication Strategy:
INCREMENTAL - API Documentation: Link