Skip to content

Docs: No contract ABI documentation and no API versioning strategy — operators cannot integrate safely #195

Description

@k-deejah

Difficulty: Advanced

Problem

1. No machine-readable or human-readable contract interface documentation
docs/api-reference/ covers REST endpoints but has no documentation of the five Soroban contract function signatures, argument types, return types, or error conditions. An operator who wants to call lineproof-queue::enroll_position(identity: Address) -> u32 directly (not via the SDK) must read the Rust source code to understand the calling convention.

2. No API versioning strategy — breaking changes have no deprecation path
All backend REST routes are mounted at /api/queues, /api/enrollments, /api/escrow with no version prefix. There is no /api/v1/ namespace, no Accept: application/vnd.lineproof.v1+json header versioning, and no documented deprecation policy. Any breaking API change silently breaks existing integrations.

3. Research files in research/ are stubs — referenced from the docs but contain no actionable content
research/event-ticketing.md, research/healthcare-waitlists.md, research/product-launches.md, research/university-admissions.md, research/visa-appointment-systems.md are listed in the directory but (from prior analysis) likely contain placeholder stubs. The docs/use-cases.md references these research files as background reading but they contain no actionable technical detail.

Impact: External operators cannot integrate with contracts without reading Rust source. Breaking API changes have no warning mechanism. Research stubs undermine the project's use-case credibility.

Proposed Solution

  • Create docs/api-reference/contracts/ with one markdown file per contract documenting each function: signature, arguments with types, return type, error conditions, and example invocation.
  • Add /api/v1/ version prefix to all backend routes. Serve current routes under both /api/ (with deprecation warning) and /api/v1/.
  • Document API versioning policy in docs/api-reference/versioning.md.
  • Expand research files with 3–5 concrete technical requirements per domain (e.g., healthcare: compliance constraints, visa: batch scheduling constraints).

Acceptance Criteria

  • docs/api-reference/contracts/lineproof-queue.md created with all function signatures
  • docs/api-reference/contracts/lineproof-escrow.md, enrollment.md, identity.md, factory.md created
  • Each contract doc includes: function name, parameters, return type, error panics, example
  • /api/v1/ prefix added to all backend routes
  • Old /api/ routes return Deprecation: true header and forward to v1
  • docs/api-reference/versioning.md created with versioning policy
  • At least one research file expanded with concrete technical requirements

Contributor Note

If assigned, your PR must show a sample contract interface doc for lineproof-queue and explain the route versioning strategy chosen (URL prefix vs header versioning) and why.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignapibackenddocumentationImprovements or additions to documentation

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions