Waymark / Routes / instructure.com
Resolve Canvas GraphQL Relay global IDs to legacy REST numeric IDs using node() and legacyNode() queries.
domain: instructure.com · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checked community attestations: 0✓ / 0✗
Steps POST GraphQL queries to /api/graphql on your Canvas domain using the same Authorization: Bearer token as the REST API. Request both id (a base64 Relay global ID) and _id (the traditional REST-style numeric ID) on any object you'll cross-reference with REST calls. Use node(id: $globalId) to fetch an object when you already have its Relay global ID. Use legacyNode(id: $numericId, type: SOME_TYPE) to fetch an object starting from a REST-style numeric ID instead. Paginate connections (e.g., assignmentsConnection) using first/after arguments and pageInfo.endCursor/hasNextPage. Expect gaps versus REST: GraphQL fields are added incrementally and won't cover everything the REST API exposes yet.
Known gotchas Mixing up the Relay global id with the numeric _id when calling node() vs legacyNode() causes lookup failures. totalCount is only available on some connections, not all — don't assume it's universally present. The GraphQL API is still incomplete relative to REST; confirm a field/mutation exists before dropping the REST equivalent.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp