Azure.ResourceManager.ArizeAIObservabilityEval
.NET SDK for managing Arize AI Observability and Evaluation resources on Azure.
Installation
bash
dotnet add package Azure.ResourceManager.ArizeAIObservabilityEval --version 1.0.0Package Info
| Property | Value |
|---|---|
| Package | Azure.ResourceManager.ArizeAIObservabilityEval |
| Version | 1.0.0 (GA) |
| API Version | 2024-10-01 |
| ARM Type | ArizeAi.ObservabilityEval/organizations |
| Dependencies | Azure.Core >= 1.46.2, Azure.ResourceManager >= 1.13.1 |
Environment Variables
bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription IDAZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in productionAZURE_TENANT_ID=<your-tenant-id> # For service principal auth (optional)AZURE_CLIENT_ID=<your-client-id> # For service principal auth (optional)AZURE_CLIENT_SECRET=<your-client-secret> # For service principal auth (optional)Authentication
csharp
using Azure.Identity;using Azure.ResourceManager;using Azure.ResourceManager.ArizeAIObservabilityEval;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>var credential = new DefaultAzureCredential( DefaultAzureCredential.DefaultEnvironmentVariableName);// Or use a specific credential directly in production:// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes// var credential = new ManagedIdentityCredential();var armClient = new ArmClient(credential);Core Workflow
Create an Arize AI Organization
csharp
using Azure.Core;using Azure.ResourceManager.Resources;using Azure.ResourceManager.ArizeAIObservabilityEval;using Azure.ResourceManager.ArizeAIObservabilityEval.Models;
// Get subscription and resource groupvar subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");var subscription = await armClient.GetSubscriptionResource( SubscriptionResource.CreateResourceIdentifier(subscriptionId)).GetAsync();var resourceGroup = await subscription.Value.GetResourceGroupAsync("my-resource-group");
// Get the organization collectionvar collection = resourceGroup.Value.GetArizeAIObservabilityEvalOrganizations();
// Create organization datavar data = new ArizeAIObservabilityEvalOrganizationData(AzureLocation.EastUS){ Properties = new ArizeAIObservabilityEvalOrganizationProperties { Marketplace = new ArizeAIObservabilityEvalMarketplaceDetails { SubscriptionId = "marketplace-subscription-id", OfferDetails = new ArizeAIObservabilityEvalOfferDetails { PublisherId = "arikimlabs1649082416596", OfferId = "arize-liftr-1", PlanId = "arize-liftr-1-plan", PlanName = "Arize AI Plan", TermUnit = "P1M", TermId = "term-id" } }, User = new ArizeAIObservabilityEvalUserDetails { FirstName = "John", LastName = "Doe", EmailAddress = "[email protected]" } }, Tags = { ["environment"] = "production" }};
// Create (long-running operation)var operation = await collection.CreateOrUpdateAsync( WaitUntil.Completed, "my-arize-org", data);
var organization = operation.Value;Console.WriteLine($"Created: {organization.Data.Name}");Get an Organization
csharp
// Option 1: From collectionvar org = await collection.GetAsync("my-arize-org");
// Option 2: Check if exists firstvar exists = await collection.ExistsAsync("my-arize-org");if (exists.Value){ var org = await collection.GetAsync("my-arize-org");}
// Option 3: GetIfExists (returns null if not found)var response = await collection.GetIfExistsAsync("my-arize-org");if (response.HasValue){ var org = response.Value;}List Organizations
csharp
// List in resource groupawait foreach (var org in collection.GetAllAsync()){ Console.WriteLine($"Org: {org.Data.Name}, State: {org.Data.Properties?.ProvisioningState}");}
// List in subscriptionawait foreach (var org in subscription.Value.GetArizeAIObservabilityEvalOrganizationsAsync()){ Console.WriteLine($"Org: {org.Data.Name}");}Update an Organization
csharp
// Update tagsvar org = await collection.GetAsync("my-arize-org");var updateData = new ArizeAIObservabilityEvalOrganizationPatch{ Tags = { ["environment"] = "staging", ["team"] = "ml-ops" }};var updated = await org.Value.UpdateAsync(updateData);Delete an Organization
csharp
var org = await collection.GetAsync("my-arize-org");await org.Value.DeleteAsync(WaitUntil.Completed);Key Types
| Type | Purpose |
|---|---|
ArizeAIObservabilityEvalOrganizationResource | Main ARM resource for Arize organizations |
ArizeAIObservabilityEvalOrganizationCollection | Collection for CRUD operations |
ArizeAIObservabilityEvalOrganizationData | Resource data model |
ArizeAIObservabilityEvalOrganizationProperties | Organization properties |
ArizeAIObservabilityEvalMarketplaceDetails | Azure Marketplace subscription info |
ArizeAIObservabilityEvalOfferDetails | Marketplace offer configuration |
ArizeAIObservabilityEvalUserDetails | User contact information |
ArizeAIObservabilityEvalOrganizationPatch | Patch model for updates |
ArizeAIObservabilityEvalSingleSignOnPropertiesV2 | SSO configuration |
Enums
| Enum | Values |
|---|---|
ArizeAIObservabilityEvalOfferProvisioningState | Succeeded, Failed, Canceled, Provisioning, Updating, Deleting, Accepted |
ArizeAIObservabilityEvalMarketplaceSubscriptionStatus | PendingFulfillmentStart, Subscribed, Suspended, Unsubscribed |
ArizeAIObservabilityEvalSingleSignOnState | Initial, Enable, Disable |
ArizeAIObservabilityEvalSingleSignOnType | Saml, OpenId |
Best Practices
- Use async methods — All operations support async/await
- Handle long-running operations — Use
WaitUntil.Completedor poll manually - Use GetIfExistsAsync — Avoid exceptions for conditional logic
- Implement retry policies — Configure via
ArmClientOptions - Use resource identifiers — For direct resource access without listing
- Close clients properly — Use
usingstatements or dispose explicitly
Error Handling
csharp
try{ var org = await collection.GetAsync("my-arize-org");}catch (Azure.RequestFailedException ex) when (ex.Status == 404){ Console.WriteLine("Organization not found");}catch (Azure.RequestFailedException ex){ Console.WriteLine($"Azure error: {ex.Message}");}Direct Resource Access
csharp
// Access resource directly by ID (without listing)var resourceId = ArizeAIObservabilityEvalOrganizationResource.CreateResourceIdentifier( subscriptionId, "my-resource-group", "my-arize-org");
var org = armClient.GetArizeAIObservabilityEvalOrganizationResource(resourceId);var data = await org.GetAsync();
