Adsk.Platform.InformedDesign 0.3.16

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

Informed Design SDK for .NET

NuGet

Unofficial package — not affiliated with or endorsed by Autodesk.

Namespace: Autodesk.InformedDesign | Target: net8.0 | License: MIT Generated from OpenAPI specs via Microsoft Kiota.

A type-safe C# SDK for the Autodesk Informed Design (Beta) REST APIs — also known as Dynamic Content / Industrialized Construction. Manage products, releases, variants, outputs, uploads, downloads, and rules — 31 methods across 7 managers through a single unified client.

The SDK provides two access patterns:

  1. Manager API (recommended) — high-level methods with automatic pagination, strongly-typed parameters, and XML doc comments linking to official APS docs.
  2. Fluent URL API — mirrors the REST endpoint structure directly for full control over requests.

Installation

dotnet add package Adsk.Platform.InformedDesign
dotnet add package Adsk.Platform.Authentication

Quick Start

using Autodesk.InformedDesign;

var client = new InformedDesignClient(() => Task.FromResult("YOUR_ACCESS_TOKEN"));

// Manager approach (recommended) — auto-paginates all pages
await foreach (var product in client.ProductsManager.ListProductsAsync())
{
    Console.WriteLine(product);
}

// Create a product
using Autodesk.InformedDesign.IndustrializedConstruction.InformedDesign.V1.Products;

ProductsPostRequestBody body = new() { /* set properties */ };
ProductsPostResponse? created = await client.ProductsManager.CreateProductAsync(body);

Authentication with 2-Legged OAuth

For server-to-server communication, use the Adsk.Platform.Authentication package:

using Autodesk.InformedDesign;
using Autodesk.Authentication;
using Autodesk.Authentication.Helpers.Models;

var authClient = new AuthenticationClient();
var tokenStore = new InMemoryTokenStore();

var getAccessToken = authClient.Helper.CreateTwoLeggedAutoRefreshToken(
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET",
    scopes: new[] { "data:read", "data:write" },
    tokenStore);

var client = new InformedDesignClient(getAccessToken);

Dependency Injection

using Autodesk.Common.HttpClientLibrary;
using Microsoft.Extensions.DependencyInjection;

builder.Services.AddAdskToolkitHttpClient("ApsClient");

// In your service:
public class MyService(IHttpClientFactory httpClientFactory)
{
    public InformedDesignClient CreateClient(Func<Task<string>> getAccessToken)
    {
        var httpClient = httpClientFactory.CreateClient("ApsClient");
        return new InformedDesignClient(getAccessToken, httpClient);
    }
}

Available Managers

Manager Description Methods
ProductsManager Product CRUD, upload URLs, complete upload, download URL, delete upload 9
ReleasesManager Release CRUD for products 5
VariantsManager Variant CRUD for releases 4
OutputsManager Output CRUD and outputs request status 5
UploadsManager Upload request listing, creation, and details 3
DownloadsManager Download request creation and details 2
RulesManager Evaluate, validate, and retrieve rules 3

Automatic Pagination

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

// Iterate all products
await foreach (var product in client.ProductsManager.ListProductsAsync())
{
    Console.WriteLine(product);
}

// Stop after first 10
int count = 0;
await foreach (var product in client.ProductsManager.ListProductsAsync())
{
    if (count++ >= 10) break;
}

// With query parameters — use object initializer syntax
await foreach (var release in client.ReleasesManager.ListReleasesAsync(
    new() { QueryParameters = { Limit = 25 } }))
{
    Console.WriteLine(release);
}

Usage Examples

Get a Product by ID

using Autodesk.InformedDesign.IndustrializedConstruction.InformedDesign.V1.Products.Item;

Guid productId = Guid.Parse("your-product-id");
WithProductGetResponse? product = await client.ProductsManager.GetProductAsync(productId);

Create a Release

using Autodesk.InformedDesign.IndustrializedConstruction.InformedDesign.V1.Releases;

ReleasesPostRequestBody body = new() { /* set properties */ };
ReleasesPostResponse? release = await client.ReleasesManager.CreateReleaseAsync(body);

Evaluate Rules

using Autodesk.InformedDesign.IndustrializedConstruction.InformedDesign.V1.RulesEvaluate;

RulesEvaluatePostRequestBody body = new() { /* set properties */ };
RulesEvaluatePostResponse? result = await client.RulesManager.EvaluateRulesAsync(body);

Upload Product Content

using Autodesk.InformedDesign.IndustrializedConstruction.InformedDesign.V1.Products.Item.UploadUrls;
using Autodesk.InformedDesign.IndustrializedConstruction.InformedDesign.V1.Products.Item.CompleteUpload;

Guid productId = Guid.Parse("your-product-id");

// Step 1: Get upload URLs
UploadUrlsPostRequestBody urlsBody = new() { /* set properties */ };
UploadUrlsPostResponse? urls = await client.ProductsManager.GetUploadUrlsAsync(productId, urlsBody);

// Step 2: Upload file content to the signed URLs (use HttpClient directly)

// Step 3: Mark upload as complete
CompleteUploadPostRequestBody completeBody = new() { /* set properties */ };
CompleteUploadPostResponse? completed = await client.ProductsManager.CompleteUploadAsync(productId, completeBody);

Using the Fluent URL API

// List products directly via fluent API
var response = await client.Api.IndustrializedConstruction.InformedDesign.V1.Products
    .GetAsync(config =>
    {
        config.QueryParameters.AccessType = GetAccessTypeQueryParameterType.ACC;
        config.QueryParameters.AccessId = "your-access-id";
    });

// Get a single variant
Guid variantId = Guid.Parse("your-variant-id");
var variant = await client.Api.IndustrializedConstruction.InformedDesign.V1.Variants[variantId]
    .GetAsync();

Rate Limiting

The SDK includes automatic retry middleware for HTTP 429 (Too Many Requests) responses. It reads the Retry-After header and falls back to exponential backoff. No configuration is needed — this is built into the shared HTTP client provided by Adsk.Platform.HttpClient.

Error Handling

The SDK's error handler middleware throws HttpRequestException for non-2xx responses, with the full response available in ex.Data["context"]:

try
{
    await client.ProductsManager.DeleteProductAsync(productId);
}
catch (HttpRequestException ex)
{
    Console.WriteLine($"Status: {ex.StatusCode} — {ex.Message}");
    if (ex.Data["context"] is HttpResponseMessage resp)
    {
        string body = await resp.Content.ReadAsStringAsync();
        Console.WriteLine($"Response body: {body}");
    }
}

To disable the error handler for a specific request (e.g. to handle 404 yourself):

using Autodesk.Common.HttpClientLibrary.Middleware.Options;

WithProductGetResponse? product = await client.ProductsManager.GetProductAsync(productId,
    new() { Options = { new ErrorHandlerOption { Enabled = false } } });

Custom HTTP Client

var httpClient = new HttpClient();
var client = new InformedDesignClient(() => Task.FromResult("TOKEN"), httpClient);

Constructor

public InformedDesignClient(Func<Task<string>> getAccessToken, HttpClient? httpClient = null)
Parameter Type Description
getAccessToken Func<Task<string>> Async function returning a valid OAuth bearer token
httpClient HttpClient? (Optional) Custom HTTP client. Default includes retry and rate-limit middleware

Conventions

  • Method naming: List*Async (paginated), Get*Async (single item), Create*Async (POST), Update*Async (PATCH), Delete*Async (DELETE)
  • Return types: IAsyncEnumerable<T> for paginated endpoints, Task<T?> for single-item reads, Task for deletes
  • RequestConfiguration: All manager methods accept RequestConfiguration<T>?never Action<>. Configure via object initializer: new() { QueryParameters = { Limit = 50 } }
  • Parameter types: All resource IDs are Guid except rulesKey which is string
  • Request body types: Located in the generated namespace matching the endpoint path (e.g. Autodesk.InformedDesign.IndustrializedConstruction.InformedDesign.V1.Products.ProductsPostRequestBody)
Package NuGet Purpose
Adsk.Platform.Authentication NuGet OAuth token management
Adsk.Platform.HttpClient NuGet Shared HTTP client with retry, rate limiting
Adsk.Platform.ACC NuGet Autodesk Construction Cloud SDK
Adsk.Platform.DataManagement NuGet Data Management / OSS SDK

For AI Assistants

A machine-readable API reference with all method signatures, return types, and REST endpoint mappings is available at llm.txt.

Requirements

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.3.16 0 3/31/2026
0.3.15 0 3/30/2026