Skip to content

Part 3 - Tool NRPS: typed endpoints, pagination, filters, and structured errors - #44

Closed
eliknebel wants to merge 16 commits into
masterfrom
v1-part3-tool-nrps
Closed

eliknebel wants to merge 16 commits into
masterfrom
v1-part3-tool-nrps

Conversation

@eliknebel

Copy link
Copy Markdown
Contributor

This PR adds full tool-side NRPS support on top of the core and deep-linking work. It introduces typed NRPS endpoint
parsing, scope enforcement, pagination traversal, filter normalization, structured errors, telemetry, and both
streaming and eager roster retrieval APIs.

This PR should be reviewed and landed after #43

What Changed

  • Added NRPS public APIs:
    • Lti_1p3.Tool.Services.NRPS.from_launch_claim/1
    • Lti_1p3.Tool.Services.NRPS.list_memberships/3
    • Lti_1p3.Tool.Services.NRPS.stream_memberships/3
    • Lti_1p3.Tool.Services.NRPS.fetch_all_memberships/3
  • Refactored legacy fetch_memberships/2 through the stricter NRPS pipeline while preserving its legacy tuple shape
  • Added NRPS support modules for:
    • endpoint typing
    • parser
    • client
    • membership page model
    • scope policy
    • structured errors
    • telemetry
  • Added shared HTTP helpers for reuse across services:
    • Lti_1p3.Services.HTTP.LinkHeader
    • Lti_1p3.Services.HTTP.QueryFilters
  • Added NRPS guide, QA report, utility extraction notes, and requirement matrix docs
  • Added CI coverage for the new HTTP helper tests

Why

The previous implementation was single-page oriented and too loose around scopes, filters, and failure semantics. This
PR makes NRPS usable for production roster retrieval and establishes shared HTTP utilities needed by later service
work.

Reviewer Notes

Focus review on:

  • Link header traversal
  • filter normalization and encoding
  • scope enforcement
  • retry/error metadata
  • API compatibility for fetch_memberships/2

Most of the cumulative diff is inherited from PRs 1 and 2. The incremental review surface is the NRPS modules plus the
shared HTTP paging/filter helpers.

Documentation

  • docs/tool_nrps_guide.md
  • docs/features/tool-nrps/*
  • README.md
  • CHANGELOG.md

@eliknebel eliknebel changed the title Tool NRPS: typed endpoints, pagination, filters, and structured errors Part 3 - Tool NRPS: typed endpoints, pagination, filters, and structured errors Mar 13, 2026
@eliknebel eliknebel closed this Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant