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.

Activity

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

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