Skip to content

Connect Discover: define the public listing contract and open read API #122

Description

@robinbraemer

Human need

Every Connect discovery surface needs the same stable, open answer to “which owner-published endpoints match this player?” Third parties should not need to scrape the website or obtain endpoint credentials.

Outcome

Define and ship a versioned, unauthenticated, read-only public directory API and canonical listing schema for published Connect endpoints.

Primary implementation areas: minekube/website for the product read model/API, minekube/moxy for timestamped reachability input, and minekube/connect for public documentation.

Contract

  • Ordinary HTTPS JSON with a published OpenAPI contract; generated clients are optional conveniences.
  • Stable opaque public listing IDs and owner-selected slugs that are not internal database IDs.
  • Cursor pagination with deterministic ordering.
  • Search plus fixed facets for category, language, edition, Minecraft version, vanilla/modded, loader/modpack compatibility, and online/freshness state.
  • Detail lookup, taxonomy discovery, and capability/version negotiation.
  • ETag, Last-Modified, Cache-Control, conditional requests, CORS, bounded anonymous rate limits, and documented error envelopes.
  • A clear additive-change, deprecation, and API-version policy.

Privacy boundary

Responses must be derived from explicit publication state, never directly from active connector registration. Do not expose tokens, private endpoints, organizations, internal IDs, IPs, connector/libp2p topology, sessions, player identities, friend presence, raw votes, or precise historical activity.

Acceptance criteria

  • A contract fixture and threat model exist before implementation.
  • Search, detail, facets, pagination, filtering, sorting, caching, rate limiting, and error behavior are covered by executable contract tests.
  • Public reads work without an account, cookie, API key, endpoint token, or Minekube-specific SDK.
  • Published records contain verified addresses, compatibility, and timestamped coarse status from authoritative sources.
  • Unpublished and moderation-removed records return the documented non-enumerable response and disappear from every page/cache/feed within the stated bound.
  • Identifier guessing, malformed filters, oversized pages, cache poisoning, scraping bursts, and stale status are tested.
  • OpenAPI documentation and minimal curl, Java/Kotlin, Go, and TypeScript examples are public.
  • A version skew test proves an older supported client ignores additive fields and receives an actionable response for unsupported breaking versions.
  • SLOs cover API availability, p95 latency, cache freshness, status freshness, and delisting propagation.

Non-goals

  • Endpoint management or token-bearing operations in the anonymous API.
  • Direct access to Moxy's internal registry or database.
  • Publishing all active endpoints.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: connect-discoverOpen discovery, directory API, search, and listing surfaces for public Connect endpointsenhancementNew feature or requeststatus: researchRequires product or technical validation before implementation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions