YouVersion.UsfmReferences 3.1.1

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package YouVersion.UsfmReferences --version 3.1.1
                    
NuGet\Install-Package YouVersion.UsfmReferences -Version 3.1.1
                    
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="YouVersion.UsfmReferences" Version="3.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="YouVersion.UsfmReferences" Version="3.1.1" />
                    
Directory.Packages.props
<PackageReference Include="YouVersion.UsfmReferences" />
                    
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 YouVersion.UsfmReferences --version 3.1.1
                    
#r "nuget: YouVersion.UsfmReferences, 3.1.1"
                    
#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 YouVersion.UsfmReferences@3.1.1
                    
#: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=YouVersion.UsfmReferences&version=3.1.1
                    
Install as a Cake Addin
#tool nuget:?package=YouVersion.UsfmReferences&version=3.1.1
                    
Install as a Cake Tool

YouVersion Platform SDK for .NET

CI License: MIT

An unofficial .NET SDK for the YouVersion Platform REST API — typed HTTP clients, OAuth/PKCE authentication, and Blazor components for browsing Bible versions, reading passages, and managing highlights.

Not affiliated with or endorsed by YouVersion / Life.Church. This is an independent, community implementation built against YouVersion's public Platform API.

Packages

Package Description
YouVersion.Platform.API.Models Zero-dependency domain model types (Versions, Books, Chapters, Verses, Passages, Highlights).
YouVersion.Platform.API Typed HTTP clients, OAuth+PKCE, caching decorators, resilience/rate-limiting pipeline, DI wiring.
YouVersion.Platform.SDK.Services Business-logic services (VersionService, PassageService, BookService, HighlightService, BibleReaderStateService) sitting between the raw API client and the UI layer.
YouVersion.Platform.SDK.Components Blazor components: version/book/chapter/verse pickers, BibleReader, click-to-highlight VerseComponent, YouVersionAuth.
YouVersion.UsfmReferences Independent, unofficial C# port of youversion/usfm-references for parsing/validating USFM scripture references. Versioned separately from the Platform.* packages; documented in this README rather than its own.

See each package's own README (linked above, and published alongside it on NuGet) for installation and usage details.

Which package(s) do I need?

If you want to... Install
Call the Platform API directly (versions, passages, highlights) from a backend, console app, Azure Function, etc. — no UI YouVersion.Platform.API.Models + YouVersion.Platform.API
Sign users in via OAuth/PKCE and call the API on their behalf, still with no UI Same as above — OAuth lives in Platform.API. See Platform.API/README.md and the OAuth/PKCE guide.
Build your own UI (not Blazor, or a custom Blazor UI) on top of ready-made business logic (highlight toggling, reader state, etc.) instead of raw HTTP calls Add YouVersion.Platform.SDK.Services
Build a Blazor app and want ready-made UI — pickers, BibleReader, click-to-highlight, the YouVersionAuth sign-in widget YouVersion.Platform.SDK.Components (pulls in Services, API, and Models transitively — just install this one)
Parse or validate USFM scripture references, unrelated to the Platform API YouVersion.UsfmReferences only

In short: install the highest package in the list that matches what you're building — its NuGet dependencies pull in everything below it automatically. Only reach for Platform.API / Platform.SDK.Services directly if you're deliberately building your own UI layer instead of using Platform.SDK.Components.

Architecture

Platform.API.Models        (POCO/records, zero dependencies)
        ^
        |
Platform.API                (typed HTTP clients, OAuth+PKCE, caching decorators, DI wiring)
        ^
        |
Platform.SDK.Services        (service abstractions + BibleReaderStateService)
        ^
        |
Platform.SDK.Components      (Razor components: pickers, BibleReader, YouVersionAuth)
        ^
        |
PlatformTestApp              (Blazor Server sample host, OAuth endpoints, demo pages)

Dependency direction is enforced automatically, not just by convention: an architecture-fitness test (Platform.API.Tests/Architecture/ApiClientBoundaryTests.cs) fails the build if PlatformTestApp / Platform.SDK.Components reference Platform.API client types directly instead of going through Platform.SDK.Services.

PlatformTestApp is a working sample host demonstrating two consumption patterns — the all-in-one <BibleReader> component (/) and manual step-by-step composition (/custom-reader) — plus the full OAuth/PKCE sign-in flow.

Quickstart

dotnet add package YouVersion.Platform.API.Models
dotnet add package YouVersion.Platform.API
builder.Services.AddYouVersionApiClients(options =>
{
    options.AppKey = builder.Configuration["YouVersionApi:AppKey"]!;
});

For the full Blazor UI layer (pickers, reader, highlighting) add YouVersion.Platform.SDK.Components instead — it pulls in Services and API transitively. See Platform.API/README.md for OAuth setup and Platform.SDK.Components/README.md for the component walkthrough.

Versioning & Releases

Package versions are derived automatically from git tags via MinVer (Directory.Build.props) — there is no hand-edited version number to keep in sync across five projects. To cut a release: tag the commit vX.Y.Z (e.g. v1.0.0) and push the tag; publishing to NuGet.org happens via .github/workflows/nuget-publish.yml, triggered by publishing a GitHub Release against that tag. Untagged commits build as 0.0.0-alpha.0.N prereleases automatically — safe to build and test locally or in CI, but not intended to be published.

YouVersion.UsfmReferences carries its own explicit <Version> (not MinVer-derived) since it tracks the upstream Python library's release cadence independently of the Platform.* packages.

Status: no tagged release has been cut yet — every package currently builds as a 0.0.0-alpha prerelease. The v1.0.0 tag is the remaining step before these packages are consumable from NuGet.org.

Building & testing

dotnet build
dotnet test

CI (.github/workflows/ci.yml) builds each library in dependency order, packs them to a local NuGet feed, runs the full test suite, and builds PlatformTestApp against the packed output — so the sample app exercises the same NuGet-consumer experience real consumers will get, not just project references.

License

MIT — see LICENSE.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated

Initial .NET release. Feature-equivalent port of usfm-references 3.1.1.