NP.Lti13Platform.DeepLinking 1.0.0-preview.26

This is a prerelease version of NP.Lti13Platform.DeepLinking.
dotnet add package NP.Lti13Platform.DeepLinking --version 1.0.0-preview.26
                    
NuGet\Install-Package NP.Lti13Platform.DeepLinking -Version 1.0.0-preview.26
                    
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="NP.Lti13Platform.DeepLinking" Version="1.0.0-preview.26" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NP.Lti13Platform.DeepLinking" Version="1.0.0-preview.26" />
                    
Directory.Packages.props
<PackageReference Include="NP.Lti13Platform.DeepLinking" />
                    
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 NP.Lti13Platform.DeepLinking --version 1.0.0-preview.26
                    
#r "nuget: NP.Lti13Platform.DeepLinking, 1.0.0-preview.26"
                    
#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 NP.Lti13Platform.DeepLinking@1.0.0-preview.26
                    
#: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=NP.Lti13Platform.DeepLinking&version=1.0.0-preview.26&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=NP.Lti13Platform.DeepLinking&version=1.0.0-preview.26&prerelease
                    
Install as a Cake Tool

NP.Lti13Platform.DeepLinking

The IMS Deep Linking spec defines a way that platforms can get content from tools. This project provides an implementation of the spec.

Features

  • Deep linking request message handling
  • Deep linking response handling
  • Content item management

Getting Started

  1. Add the nuget package to your project:

  2. Add implementations of the required interfaces:

public class DeepLinkingResponseDataService: IDeepLinkingResponseDataService
{
    ...
}

public class DeepLinkingRequestDataService: IDeepLinkingRequestDataService
{
    ...
}
  1. Add the required services.
builder.Services
    .AddLti13PlatformCore<CoreDataService>()
    .AddPlatformDeepLinking<DeepLinkingResponseDataService>()
    .WithDefaultDeepLinkingRequestMessageHandler<DeepLinkingRequestDataService>();
  1. Setup the routing for the LTI 1.3 platform endpoints:
app.UseLti13PlatformDeepLinking();

IDeepLinkingResponseDataService

There is no default IDeepLinkingResponseDataService implementation to allow each project to store the data how they see fit.

The IDeepLinkingResponseDataService interface is used to manage the persistence of content items returned by the tool.

All of the internal services are transient and therefore the data service may be added at any scope (Transient, Scoped, Singleton).

IDeepLinkingRequestDataService

There is no default IDeepLinkingRequestDataService implementation to allow each project to store the data how they see fit.

The IDeepLinkingRequestDataService interface is used to retrieve deployment, context, user, and membership information required for processing deep linking requests.

All of the internal services are transient and therefore the data service may be added at any scope (Transient, Scoped, Singleton).

Defaults

Routing

Default routes are provided for all endpoints. Routes can be configured when calling UseLti13PlatformDeepLinking().

app.UseLti13PlatformDeepLinking(config => {
    config.DeepLinkingResponseUrl = "/lti13/deeplinking/{contextId?}"; // {contextId?} is optional
    return config;
});

IDeepLinkingResponseHandler

The IDeepLinkingResponseHandler interface is used to handle the response from the tool.

Recommended: The default handling of the response is to return a placeholder page. It is strongly recommended to provide a custom implementation for a better user experience.

builder.Services
    .AddLti13PlatformCore<CoreDataService>()
    .AddPlatformDeepLinking<DeepLinkingResponseDataService>()
    .WithDeepLinkingResponseHandler<CustomHandler>();

IDeepLinkingConfigService

The IDeepLinkingConfigService interface is used to get the configuration for the deep linking service. The config is used to control how deep link requests are made and how the response will be handled.

There is a default implementation of the IDeepLinkingConfigService interface that uses configuration set up on app start. It will be configured using the IOptions pattern and configuration. The configuration path for the service is Lti13Platform:DeepLinking. A fallback to the current request scheme and host will be used if no ServiceAddress is configured.

Examples

{
    "Lti13Platform": {
        "DeepLinking": {
            "ServiceAddress": "https://<mysite>",
            ...
        }
    }
}

OR

builder.Services.Configure<DeepLinkingConfig>(x => { });

The Default implementation can be overridden by adding a new implementation of the IDeepLinkingConfigService interface.

builder.Services
    .AddLti13PlatformCore<CoreDataService>()
    .AddPlatformDeepLinking<DeepLinkingResponseDataService>()
    .WithDeepLinkingConfigService<CustomDeepLinkingConfigService>();

IDeepLinkingMessageExtension

The IDeepLinkingMessageExtension interface allows for adding custom extensions to deep linking request messages.

builder.Services
    .AddLti13PlatformCore<CoreDataService>()
    .AddPlatformDeepLinking<DeepLinkingResponseDataService>()
    .WithDefaultDeepLinkingRequestMessageHandler<DeepLinkingRequestDataService>()
    .WithDeepLinkingMessageExtension<CustomExtension>();

Configuration

The configuration for the Deep Linking service tells the tools what kinds of things the platform is looking for and how it will handle the items when they are returned.


AcceptPresentationDocumentTargets Default: ["embed", "iframe", "window"]{:csharp}

Defines how the content items will be shown to users (Embedded, Iframe, Window).


AcceptTypes Default: ["file", "html", "image", "link", "ltiResourceLink"]{:csharp}

Defines which types of content items the platform is looking for (File, Html, Image, Link, ResourceLink).


AcceptMediaTypes Default: ["image/*", "text/html"]{:csharp}

Defines which media types the platform is looking for (image/*, text/html).


AcceptLineItem Default: true{:csharp}

Whether the platform in the context of that deep linking request supports or ignores line items included in LTI Resource Link items. False indicates line items will be ignored. True indicates the platform will create a line item when creating the resource link. If the field is not present, no assumption that can be made about the support of line items.


AcceptMultiple Default: true{:csharp}

Whether the platform allows multiple content items to be submitted in a single response.


AutoCreate Default: true{:csharp}

Whether any content items returned by the tool would be automatically persisted without any option for the user to cancel the operation.


ServiceAddress Default: null{:csharp}

The web address where the deep linking responses will be handled. If not set, the current request scheme and host will be used.


ContentItemTypes Default Keys: ["file", "html", "image", "link", "ltiResourceLink"]{:csharp}

A dictionary of type configurations to be used when deserialzing the content items. If not set, the content items will be deserialized as Dictionary<string, JsonElement>{:csharp} objects. Common known content items are already added to this dictionary. Additional types can be added.

builder.Services.Configure<DeepLinkingConfig>(x =>
{
    x.ContentItemTypes.Add((null, "my.custom.type"), typeof(MyCustomType))
});
Product Compatible and additional computed target framework versions.
.NET 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.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on NP.Lti13Platform.DeepLinking:

Package Downloads
NP.Lti13Platform

A platform implementation of the LTI 1.3 spec. Includes the Core, DeepLinking, Assignment and Grade Services, and Name and Role Provisioning Services specs.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-preview.26 42 1/14/2026
1.0.0-preview.25 144 10/27/2025
1.0.0-preview.24 120 10/24/2025
1.0.0-preview.23 97 10/19/2025
1.0.0-preview.22 84 10/19/2025
1.0.0-preview.20 75 10/19/2025
1.0.0-preview.17 145 9/23/2025
1.0.0-preview.16 145 9/23/2025