Adsk.Platform.ACC 0.2.8

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

Autodesk.ACC - Autodesk Construction Cloud SDK

A .NET SDK providing a Fluent API for the Autodesk Construction Cloud (ACC) APIs, generated from the official OpenAPI specifications using Microsoft Kiota.

Features

This SDK provides access to multiple ACC API endpoints through a unified client:

API Endpoint Path
Accounts /hq/v1/accounts/*
Admin /construction/admin/v1/*
Assets /construction/assets/*
AutoSpecs /construction/autospecs/v1/*
Clash /bim360/clash/v3/*
Cost /cost/v1/*
Data Connector /dataconnector/v1/*
Docs /bim360/docs/v1/*
Files /construction/files/v1/*
Forms /construction/forms/v1/*
Index /construction/index/v2/*
Issues /construction/issues/v1/*
Locations /construction/locations/v2/*
ModelSet /bim360/modelset/v3/*
Packages /construction/packages/v1/*
Photos /construction/photos/v1/*
RCM /construction/rcm/v1/*
Relationships /bim360/relationship/v2/*
Reviews /construction/reviews/v1/*
RFIs /construction/rfis/v3/*
Sheets /construction/sheets/v1/*
Submittals /construction/submittals/v2/*
Takeoff /construction/takeoff/v1/*
Transmittals /construction/transmittals/v1/*

Installation

dotnet add package Adsk.Platform.ACC

Quick Start

using Autodesk.ACC;

// Provide a function that returns the access token
Func<Task<string>> getAccessToken = () => Task.FromResult("YOUR_ACCESS_TOKEN");

// Initialize the ACC client
var accClient = new ACCclient(getAccessToken);

Using with 2-Legged Authentication

For server-to-server communication using client credentials (2-legged OAuth), use the Autodesk.Authentication package:

using Autodesk.ACC;
using Autodesk.Authentication;
using Autodesk.Authentication.Helpers.Models;

// Your APS app credentials
var clientId = "YOUR_CLIENT_ID";
var clientSecret = "YOUR_CLIENT_SECRET";

// Define the required scopes
var scopes = new[] { "data:read", "data:write", "account:read" };

// Create authentication client
var authClient = new AuthenticationClient();

// Create an auto-refreshing token provider (handles token expiration automatically)
var tokenStore = new InMemoryTokenStore();
var getAccessToken = authClient.Helper.CreateTwoLeggedAutoRefreshToken(
    clientId, 
    clientSecret, 
    scopes, 
    tokenStore);

// Initialize the ACC client with auto-refreshing token
var accClient = new ACCclient(getAccessToken);

// Now you can use the client - tokens are refreshed automatically when needed
var issues = await accClient.Issues.Projects[projectId].Issues.GetAsync();

Usage Examples

Get Issues

// Get issues for a project
var issues = await accClient.Issues.Projects[projectId].Issues.GetAsync();

foreach (var issue in issues?.Results ?? [])
{
    Console.WriteLine($"Issue: {issue.Title} - Status: {issue.Status}");
}

Get Clash Results

// Get clash test results
var clashTests = await accClient.Clash.Containers[containerId].Clash.Tests.GetAsync();

Get Project Files

// Get files in a folder
var files = await accClient.Files.Projects[projectId].Folders[folderId].Contents.GetAsync();

Get RFIs

// Get RFIs for a project
var rfis = await accClient.RFIs.Projects[projectId].Rfis.GetAsync();

Using the Full API

For endpoints not available through shortcuts, use the Api property to access the full API structure:

// Access the full API
var result = await accClient.Api.Construction.Issues.V1.Projects[projectId].Issues.GetAsync();

API Structure

The SDK provides convenient shortcut properties for common endpoints:

Property Description
accClient.Accounts Account management APIs
accClient.Admin Admin APIs
accClient.Assets Assets APIs
accClient.AutoSpecs AutoSpecs APIs
accClient.Clash Clash detection APIs
accClient.Cost Cost management APIs
accClient.DataConnector Data Connector APIs
accClient.Docs Document management APIs
accClient.Files Files management APIs
accClient.Forms Forms APIs
accClient.Index Index/search APIs
accClient.Issues Issues management APIs
accClient.Locations Locations APIs
accClient.ModelSet Model set management APIs
accClient.Packages Packages APIs
accClient.Photos Photos APIs
accClient.Projects Project relationship APIs
accClient.RCM RCM APIs
accClient.Relationships Relationship APIs
accClient.Reviews Reviews APIs
accClient.RFIs RFI management APIs
accClient.Sheets Sheets APIs
accClient.Submittals Submittals APIs
accClient.Takeoff Takeoff APIs
accClient.Transmittals Transmittals APIs

Custom HttpClient

You can provide your own HttpClient instance for advanced scenarios:

var httpClient = new HttpClient();
// Configure your HttpClient...

var accClient = new ACCclient(getAccessToken, httpClient);

Rate Limiting

The SDK handles API rate limits automatically thanks to the built-in retry handler provided by the Kiota HTTP client. When the API returns a 429 Too Many Requests response, the SDK will:

  • Automatically retry the request with exponential backoff
  • Respect the Retry-After header returned by the API
  • Retry up to a configurable number of times before failing

This means you don't need to implement custom retry logic in your application — the SDK handles transient failures and rate limiting transparently.

Error Handling

By default, the SDK throws an HttpRequestException for any non-successful HTTP response (4xx or 5xx status codes). This differs from Kiota's default behavior, which requires you to check the response status manually.

The exception includes:

  • The request URI
  • The HTTP status code
  • The full HttpResponseMessage in the Data["context"] property, allowing you to inspect the request, headers, response body, and other details for debugging
try
{
    var issues = await accClient.Issues.Projects[projectId].Issues.GetAsync();
}
catch (HttpRequestException ex)
{
    Console.WriteLine($"Request failed: {ex.Message}");
    Console.WriteLine($"Status code: {ex.StatusCode}");

    // Access the full response for more details
    if (ex.Data["context"] is HttpResponseMessage response)
    {
        // Get request details
        Console.WriteLine($"Request URI: {response.RequestMessage?.RequestUri}");
        Console.WriteLine($"Request Method: {response.RequestMessage?.Method}");

        // Get response body
        var body = await response.Content.ReadAsStringAsync();
        Console.WriteLine($"Response body: {body}");
    }
}

If you prefer Kiota's default behavior (no automatic exception throwing), you can disable the error handler:

using Autodesk.Common.HttpClientLibrary.Middleware.Options;

// Disable error handling for a specific request
var requestConfig = new Action<RequestConfiguration<DefaultQueryParameters>>(config =>
{
    config.Options.Add(new ErrorHandlerOption { Enabled = false });
});

var issues = await accClient.Issues.Projects[projectId].Issues.GetAsync(requestConfig);

Requirements

  • .NET 8.0 or later
  • Valid Autodesk Platform Services (APS) access token with appropriate scopes

Documentation

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 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

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
0.2.8 29 2/9/2026
0.2.7 34 2/9/2026
0.2.6 37 2/5/2026
0.2.5 34 2/5/2026
0.2.4 39 2/5/2026
0.2.3 42 2/5/2026
0.2.2 40 2/3/2026