Skip to content

feat: Official Python SDK #613

Closed

Description

@joelpeace48-cell

Background & current state

A TypeScript SDK is planned (NEW-085/#537), but data/ops/scripting users often work in Python. There's no Python client for the REST API.

Goal

Publish a typed Python SDK for the Trivela REST API with parity for core read/write flows.

Technical design

  • Package trivela (PyPI) generated/maintained from backend/openapi.yaml (e.g., via openapi-python-client) plus ergonomic wrappers: campaigns list/get/create, allowlist proof, stats, auth (API key + SEP-10 token).
  • Typed models, cursor-pagination helpers, retries with idempotency keys (NEW-031), typed errors.

Edge cases

  • Async + sync variants (or document one).
  • Pagination over large lists.
  • Auth token refresh (SEP-10).
  • API version pinning.

Task breakdown

  • Generate base client from OpenAPI; add wrappers + auth.
  • Retries/idempotency/pagination helpers.
  • pytest suite + example script.
  • PyPI publish workflow + docs.

Acceptance criteria

  • Parity with core SDK read/write flows; published to PyPI.

Testing & verification

  • pytest suite against a mock/local server; example script runs in CI.

Out of scope

  • Contract signing in Python (REST-focused).

Dependencies / related

  • Mirrors NEW-085; uses OpenAPI codegen (NEW-088).

Difficulty: medium · Effort: M · dx

Activity

  1. ItunuOni commented on Jun 25, 2026

    @ItunuOni

    @ItunuOni has applied to work on this issue as part of the Stellar Wave Program's 6th wave.

    Hi there maintainer, i would like to work on this issue.

    ℹ️ Repo Maintainers: To accept this application, review their application or assign @ItunuOni to this issue.

  2. kulayddon commented on Jun 25, 2026

    @kulayddon
    Contributor

    @kulayddon has applied to work on this issue as part of the Stellar Wave Program's 6th wave.

    This one caught my eye maintainer. I'll implement it carefully, watch for the edge cases, and align with your existing conventions instead of doing it my own way. I keep PRs small and communicate early. Please assign me sir.

    ℹ️ Repo Maintainers: To accept this application, review their application or assign @kulayddon to this issue.

  3. grantfox-oss commented on Jun 25, 2026

    @grantfox-oss

    🦊 GrantFox — @kulayddon has been assigned to this issue as part of the Official Campaign campaign!

    Next steps:

    1. Open a Pull Request referencing this issue (e.g., Closes #613)
    2. Your PR will be reviewed by the FinesseStudioLab maintainers

    Good luck! Track your progress on GrantFox.

  4. drips-wave commented on Jun 25, 2026

    @drips-wave

    Congratulations, @kulayddon! 🎉 Your application was accepted by the repo's maintainers, and the issue is due on June 30, 2026.

    🧑‍💻 @kulayddon: Please resolve the issue such that the repo's maintainers have enough time to review your contribution before the due date. You'll earn Points for completing the issue on-time, which will make you eligible for a share of the Stellar Wave Program's reward pool.

    Warning

    When opening a PR, please link it to this issue to ensure it gets tracked accurately. Points are awarded when this issue is marked as completed by the maintainer.

    🤠 Repo maintainers: Please keep an eye on the contributor's progress and review their work before the due date. You can manage this issue, including adjusting its complexity and points, here.

    🌊 Happy Wave 🌊

  5. added a commit that references this issue on Jun 26, 2026
    289fd64
  6. grantfox-oss commented on Jun 26, 2026

    @grantfox-oss

    🎉 This issue has been marked as completed on GrantFox as part of the Official Campaign campaign!

    @kulayddon's PR #696 was approved and merged by @joelpeace48-cell.

    🏆 @kulayddon: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (261 total points). Track your full progress on GrantFox.

    👏 Great work, @kulayddon! Keep contributing to FinesseStudioLab.

  7. drips-wave commented on Jun 26, 2026

    @drips-wave

    This issue has been completed by @kulayddon as part of the Stellar Wave Program's 6th Wave 🥳

    😎 @kulayddon: You earned 200 Points for completing this issue! After the current Wave ends, you'll be eligible for a percentage of the Wave's reward pool based on the percentage of total points you've earned. Learn more here. You can also Leave a review to share your experience working on this issue.

    🧑‍💻 Repo maintainers: How'd the contributor do? Leave a review to share your experience working with them.

  8. added 4 commits that reference this issue on Jun 30, 2026
    56f2629
    3a72109
    6d75e6c
    3929cec
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programdifficulty: mediumModerate complexitydxDeveloper experienceenhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions