Skip to content

feat: X engagement actions (repost, bookmark, follow, lookup, search) - #40

Merged
alihesari merged 4 commits into
mainfrom
feature/x-engagement
Oct 18, 2026
Merged

alihesari merged 4 commits into
mainfrom
feature/x-engagement

Conversation

@alihesari

Copy link
Copy Markdown
Member

What was added

  • inbox.repost / inbox.unrepost / inbox.bookmark / inbox.unbookmark, mirroring like/unlike; InboxItem gained reposted, bookmarked, can_repost, can_bookmark.
  • accounts.follow_x_user(account_id, user_id) / accounts.unfollow_x_user(...) (body {"user_id"}) returning XFollowResult.
  • accounts.get_x_post(post_id, account_id) returning XPost and accounts.search_x_posts(q, account_id, max_results=None, next_token=None) returning XSearchResult (posts, next_token), kept on accounts next to the other per-account platform extras.
  • XPost, XFollowResult, XSearchResult exported from fopost.
  • README resource table and an Unreleased CHANGELOG entry, including the reconnect note for existing X accounts.

No version bump, no tag.

Tested

uv run pytest (213 passed), uv run ruff check, uv run ruff format --check on touched files, uv run mypy (strict, clean). New respx tests in tests/test_inbox.py and tests/test_accounts.py cover path, method, body/query params and the parsed response.

Downstream

fopost-django and fopost-fastapi do not surface the inbox or the account platform extras, so no change is needed there.

Depends on the API PR in fopost/fopost (feature/x-engagement-actions); merge after it.

@alihesari
alihesari merged commit 74d7948 into main Oct 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant