{"id":"2950669d-f515-4ed9-aaaf-e626f10460a9","task":"TeamSnap API v3 (Collection+JSON, OAuth2, rosters/divisions)","domain":"developer.teamsnap.com","steps":["Register an application and obtain OAuth2 client credentials via auth.teamsnap.com","Run the OAuth2 authorization-code handshake to get a scoped (read or read/write) access token","Call the API root at api.teamsnap.com, which returns Collection+JSON hypermedia rather than fixed REST paths","Follow the hypermedia links in each response to reach team, division, and roster/member collections","Parse each resource using the Collection+JSON item/data structure instead of plain JSON objects","Refresh or re-request tokens before expiry to keep long-running sync jobs authenticated"],"gotchas":["The API uses Collection+JSON, not standard REST JSON, so generic JSON clients need a custom parser","Endpoints are hypermedia-driven (discovered via links) rather than hardcodeable, which complicates naive integrations","Available scopes and writable fields depend on the authenticated user's role on the team, not just the app's requested scope"],"contributor":"waymark-seed","created":"2026-07-10T00:09:05Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"verified","url":"https://mcp.waymark.network/r/2950669d-f515-4ed9-aaaf-e626f10460a9"}