DealCloudSDK.Source
0.1.46-dev.3
dotnet add package DealCloudSDK.Source --version 0.1.46-dev.3
NuGet\Install-Package DealCloudSDK.Source -Version 0.1.46-dev.3
<PackageReference Include="DealCloudSDK.Source" Version="0.1.46-dev.3"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="DealCloudSDK.Source" Version="0.1.46-dev.3" />
<PackageReference Include="DealCloudSDK.Source"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add DealCloudSDK.Source --version 0.1.46-dev.3
#r "nuget: DealCloudSDK.Source, 0.1.46-dev.3"
#:package DealCloudSDK.Source@0.1.46-dev.3
#addin nuget:?package=DealCloudSDK.Source&version=0.1.46-dev.3&prerelease
#tool nuget:?package=DealCloudSDK.Source&version=0.1.46-dev.3&prerelease
DealCloud SDK for .NET
The official .NET SDK for the DealCloud API, built by Intapp. This SDK provides a robust, type-safe wrapper around the DealCloud REST API, enabling developers to quickly build powerful integrations with the DealCloud platform.
π Key Features
- π§ Easy Integration - Simple, intuitive API wrapper that lets you focus on business logic
- β‘ High Performance - Built-in async/await support with intelligent retry policies
- π‘οΈ Enterprise Ready - Comprehensive error handling, logging, and security best practices
- π Type Safety - Strongly-typed models for all DealCloud entities
- π Auto-Retry - Automatic handling of rate limits and transient errors
- π Well Documented - Extensive documentation and examples
π Documentation
- Official SDK Documentation - Complete API reference and guides
- DealCloud API Documentation - Core API documentation
- CHANGELOG - Latest release notes and version history
- πCheckout the new Source Distribution with full example Program.cs
π Table of Contents
- π Key Features
- π Documentation
- π¦ Installation
- β‘ Quick Start
- π Authentication & Security
- π Usage Examples
- π οΈ Advanced Features
- π¨ Error Handling
- π€ Support
- π License
π¦ Installation
Package Manager
dotnet add package DealCloudSDK
Package Manager Console
Install-Package DealCloudSDK
PackageReference
<PackageReference Include="DealCloudSDK" Version="1.0.0" />
Supported Frameworks
- β .NET 6.0
- β .NET 7.0
- β .NET 8.0
- β .NET 9.0
β‘ Quick Start
Get up and running in minutes with this complete example:
using DealCloudSDK;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
// Configure your credentials (see Security section for best practices)
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
// Optional: Add structured logging
using var loggerFactory = LoggerFactory.Create(builder => builder
.AddConsole()
.SetMinimumLevel(LogLevel.Information));
var logger = loggerFactory.CreateLogger<Program>();
// Initialize the DealCloud client
var dealCloud = new Client(config, logger);
try
{
// Discover your schema
var entryTypes = await dealCloud.Schema.GetObjects();
Console.WriteLine($"Available objects: {string.Join(", ", entryTypes.Select(e => e.Name))}");
// Read data from any object
var companies = await dealCloud.Data.ReadObject("Company", new() { Limit = 10 });
Console.WriteLine($"Found {companies.TotalRecords} companies");
// Create new records
var newCompany = new Dictionary<string, object>
{
["CompanyName"] = "Acme Corporation",
["Industry"] = "Technology"
};
var result = await dealCloud.Data.Insert("Company", new[] { newCompany });
Console.WriteLine($"Created company with ID: {result.EntryIds.First()}");
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred");
}
π Authentication & Security
Direct Initialization (Development)
var client = new Client(
siteUrl: "yoursite.dealcloud.com",
clientId: 12345,
clientSecret: "your-secret",
logger: logger
);
β οΈ Security Warning: Never hardcode credentials in production code or commit them to version control.
Configuration-Based Setup (Recommended)
appsettings.json:
{
"siteUrl": "yoursite.dealcloud.com",
"clientId": 12345,
"clientSecret": "your-secret"
}
Application Code:
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables() // Override with environment variables
.Build();
var client = new Client(config, logger);
Environment Variables
For production deployments, use environment variables:
export DEALCLOUD_SITE_URL="yoursite.dealcloud.com"
export DEALCLOUD_CLIENT_ID="12345"
export DEALCLOUD_CLIENT_SECRET="your-secret"
Advanced Configuration
{
"siteUrl": "yoursite.dealcloud.com",
"clientId": 12345,
"clientSecret": "your-secret",
"querySettings": {
"pageSize": 1000,
"cellPaginationLimit": 9000,
"deletePageSize": 10000
},
"concurrencyLimits": {
"read": 2,
"delete": 2,
"create": 2
},
"responseRetrySettings": {
"tooManyRequests": 5,
"internalServerError": 2,
"serviceUnavailable": 2,
"backoffFactor": 2
}
}
π Usage Examples
Schema Discovery
Discover and understand your DealCloud site's structure:
// Get all available objects (EntryTypes)
var entryTypes = await client.Schema.GetObjects();
foreach (var entryType in entryTypes)
{
Console.WriteLine($"Object: {entryType.Name} (ID: {entryType.Id})");
}
// Get fields for a specific object
var companyFields = await client.Schema.GetFields("Company");
foreach (var field in companyFields)
{
Console.WriteLine($"Field: {field.Name} - Type: {field.FieldType}");
}
// Get complete schema in one call
var schema = await client.Schema.GetSchema();
Console.WriteLine($"Site has {schema.EntryTypes.Count} objects and {schema.Fields.Count} fields");
Data Operations
Reading Data
// Read all companies with pagination
var companies = await client.Data.ReadObject("Company", new CellsQuerySettings
{
Limit = 100,
Skip = 0
});
Console.WriteLine($"Found {companies.TotalRecords} total companies");
foreach (var company in companies.Rows)
{
Console.WriteLine($"Company: {company["CompanyName"]}");
}
// Read data from a specific view
var viewData = await client.Data.ReadView("MyCompanyView");
Creating Data
// Create single record
var newCompany = new Dictionary<string, object>
{
["CompanyName"] = "Tech Corp",
["Industry"] = "Technology",
["Revenue"] = 1000000
};
var result = await client.Data.Insert("Company", new[] { newCompany });
Console.WriteLine($"Created company with ID: {result.EntryIds.First()}");
// Bulk create
var companies = new[]
{
new Dictionary<string, object> { ["CompanyName"] = "Corp A" },
new Dictionary<string, object> { ["CompanyName"] = "Corp B" },
new Dictionary<string, object> { ["CompanyName"] = "Corp C" }
};
var bulkResult = await client.Data.Insert("Company", companies);
Console.WriteLine($"Created {bulkResult.EntryIds.Count} companies");
Updating Data
// Update existing record
var updates = new Dictionary<string, object>
{
["Revenue"] = 2000000,
["LastUpdated"] = DateTime.UtcNow
};
await client.Data.Update("Company", 12345, updates);
// Upsert (update if exists, create if not)
var upsertData = new Dictionary<string, object>
{
["CompanyName"] = "Unique Corp", // Used for matching
["Revenue"] = 1500000
};
await client.Data.Upsert("Company", new[] { upsertData });
π οΈ Advanced Features
Custom Retry Policies
{
"responseRetrySettings": {
"tooManyRequests": 10, // Retry 429 errors up to 10 times
"internalServerError": 3, // Retry 500 errors up to 3 times
"serviceUnavailable": 3, // Retry 503 errors up to 3 times
"backoffFactor": 3 // 3x exponential backoff (3s, 9s, 27s...)
}
}
Performance Tuning
{
"querySettings": {
"pageSize": 5000, // Larger pages for fewer API calls
"cellPaginationLimit": 15000, // Higher cell limits for wide objects
"deletePageSize": 5000 // Bulk delete size
},
"concurrencyLimits": {
"read": 5, // Parallel read operations
"create": 3, // Parallel create operations
"delete": 2 // Parallel delete operations
}
}
Field Mapping & ID Resolution
// Automatic ID mapping (default: enabled)
var client = new Client(config, logger, autoIdMapping: true);
// When enabled, you can use names instead of IDs:
var data = new Dictionary<string, object>
{
["CompanyType"] = "Public Company", // SDK resolves to ID automatically
["Industry"] = "Technology" // SDK resolves to ID automatically
};
await client.Data.Insert("Company", new[] { data });
π¨ Error Handling
The SDK provides comprehensive error handling with automatic retries:
try
{
var result = await client.Data.Insert("Company", data);
}
catch (HttpRequestException ex) when (ex.Message.Contains("401"))
{
// Authentication failed - check credentials
logger.LogError("Authentication failed: {Error}", ex.Message);
}
catch (HttpRequestException ex) when (ex.Message.Contains("403"))
{
// Permission denied - check user permissions
logger.LogError("Access denied: {Error}", ex.Message);
}
catch (HttpRequestException ex) when (ex.Message.Contains("429"))
{
// Rate limited - this should be rare due to auto-retry
logger.LogWarning("Rate limit exceeded: {Error}", ex.Message);
}
catch (ArgumentException ex)
{
// Invalid field names or object types
logger.LogError("Validation error: {Error}", ex.Message);
}
catch (Exception ex)
{
// Unexpected errors
logger.LogError(ex, "Unexpected error occurred");
}
Common Error Scenarios
| Error Code | Description | SDK Behavior |
|---|---|---|
| 401 | Unauthorized | Automatic token refresh, then fail |
| 403 | Forbidden | Immediate failure with clear message |
| 404 | Not Found | Immediate failure (object/view doesn't exist) |
| 429 | Rate Limited | Automatic retry with exponential backoff |
| 500 | Server Error | Automatic retry up to configured limit |
| 503 | Service Unavailable | Automatic retry up to configured limit |
π€ Support
Getting Help
- Documentation: Complete SDK docs
- API Reference: DealCloud API docs
- Support: Contact your DealCloud account team or Intapp Support
Reporting Issues
For bug reports or feature requests, please contact DealCloud support with:
- SDK version number
- .NET framework version
- Complete error messages and stack traces
- Minimal code sample that reproduces the issue
π License
Copyright Β© 2025 Intapp, Inc. All rights reserved.
This SDK is licensed under Intapp's Supplemental Software License Terms. See LICENSE for details.
Built by Intapp
Documentation β’ Support β’ API Reference
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.Extensions.Http (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.4)
- Polly (>= 8.6.4)
- Polly.Extensions.Http (>= 3.0.0)
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.46-dev.3 | 0 | 10/10/2025 |
See CHANGELOG.md for detailed release notes