ViewpointPro.Client
7.5.7
dotnet add package ViewpointPro.Client --version 7.5.7
NuGet\Install-Package ViewpointPro.Client -Version 7.5.7
<PackageReference Include="ViewpointPro.Client" Version="7.5.7" />
<PackageVersion Include="ViewpointPro.Client" Version="7.5.7" />
<PackageReference Include="ViewpointPro.Client" />
paket add ViewpointPro.Client --version 7.5.7
#r "nuget: ViewpointPro.Client, 7.5.7"
#:package ViewpointPro.Client@7.5.7
#addin nuget:?package=ViewpointPro.Client&version=7.5.7
#tool nuget:?package=ViewpointPro.Client&version=7.5.7
ViewpointPro.Client
This package provides .NET clients for integrating with the Viewpoint Pro API.
Clients
The package contains the following clients:
VppClient- common APIs such as search, download, upload, update, delete, and appendix handling.VppUtilsClient- utility services.VppDebugClient- debug APIs used to test Viewpoint error handling and client-side error handling.VppMaintenanceClient- maintenance services. The client must have admin access and can only be used with the legacy Viewpoint authentication flow.
Use VppRecycleClient to create and reuse clients. VppRecycleClient keeps an internal cache of clients based on the configured VppParameters. You can also create clients directly and manage their lifetime yourself.
All client calls are wrapped in a Polly retry policy appropriate for the Viewpoint service.
Authentication options
ViewpointPro.Client supports two authentication flows:
- Viewpoint authentication - the legacy/default flow. The client calls the Viewpoint API
/auth/tokenendpoint with a Viewpoint client id and client secret. - Microsoft Entra authentication - the client uses Azure managed identity to get an Entra access token and sends that token to the Viewpoint API.
The default is Viewpoint authentication, so existing integrations do not need to change.
Option 1: Viewpoint authentication
Use this flow for existing clients that receive credentials from Viewpoint Pro.
using ViewpointPro.Client;
using ViewpointPro.Client.Configuration;
var parameters = new VppParameters
{
BaseAdress = "https://viewpoint-api.example.com",
ClientId = "<viewpoint-client-id>",
ClientSecret = "<viewpoint-client-secret>",
// Optional because this is the default.
AuthenticationFlow = VppAuthenticationFlow.Viewpoint,
};
using var recycleClient = new VppRecycleClient();
var client = recycleClient.GetClient(parameters);
// Use client.SearchDocument, client.UploadDocument, client.DownloadDocument, etc.
recycleClient.RecycleClient(parameters, client);
Required configuration
| Property | Description |
|---|---|
BaseAdress |
Base URL of the Viewpoint API. |
ClientId |
Viewpoint client id configured in the Viewpoint API. |
ClientSecret |
Viewpoint client secret configured in the Viewpoint API. |
AuthenticationFlow |
Optional. Defaults to VppAuthenticationFlow.Viewpoint. |
The client automatically:
- posts credentials to
/auth/token, - caches the returned bearer token until it is close to expiration,
- adds the token as the
Authorization: Bearerheader on API calls.
Option 2: Microsoft Entra authentication
Use this flow for Azure-hosted clients that should authenticate through Microsoft Entra ID with managed identity instead of using the Viewpoint /auth/token endpoint or client secrets.
using ViewpointPro.Client;
using ViewpointPro.Client.Configuration;
var parameters = new VppParameters
{
BaseAdress = "https://viewpoint-api.example.com",
AuthenticationFlow = VppAuthenticationFlow.Entra,
EntraAudience = "api://<viewpoint-api-application-id-or-uri>",
};
using var recycleClient = new VppRecycleClient();
var client = recycleClient.GetClient(parameters);
// Use client.SearchDocument, client.UploadDocument, client.DownloadDocument, etc.
recycleClient.RecycleClient(parameters, client);
Required configuration
| Property | Description |
|---|---|
BaseAdress |
Base URL of the Viewpoint API. |
AuthenticationFlow |
Must be VppAuthenticationFlow.Entra. |
EntraAudience |
Viewpoint API application ID URI, for example api://<viewpoint-api-app-id>. |
ManagedIdentityClientId |
Optional. Set this only when using a user-assigned managed identity. Leave empty for system-assigned managed identity. |
If EntraScope is not set, the client requests this scope automatically:
{EntraAudience}/.default
Set EntraScope only if your Entra setup requires an explicit scope value:
var parameters = new VppParameters
{
BaseAdress = "https://viewpoint-api.example.com",
AuthenticationFlow = VppAuthenticationFlow.Entra,
EntraScope = "api://<viewpoint-api-application-id-or-uri>/.default",
};
For a user-assigned managed identity, also set ManagedIdentityClientId:
var parameters = new VppParameters
{
BaseAdress = "https://viewpoint-api.example.com",
AuthenticationFlow = VppAuthenticationFlow.Entra,
EntraAudience = "api://<viewpoint-api-application-id-or-uri>",
ManagedIdentityClientId = "<user-assigned-managed-identity-client-id>",
};
The client automatically:
- requests an access token from Azure managed identity,
- caches the returned Entra access token until it is close to expiration,
- adds the token as the
Authorization: Bearerheader on API calls.
Entra app roles
The Viewpoint API expects Entra access tokens to contain one or both of these application roles:
Viewpoint.ReadViewpoint.Write
Viewpoint.Admin is not supported for Entra-authenticated clients.
The managed identity client id must also be configured as a Viewpoint client on the API side so Viewpoint can apply schema permissions and client-specific limits.
Example API-side client mapping:
{
"ClientId": "<managed-identity-client-id>",
"AllowedScopes": [ "Read", "Write" ],
"AllowedSchemas": [ "schema1", "schema2" ]
}
Choosing an authentication flow
| Scenario | Recommended flow |
|---|---|
| Existing integration using Viewpoint-issued client credentials | Viewpoint authentication |
| New Azure-hosted service-to-service integration using Microsoft Entra ID | Entra authentication |
| Customer-managed identity lifecycle, audit, and secret rotation | Entra authentication |
| Maintenance APIs requiring admin access | Viewpoint authentication |
Proxy support
If the API is accessed through a proxy path, set ProxyParameters. The value must contain a format placeholder for the request path.
var parameters = new VppParameters
{
BaseAdress = "https://proxy.example.com",
ClientId = "<client-id>",
ClientSecret = "<client-secret>",
ProxyParameters = "/proxy/viewpoint{0}",
};
Token caching
Both authentication flows use the same token cache behavior. A new token is requested when the cached token is expired or close to expiration. If an API call returns an authorization error, the cached token is cleared and the next call obtains a new token.
| Product | Versions 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. |
-
net10.0
- Azure.Identity (>= 1.21.0)
- Microsoft.AspNetCore.JsonPatch (>= 10.0.9)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.9)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.9)
- Microsoft.Extensions.Http (>= 10.0.9)
- Microsoft.Extensions.Http.Polly (>= 10.0.9)
- Newtonsoft.Json (>= 13.0.4)
- Newtonsoft.Json.Schema (>= 4.0.1)
- Polly (>= 8.7.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on ViewpointPro.Client:
| Package | Downloads |
|---|---|
|
ViewpointPro.IntegrationTests
Package Description |
|
|
Metaforce.WebEditor.Api.Client
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 7.5.7 | 46 | 7/16/2026 |
| 7.5.6 | 38 | 7/16/2026 |
| 7.5.5 | 36 | 7/14/2026 |
| 7.5.4 | 39 | 7/14/2026 |
| 7.5.3 | 37 | 7/14/2026 |
| 7.5.2 | 45 | 7/14/2026 |
| 7.5.1 | 42 | 7/14/2026 |
| 7.5.1-beta | 93 | 7/13/2026 |
| 7.5.0 | 558 | 2/23/2026 |
| 7.5.0-beta | 89 | 7/13/2026 |
| 7.4.1-beta | 137 | 12/12/2025 |
| 7.4.0 | 1,172 | 12/12/2025 |
| 7.4.0-beta | 138 | 12/12/2025 |
| 7.3.0-beta | 277 | 11/10/2025 |
| 7.2.5 | 372 | 11/10/2025 |
| 7.2.4 | 1,079 | 1/10/2025 |
| 7.2.3 | 274 | 1/9/2025 |
| 7.2.2 | 286 | 1/8/2025 |
| 7.2.1 | 278 | 1/8/2025 |
| 7.2.0 | 1,158 | 11/16/2024 |