Adsk.Platform.Datum.CLS360 2.0.1

dotnet add package Adsk.Platform.Datum.CLS360 --version 2.0.1
                    
NuGet\Install-Package Adsk.Platform.Datum.CLS360 -Version 2.0.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="Adsk.Platform.Datum.CLS360" Version="2.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Adsk.Platform.Datum.CLS360" Version="2.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Adsk.Platform.Datum.CLS360" />
                    
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 Adsk.Platform.Datum.CLS360 --version 2.0.1
                    
#r "nuget: Adsk.Platform.Datum.CLS360, 2.0.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 Adsk.Platform.Datum.CLS360@2.0.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=Adsk.Platform.Datum.CLS360&version=2.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Adsk.Platform.Datum.CLS360&version=2.0.1
                    
Install as a Cake Tool

Autodesk Datum CLS360 SDK for .NET

NuGet

Unofficial package - not affiliated with or endorsed by Autodesk.

Namespace: Autodesk.Datum.CLS360 | Targets: net8.0, net10.0 | License: MIT Generated from OpenAPI specifications with Microsoft Kiota.

A type-safe C# SDK for the Autodesk Datum CLS360 REST API. It provides managers for domains, classes, templates, attributes, and files, plus a fluent API for direct endpoint access.

Installation

dotnet add package Adsk.Platform.Datum.CLS360

Quick Start

Create a client with your CLS360 tenant name and a function that returns an access token. The tenant name is used to form the base URL https://{tenantName}.cls360.io/api.

using Autodesk.Datum.CLS360;

var client = new DatumCLS360Client(
    tenantName: "your-tenant",
    getAccessToken: () => Task.FromResult("YOUR_ACCESS_TOKEN"));

await foreach (var domain in client.DomainManager.ListDomainsAsync())
{
    Console.WriteLine(domain.Hdl);
}

Authentication With 2-Legged OAuth

CLS360 authentication uses the tenant-specific ACL360 token endpoint. Request a client-credentials token from https://{tenant}.acl360.io/oauth2/token, then pass the returned access token to the client:

using System.Net.Http.Json;
using Autodesk.Datum.CLS360;

var tenantName = "autodesk-demo";
var clientId = "YOUR_CLIENT_ID";
var clientSecret = "YOUR_CLIENT_SECRET";

using var httpClient = new HttpClient();
var tokenResponse = await httpClient.PostAsJsonAsync(
    $"https://{tenantName}.acl360.io/oauth2/token",
    new
    {
        grant_type = "client_credentials",
        client_id = clientId,
        client_secret = clientSecret,
        scope = $"{tenantName}-cls360"
    });

tokenResponse.EnsureSuccessStatusCode();
var token = await tokenResponse.Content.ReadFromJsonAsync<AccessToken>();
if (token?.access_token is null)
    throw new InvalidOperationException("The token response did not contain an access token.");

var client = new DatumCLS360Client(
    tenantName,
    () => Task.FromResult(token.access_token));

public sealed class AccessToken
{
    public string? access_token { get; set; }
    public string? token_type { get; set; }
}

The scope normally follows the {tenant}-cls360 convention and must match the service configured in ACL360. Store client credentials securely and do not hard-code them in production applications.

Managers

Manager Operations
AttributeManager Get information and measure attributes for a domain
ClassManager List, create, get, and update classes and their mappings
DomainManager List, get, seed, and retrieve snapshots of domains
FileManager Download files by file handle or dataset reference
TemplateManager List, create, get, and update templates and essential attributes

Usage Examples

Retrieve a Domain and Its Attributes

var domain = await client.DomainManager.GetDomainAsync("domain-handle");
var attributes = await client.AttributeManager.GetAttributesForDomainAsync("domain-handle");

List Classes and Templates

await foreach (var classItem in client.ClassManager.ListClassesAsync("domain-handle"))
{
    Console.WriteLine(classItem.Hdl);
}

await foreach (var template in client.TemplateManager.ListTemplatesAsync("domain-handle"))
{
    Console.WriteLine(template.Hdl);
}

Download a File

var content = await client.FileManager.GetFileByHandleAsync("file-handle");

Automatic Pagination

Paginated manager methods return IAsyncEnumerable<T> and fetch subsequent pages automatically. Use break or LINQ's .Take(n) to stop early.

await foreach (var domain in client.DomainManager.ListDomainsAsync())
{
    Console.WriteLine(domain.Hdl);
}

Most paged methods accept Kiota RequestConfiguration<T> for query filters, headers, options, and cancellation tokens.

Fluent API

Use Api when an endpoint is not exposed by a manager, or when you need direct access to the generated request builders:

var domains = await client.Api.Domains.GetAsync();
var domain = await client.Api.Domains["domain-handle"].GetAsync();

Custom HttpClient

Pass an HttpClient instance to use your application's configured client:

var httpClient = new HttpClient();
var client = new DatumCLS360Client("your-tenant", getAccessToken, httpClient);

Rate Limiting and Error Handling

The default Kiota HTTP pipeline retries transient 429, 503, and 504 responses and respects Retry-After headers. The shared HTTP client also provides configurable rate limiting and converts non-success responses to ApiException by default. See the shared HTTP client documentation for configuration details.

Constructor

public DatumCLS360Client(
    string tenantName,
    Func<Task<string>> getAccessToken,
    HttpClient? httpClient = null)
Parameter Type Description
tenantName string CLS360 tenant name used to construct the API base URL
getAccessToken Func<Task<string>> Async function returning a valid OAuth bearer token
httpClient HttpClient? Optional custom HTTP client

Conventions

  • Async manager methods use the Async suffix.
  • Paginated endpoints return IAsyncEnumerable<T>.
  • Non-paginated endpoints return Task<T?>.
  • Request configuration uses Kiota RequestConfiguration<T> objects.
  • Request and response models are generated types in the Autodesk.Datum.CLS360 namespace tree.

Requirements

  • .NET 8.0 or later
  • A valid ACL360 access token with the CLS360 scope configured for your tenant

License

This project is licensed under the MIT License.

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 was computed.  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 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.

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
2.0.1 86 9/14/2026
2.0.0 102 9/6/2026
1.1.0 100 8/25/2026
1.0.0 96 8/24/2026