Udap.Metadata.Server 0.4.7

There is a newer version of this package available.
See the version list below for details.
dotnet add package Udap.Metadata.Server --version 0.4.7
                    
NuGet\Install-Package Udap.Metadata.Server -Version 0.4.7
                    
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="Udap.Metadata.Server" Version="0.4.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Udap.Metadata.Server" Version="0.4.7" />
                    
Directory.Packages.props
<PackageReference Include="Udap.Metadata.Server" />
                    
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 Udap.Metadata.Server --version 0.4.7
                    
#r "nuget: Udap.Metadata.Server, 0.4.7"
                    
#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 Udap.Metadata.Server@0.4.7
                    
#: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=Udap.Metadata.Server&version=0.4.7
                    
Install as a Cake Addin
#tool nuget:?package=Udap.Metadata.Server&version=0.4.7
                    
Install as a Cake Tool

Udap.Metadata.Server

UDAP logo

📦 Nuget Package: Udap.Client

This package includes a MVC controller, an extension method to load, and an implementation if ICertificateStore as FileCertificateStore so you can get a sample up and running quickly.

Program.cs could be as easy as this example.


using Udap.Common;
using Udap.Metadata.Server;

var builder = WebApplication.CreateBuilder(args);
builder.Services
    .AddControllers()
    .UseUdapMetaDataServer(builder.Configuration);

builder.Services.AddSingleton<ICertificateStore, MyCustomCertificateStore>();

Full Example

Below is a full example. Alternatively the 2023 FHIR® DevDays Tutorial is another great way to learn how to use Udap.Metadata.Server.

Add this package to your FHIR® server or any web api server to.


dotnet new sln -o WebApiProject1
cd WebApiProject1

dotnet new webapi -o WebApi1 -minimal
dotnet sln add ./WebApi1/WebApi1.csproj

cd WebApi1

dotnet add package Udap.Metadata.Server 

Or until a first release use the --prerelease tag.


dotnet add package Udap.Metadata.Server --prerelease

dotnet build

Add UseUdapMetaData to program.cs


 builder.Services
    .AddControllers()
    .AddUdapMetaDataServer(builder.Configuration);

AddUdapMetaDataServer extension will find the UdapMetadataOptions in AppSettings. These settings will match the IssuedCerts settings in UdapFileCertStoreManifest settings below.

Reference Required UDAP Metadata.

Issuer and Subject must match the issued certificates, Subject Alternative Name extension. The issued certificate is the first certificate present in the x5c JWT header.


"UdapMetadataOptions": {
  "UdapVersionsSupported": [ "1" ],
    "UdapProfilesSupported": [ "udap_dcr", "udap_authn", "udap_authz", "udap_to" ],
    "UdapAuthorizationExtensionsSupported": [ "hl7-b2b" ],
    "UdapAuthorizationExtensionsRequired": [ "hl7-b2b" ],
    "ScopesSupported": [ "openid", "system/*.read", "user/*.read", "patient/*.read" ],
    "UdapCertificationsSupported": [ "http://MyUdapCertification", "http://MyUdapCertification2" ],
    "UdapCertificationsRequired": [ "http://MyUdapCertification" ],
    "GrantTypesSupported": [ "authorization_code", "refresh_token", "client_credentials" ],
    //"TokenEndpointAuthSigningAlgValuesSupported": [ "RS256", "RS384", "ES256", "ES384" ],
    //"RegistrationEndpointJwtSigningAlgValuesSupported": [ "RS256", "RS384", "ES256", "ES384" ],
    
    "UdapMetadataConfigs": [
      {
        "Community": "http://localhost",
        "SignedMetadataConfig": {
          "AuthorizationEndPoint": "https://securedcontrols.net:5001/connect/authorize",
          "TokenEndpoint": "https://securedcontrols.net:5001/connect/token",
          "RegistrationEndpoint": "https://securedcontrols.net:5001/connect/register"
        }
      }
    ]
  }

To serve UDAP metadata, certificates will be loaded through an implementation of ICertificatStore. Below is a built-in file-based implementation for lab experiments.


// UDAP CertStore
builder.Services.Configure<UdapFileCertStoreManifest>(builder.Configuration.GetSection("UdapFileCertStoreManifest"));
builder.Services.AddSingleton<ICertificateStore, FileCertificateStore>();

To continue this example, copy the following files from the Udap.PKI.Generator test project output to the following directory structure at the root of the WebApi1 project. Ensure each file's "Copy to Output Directory" is set to copy.

  • CertStore
    • anchors
      • anchorLocalhostCert.cer
    • issued
      • weatherApiClientLocalhostCert.pfx
    • anchors
      • caLocalhostCert.cer

Add configuration to AppSettings to point to the certificates.

Note From AppSettings

UdapMetadataOptions:UdapMetadataConfigs:Community value is the link to UdapFileCertStoreManifest:ResourceServers:Communities.Name. So in this example the community is identified by the name http://localhost. Community names are constrained as a URI


/*   
  Normally put someplace safer like secrets.json or secured database
  and add this to Program.cs.    
*/

"UdapFileCertStoreManifest": {
  "Communities": [
    {
      "Name": "http://localhost",
      "Anchors": [
        {
          "FilePath": "CertStore/anchors/caLocalhostCert.cer"
        }
      ],
      "Intermediates": [
        "CertStore/intermediates/anchorLocalhostCert.cer"
      ],
      "IssuedCerts": [
        {
          "FilePath": "CertStore/issued/weatherApiClientLocalhostCert.pfx",
          "Password": "udap-test"
        }
      ]
    }
  ]    
}

dotnet run

Navigate to http://localhost:5079/.well-known/udap or http://localhost:5079/swagger.

A this point a success would result in a result similar to the following json. Ensure the signed_metadata property contains a signed JWT token.

<details open><summary><a>View Metadata</></summary>


{
  "udap_versions_supported": [
    "1"
  ],
  "udap_profiles_supported": [
    "udap_dcr",
    "udap_authn",
    "udap_authz"
  ],
  "udap_authorization_extensions_supported": [
    "hl7-b2b"
  ],
  "udap_authorization_extensions_required": [
    "hl7-b2b"
  ],
  "udap_certifications_supported": [
    "http://MyUdapCertification",
    "http://MyUdapCertification2"
  ],
  "udap_certifications_required": [
    "http://MyUdapCertification"
  ],
  "grant_types_supported": [
    "client_credentials"
  ],
  "scopes_supported": [
    "openid",
    "system/Patient.read",
    "system/AllergyIntolerance.read",
    "system/Procedures.read",
    "system/Observation.read"
  ],
  "authorization_endpoint": "https://securedcontrols.net/connect/authorize",
  "token_endpoint": "https://securedcontrols.net/connect/token",
  "token_endpoint_auth_methods_supported": [
    "private_key_jwt"
  ],
  "token_endpoint_auth_signing_alg_values_supported": [
    "RS256"
  ],
  "registration_endpoint": "https://securedcontrols.net/connect/register",
  "registration_endpoint_jwt_signing_alg_values_supported": [
    "RS256"
  ],
  "signed_metadata": "eyJhbGciOiJSUzI1NiIsIng1YyI6WyJNSUlGR3pDQ0JBT2dBd0lCQWdJSUZSVVJqcWdlTkdNd0RRWUpLb1pJaHZjTkFRRUxCUUF3Z2JNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTVJJd0VBWURWUVFIREFsVFlXNGdSR2xsWjI4eEV6QVJCZ05WQkFvTUNrVk5VaUJFYVhKbFkzUXhQekE5QmdOVkJBc01ObFJsYzNRZ1VFdEpJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNUlDaGpaWEowY3k1bGJYSmthWEpsWTNRdVkyOXRLVEVsTUNNR0ExVUVBd3djUlUxU0lFUnBjbVZqZENCVVpYTjBJRU5zYVdWdWRDQlRkV0pEUVRBZUZ3MHlNakE1TVRVeU1ETXpOVEphRncweU16QTVNVFV5TURNek5USmFNSUdwTVFzd0NRWURWUVFHRXdKVlV6RVBNQTBHQTFVRUNBd0dUM0psWjI5dU1TZ3dKZ1lEVlFRS0RCOVRkWEpsYzJOeWFYQjBjeUJNVEVNZ0tITmxiR1lnWVhOelpYSjBaV1FwTVRNd01RWURWUVFMRENwVlJFRlFJRlJsYzNRZ1EyVnlkR2xtYVdOaGRHVWdUazlVSUVaUFVpQlZVMFVnVjBsVVNDQlFTRWt4S2pBb0JnTlZCQU1NSVdoMGRIQnpPaTh2Wm1ocGNteGhZbk11Ym1WME9qY3dNVFl2Wm1ocGNpOXlORENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFJQkgrSUtIRUJ4SDIyN09BYkRsTGYxS0k4b1UxZE8vZmp2ZzFQbkJNSlQ0RjQrL1BFWmlOdkRhS0dFT09lOXVvTmVMdGlEWEt0aFVQSEdEMm54RXVSL2lQeXluVmFETmtHYkZvc2d3c01JMXU4bGFJbHNwQWVrR2d5VWlPZzB3a1NRbEF4TjJuaFVqR3dMbjllUzBPWld0eGhUcHBNNEFGbElwY1hackFLeTlOZm53S2NGeUtvUmg3Zlo4bDlSR1hHeFl6ZXh2ejJ0LzhCbG5xb3ZQODZlWktHaFBxTTlFTGZPNTc4R1UrNWJCcFNqWUdsenhwemVnanZaUkR5bnBVbEJBdEtvWDBOdXh6ZjJ6SURvOVZwaldoVG9TKzZ0eDZJRFVNZVdEZHZjQytPQnNTNjNUdisxN2VFSVdpRjlGb0xNYUNUZXJRMFluaWlwVGQ3NDdGT2NDQXdFQUFhT0NBVGt3Z2dFMU1Ga0dDQ3NHQVFVRkJ3RUJCRTB3U3pCSkJnZ3JCZ0VGQlFjd0FvWTlhSFIwY0RvdkwyTmxjblJ6TG1WdGNtUnBjbVZqZEM1amIyMHZZMlZ5ZEhNdlJVMVNSR2x5WldOMFZHVnpkRU5zYVdWdWRGTjFZa05CTG1OeWREQWRCZ05WSFE0RUZnUVVuMDUzdk9jYVdINzRsR1c4VVlYazk4WU5nOUV3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlNqbFcxcnZTdFJ6ZUhQNVpCdjF5WlB2OTArM2pCTUJnTlZIUjhFUlRCRE1FR2dQNkE5aGp0b2RIUndPaTh2WTJWeWRITXVaVzF5WkdseVpXTjBMbU52YlM5amNtd3ZSVTFTUkdseVpXTjBWR1Z6ZEVOc2FXVnVkRk4xWWtOQkxtTnliREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdMQVlEVlIwUkJDVXdJNFloYUhSMGNITTZMeTltYUdseWJHRmljeTV1WlhRNk56QXhOaTltYUdseUwzSTBNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUI1VkswWkhWZXpMdUYvY2FieW1ZOWFLa0pENXhxY0JWVFNjeGVYQ3NMaWloLzhFS0NwdmVVSWl6NDJ5U3JtbHBJS2ljby95c1ByWHZKbU8vVnJHMjFWbnpZNkZKQjE3empXbkQ2bncvRnRFNXU0V2laTTE2aGcxUzJpa01FYXMzRjU3L3FrYjNLMzdXUm1IVDdickphUUtGZFYzWWRrVFloZ1cvbjFTellqWnEwZ0w0bDZWcVBSeCsxSWpaUkQxNWowZVFOV1hrR1lvWmlsR3duSFFJOUhKSGxadmMxZ1VLeFl2dDhwR2hlL0ZwZmF0cW9QVlhVY09CRVlBTHNrNmdlUDBhR0Z1M0xQa3NxdjZpZTM2M01tZWp5WEtxeE1uUThHcUR1bVNBU1ZhbDhyVmw4ZjE1NzlwUDc4aGxDYWNzam4zdTBnNVJLRDVPUk4rQTlJTTRDMyJdfQ.eyJpc3MiOiJodHRwczovL3N0YWdlLmhlYWx0aHRvZ28ubWU6ODE4MSIsInN1YiI6Imh0dHBzOi8vc3RhZ2UuaGVhbHRodG9nby5tZTo4MTgxIiwiaWF0IjoxNjc2OTM3NjI3LCJleHAiOjE2NzY5Mzc2ODcsImp0aSI6Ik95N0RaenVhXzBYbDhEaFNRXzVONzFxeHFBcllLdEI3OUdmRkVGQVFaUkUiLCJhdXRob3JpemF0aW9uX2VuZHBvaW50IjoiaHR0cHM6Ly9zZWN1cmVkY29udHJvbHMubmV0L2Nvbm5lY3QvYXV0aG9yaXplIiwidG9rZW5fZW5kcG9pbnQiOiJodHRwczovL3NlY3VyZWRjb250cm9scy5uZXQvY29ubmVjdC90b2tlbiIsInJlZ2lzdHJhdGlvbl9lbmRwb2ludCI6Imh0dHBzOi8vc2VjdXJlZGNvbnRyb2xzLm5ldC9jb25uZWN0L3JlZ2lzdGVyIn0.Y9qWVQFs9HXWipN8YDrH7gf89FoA0V7f3p9vqc6bPuqrcI0B6wgqZ2ZC3FYi46nGvpe6G_H20edXYR7zIHqcXqhtjfYNmCYoH-ceVwvq6kCAm0c4v8BXN23SM1Eh72_481Bbf7PidHUzcAIOn7fJ9DAk-LiVsT9aa7TD2Aj11cLC5ZiuoHyLCOaf6sjK-yX707ov313TEQREgLbSnl-YTwbIgmm_h3fW4eSZH2eszdr3a3Q8BWKKVBphWos5TvQ77WsYfTt60JfFHEXO8Psq7n4bGm2ZcNApzoa9PIuimmzeN8vjyaLBu7lDi93cc9jKphYz3KpLh_-8ruHF2HqmNw"
}

</details> <br/>

UDAP Resource Server Examples

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.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Udap.Metadata.Server:

Package Downloads
Udap.Metadata.Vonk.Server

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.5.16 153 10/13/2025
0.5.15 152 10/12/2025
0.5.14 69 10/10/2025
0.5.13 90 10/10/2025
0.5.12 95 10/10/2025
0.5.11 97 10/10/2025
0.5.10 172 9/14/2025
0.5.9 172 8/19/2025
0.5.8 166 8/18/2025
0.5.7 180 8/8/2025
0.5.5 164 7/15/2025
0.5.4 171 7/14/2025
0.5.3 127 7/11/2025
0.5.2 170 7/10/2025
0.5.1 165 7/9/2025
0.5.0 153 7/6/2025
0.4.12 109 7/5/2025
0.4.11 284 6/13/2025
0.4.10 319 6/12/2025
0.4.9 323 6/12/2025
0.4.8 176 6/3/2025
0.4.7 245 4/18/2025
0.4.6 353 3/17/2025
0.4.5 459 3/4/2025
0.4.4 215 1/15/2025
0.4.3 157 1/14/2025
0.4.2 167 1/14/2025
0.4.1 273 1/13/2025
0.4.0 199 12/14/2024
0.3.96 219 11/6/2024
0.3.95 154 11/2/2024
0.3.94 155 10/31/2024
0.3.93 338 10/13/2024
0.3.92 158 10/13/2024
0.3.91 153 10/10/2024
0.3.89 147 10/10/2024
0.3.87 141 10/5/2024
0.3.86 161 10/5/2024
0.3.85 154 10/4/2024
0.3.84 161 10/3/2024
0.3.83 160 10/3/2024
0.3.82 179 9/20/2024
0.3.81 171 9/19/2024
0.3.80 157 9/19/2024
0.3.79 159 9/19/2024
0.3.78 149 9/19/2024
0.3.77 155 9/17/2024
0.3.76 149 9/17/2024
0.3.75 161 9/12/2024
0.3.74 177 9/12/2024
0.3.73 175 9/10/2024
0.3.72 162 9/7/2024
0.3.71 177 9/5/2024
0.3.70 173 9/5/2024
0.3.69 177 9/5/2024
0.3.68 173 9/4/2024
0.3.67 156 9/4/2024
0.3.66 164 9/4/2024
0.3.65 172 9/4/2024
0.3.64 174 9/2/2024
0.3.63 168 8/31/2024
0.3.62 159 8/29/2024
0.3.61 164 8/28/2024
0.3.60 144 8/2/2024
0.3.59 152 8/1/2024
0.3.58 151 8/1/2024
0.3.57 167 7/19/2024
0.3.56 160 7/19/2024
0.3.54 170 7/18/2024
0.3.53 167 7/15/2024
0.3.52 157 7/15/2024
0.3.51 169 7/12/2024
0.3.50 170 7/1/2024
0.3.49 169 7/1/2024
0.3.48 205 5/22/2024
0.3.47 178 5/15/2024
0.3.46 158 5/14/2024
0.3.45 163 5/12/2024
0.3.44 168 5/12/2024
0.3.43 159 5/12/2024
0.3.42 157 5/12/2024
0.3.41 186 5/6/2024
0.3.40 184 5/4/2024
0.3.39 153 5/1/2024
0.3.38 223 4/30/2024
0.3.37 167 4/11/2024
0.3.36 177 4/10/2024
0.3.35 171 4/9/2024
0.3.34 185 4/8/2024
0.3.33 181 4/7/2024
0.3.32 177 4/5/2024
0.3.31 171 4/4/2024
0.3.30 177 4/4/2024
0.3.29 169 4/3/2024
0.3.28 180 4/3/2024
0.3.27 166 4/2/2024
0.3.26 171 4/2/2024
0.3.25 166 4/2/2024
0.3.24 263 3/24/2024
0.3.22 207 3/6/2024
0.3.21 200 3/6/2024
0.3.20 173 3/5/2024
0.3.19 186 3/2/2024
0.3.18 191 3/2/2024
0.3.13 190 3/1/2024
0.3.12 166 2/24/2024
0.3.10 175 2/14/2024
0.3.8 183 2/11/2024
0.3.7 177 2/11/2024
0.3.6 163 2/10/2024
0.3.5 178 2/10/2024
0.3.4 164 2/10/2024
0.3.2 182 2/10/2024
0.3.0 183 1/31/2024
0.2.21 286 10/24/2023
0.2.20 149 10/23/2023
0.2.19 192 10/20/2023
0.2.18 186 10/11/2023
0.2.17 196 10/5/2023
0.2.16 167 9/21/2023
0.2.15 172 9/21/2023
0.2.14 176 9/20/2023
0.2.13 168 9/20/2023
0.2.12 176 9/20/2023
0.2.11 175 9/19/2023
0.2.10 181 9/13/2023
0.2.9 264 8/26/2023
0.2.8 209 8/18/2023
0.2.7 231 8/15/2023
0.2.6 228 8/12/2023
0.2.5 232 8/11/2023
0.2.4 227 8/10/2023
0.2.3 296 8/2/2023
0.2.2 286 8/1/2023
0.2.1 282 7/25/2023
0.2.0 293 7/16/2023
0.1.24 263 5/26/2023
0.1.23 287 5/22/2023
0.1.22 266 5/22/2023
0.1.21 289 5/21/2023
0.1.20 267 5/20/2023
0.1.17 232 5/9/2023
0.1.16 207 5/6/2023
0.1.15 241 5/4/2023
0.1.14 248 5/2/2023
0.1.12 236 5/1/2023
0.1.11 233 4/29/2023
0.1.9 256 4/29/2023
0.1.8 241 4/29/2023
0.1.7 243 4/28/2023
0.1.6 235 4/27/2023
0.1.5 233 4/27/2023
0.1.4 244 4/25/2023
0.1.3 260 4/23/2023
0.1.2 250 4/22/2023
0.1.1 268 4/22/2023
0.0.4-preview040 219 4/21/2023
0.0.4-preview039 214 4/13/2023
0.0.4-preview038 211 4/11/2023
0.0.4-preview037 218 4/7/2023
0.0.4-preview036 211 3/31/2023
0.0.4-preview035 220 3/31/2023
0.0.4-preview034 214 3/31/2023
0.0.4-preview033 212 3/30/2023
0.0.4-preview032 275 3/19/2023
0.0.4-preview029 214 3/18/2023
0.0.4-preview028 214 3/15/2023
0.0.4-preview027 211 3/13/2023
0.0.4-preview026 196 3/12/2023
0.0.4-preview025 196 3/10/2023
0.0.4-preview024 221 3/9/2023
0.0.4-preview022 225 3/9/2023
0.0.4-preview021 223 3/7/2023
0.0.4-preview020 212 3/7/2023
0.0.4-preview019 212 3/4/2023
0.0.4-preview018 218 3/4/2023
0.0.4-preview017 218 3/4/2023
0.0.4-preview016 221 3/1/2023
0.0.4-preview015 217 2/28/2023
0.0.4-preview014 227 2/23/2023
0.0.4-preview013 219 2/23/2023
0.0.4-preview012 236 2/21/2023
0.0.4-preview011 229 2/20/2023
0.0.4-preview010 217 2/20/2023
0.0.4-preview009 222 2/19/2023
0.0.4-preview008 222 2/14/2023
0.0.4-preview007 207 2/10/2023
0.0.4-preview006 219 2/8/2023
0.0.4-preview005 220 2/8/2023
0.0.4-preview004 225 2/7/2023
0.0.4-preview003 215 2/7/2023
0.0.4-preview002 198 2/7/2023
0.0.4-preview001 216 2/3/2023
0.0.4-preview000 243 2/2/2023
0.0.3-preview032 229 2/1/2023
0.0.3-preview031 232 2/1/2023
0.0.3-preview030 233 1/30/2023
0.0.3-preview029 234 1/21/2023
0.0.3-preview028 240 1/19/2023
0.0.3-preview027 223 1/18/2023
0.0.3-preview026 227 1/16/2023
0.0.3-preview025 229 1/15/2023
0.0.3-preview024 225 1/15/2023
0.0.3-preview020 230 1/15/2023
0.0.3-preview019 242 1/11/2023
0.0.3-preview018 227 1/11/2023
0.0.3-preview017 230 1/7/2023
0.0.3-preview016 232 1/7/2023
0.0.3-preview015 232 1/6/2023
0.0.3-preview014 236 1/6/2023
0.0.3-preview013 225 1/6/2023
0.0.3-preview012 224 1/6/2023
0.0.3-preview011 227 1/6/2023
0.0.3-preview010 230 1/3/2023
0.0.3-preview009 233 1/3/2023
0.0.3-preview008 248 1/2/2023
0.0.3-preview007 241 1/2/2023
0.0.3-preview006 230 1/2/2023
0.0.3-preview005 222 1/2/2023
0.0.3-preview004 229 1/1/2023
0.0.3-preview003 221 12/31/2022
0.0.3-preview002 261 12/28/2022
0.0.3-preview001 257 12/21/2022
0.0.3-preview000 226 11/29/2022
0.0.2-preview003 233 11/4/2022
0.0.2-preview002 223 11/4/2022
0.0.2-preview000 263 11/4/2022
0.0.1-preview3373625764 266 11/1/2022
0.0.1-preview002 261 11/4/2022
0.0.1-preview001 261 11/4/2022