PolyhydraGames.ScopedAccess 0.1.0

dotnet add package PolyhydraGames.ScopedAccess --version 0.1.0
                    
NuGet\Install-Package PolyhydraGames.ScopedAccess -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PolyhydraGames.ScopedAccess" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PolyhydraGames.ScopedAccess" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="PolyhydraGames.ScopedAccess" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PolyhydraGames.ScopedAccess --version 0.1.0
                    
#r "nuget: PolyhydraGames.ScopedAccess, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PolyhydraGames.ScopedAccess@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PolyhydraGames.ScopedAccess&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=PolyhydraGames.ScopedAccess&version=0.1.0
                    
Install as a Cake Tool

PolyhydraGames.ScopedAccess

Reusable scoped-access and join-code contracts for PolyhydraGames apps.

This package captures the shared pattern used by ChannelCheevos access grants, Batocera resident-agent onboarding, future Kodi/desktop bridges, and player session joins:

join code or bootstrap request -> pending request -> approval queue -> scoped grant -> issued credential -> revoke/expire/audit

Tags

  • polyhydra-games-scoped-access
  • scoped
  • access
  • playback
  • signalr
  • docs

Design rules

  • Human-friendly join codes, such as dbc-z41, are locators/request handles, not long-term bearer secrets.
  • Runtime apps own controllers, UI, SignalR hubs, storage, and deployment.
  • This package owns reusable DTOs, status transitions, scope normalization, join-code formatting, redaction, and small host-pluggable interfaces.
  • Hosts define app-specific subject kinds and scopes, e.g. batocera-agent, kodi-agent, player-session, kodi:playback:control.

Join-code UX and security model

  • Join codes are short-lived locators for a pending request, not bearer secrets.
  • A host should assign a namespace that matches the subject or surface, such as dbc, batocera, kodi, cc, or web.
  • Keep the join-code TTL short enough that it is useful for human handoff but not useful as a replay token after approval.
  • Treat the namespace + code pair as the lookup key and rate-limit validation attempts; the format is intentionally human-sized, so the security boundary comes from expiry, uniqueness, and throttling rather than code length alone.
  • Issue a separate high-entropy credential after approval. Do not reuse the join code as the issued credential, transport token, or session secret.
  • Redact issued credentials in logs and UI summaries; if you need a display form, show a redacted credential or fingerprint, not the full value.

First consumer targets

  • ChannelCheevos access-grant queue and Batocera-style resident-agent approvals.
  • Future Kodi station-agent onboarding.
  • cc-desktopbridge connection approval.
  • Game/player join-code flows.

Consumer recipe

See docs/consumer-recipe.md for the PackageReference pattern and the host-owned endpoint/UI/storage split.

Build

dotnet test -p:RestoreIgnoreFailedSources=true
dotnet pack src/PolyhydraGames.ScopedAccess/PolyhydraGames.ScopedAccess.csproj -c Release -o artifacts/packages
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on PolyhydraGames.ScopedAccess:

Package Downloads
PolyhydraGames.Auth.Abstractions

OAuth contracts and token models shared by PolyhydraGames auth flows.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 15,300 6/11/2026