System.ClientModel 1.1.0-beta.2

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved
This is a prerelease version of System.ClientModel.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package System.ClientModel --version 1.1.0-beta.2
NuGet\Install-Package System.ClientModel -Version 1.1.0-beta.2
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="System.ClientModel" Version="1.1.0-beta.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add System.ClientModel --version 1.1.0-beta.2
#r "nuget: System.ClientModel, 1.1.0-beta.2"
#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.
// Install System.ClientModel as a Cake Addin
#addin nuget:?package=System.ClientModel&version=1.1.0-beta.2&prerelease

// Install System.ClientModel as a Cake Tool
#tool nuget:?package=System.ClientModel&version=1.1.0-beta.2&prerelease

System.ClientModel library for .NET

System.ClientModel contains building blocks for communicating with cloud services. It provides shared primitives, abstractions, and helpers for .NET service client libraries.

System.ClientModel allows client libraries built from its components to expose common functionality in a consistent fashion, so that once you learn how to use these APIs in one client library, you'll know how to use them in other client libraries as well.

Source code | Package (NuGet)

Getting started

Typically, you will not need to install System.ClientModel. it will be installed for you when you install one of the client libraries using it.

Install the package

Install the client library for .NET with NuGet.

dotnet add package System.ClientModel

Prerequisites

None needed for System.ClientModel.

Authenticate the client

The System.ClientModel package provides a KeyCredential type for authentication.

Key concepts

The main shared concepts of System.ClientModel include:

  • Configuring service clients (ClientPipelineOptions).
  • Accessing HTTP response details (ClientResult, ClientResult<T>).
  • Exceptions for reporting errors from service requests in a consistent fashion (ClientResultException).
  • Customizing requests (RequestOptions).
  • Providing APIs to read and write models in different formats (ModelReaderWriter).

Examples

Send a message using the MessagePipeline

A very basic client implementation might use the following approach:

ApiKeyCredential credential = new ApiKeyCredential(key);
ApiKeyAuthenticationPolicy authenticationPolicy = ApiKeyAuthenticationPolicy.CreateBearerAuthorizationPolicy(credential);
ClientPipeline pipeline = ClientPipeline.Create(pipelineOptions, authenticationPolicy);

PipelineMessage message = pipeline.CreateMessage();
message.Apply(requestOptions);
message.MessageClassifier = PipelineMessageClassifier.Create(stackalloc ushort[] { 200 });

PipelineRequest request = message.Request;
request.Method = "GET";
request.Uri = new Uri("https://www.example.com/");
request.Headers.Add("Accept", "application/json");

pipeline.Send(message);
Console.WriteLine(message.Response.Status);

Read and write persistable models

As a library author you can implement IPersistableModel<T> or IJsonModel<T> which will give library users the ability to read and write your models.

Example writing an instance of a model.

InputModel model = new InputModel();
BinaryData data = ModelReaderWriter.Write(model);

Example reading a model from json

string json = @"{
  ""x"": 1,
  ""y"": 2,
  ""z"": 3
}";
OutputModel? model = ModelReaderWriter.Read<OutputModel>(BinaryData.FromString(json));

Troubleshooting

You can troubleshoot System.ClientModel-based clients by inspecting the result of any ClientResultException thrown from a pipeline's Send method.

Next steps

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (88)

Showing the top 5 NuGet packages that depend on System.ClientModel:

Package Downloads
Azure.Core The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This is the implementation of the Azure Client Pipeline

Azure.ResourceManager The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Microsoft Azure Resource Manager client SDK for Azure resources.

Azure.AI.OpenAI The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Azure's official .NET library for OpenAI inference that supports Completions, Chat, and Embeddings. Works with Azure OpenAI resources as well as the non-Azure OpenAI endpoint.

Azure.ResourceManager.Resources The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Microsoft Azure Resource Manager client SDK for Azure resource provider Resources.

Azure.ResourceManager.Storage The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Microsoft Azure management client SDK for Azure resource provider Microsoft.Storage.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on System.ClientModel:

Repository Stars
Azure/autorest.csharp
Extension for AutoRest (https://github.com/Azure/autorest) that generates C# code
Version Downloads Last updated
1.1.0-beta.3 819 4/5/2024
1.1.0-beta.2 1,599 2/29/2024
1.1.0-beta.1 1,036 2/1/2024
1.0.0 4,203,456 1/3/2024
1.0.0-beta.4 460 3/12/2024
1.0.0-beta.3 2,702 1/4/2024
1.0.0-beta.2 412 12/14/2023
1.0.0-beta.1 251 11/27/2023