Skip to content

2.1.21

Release Date: November 19, 2025


โœจ New Features

NuGet Packages

Scalar API Documentation Integration ๐ŸŽจ

Package: SAIF.Platform.Aspire.Hosting

Added support for Scalar, a modern interactive API documentation tool that provides a beautiful and user-friendly interface for exploring OpenAPI specifications.

Key Features:

  • โœ… Scalar Resource - First-class Aspire resource for Scalar documentation
  • โœ… Builder Extensions - Fluent API for adding Scalar to your Aspire projects
  • โœ… Automatic Integration - Seamlessly integrates with existing API projects

Benefits:

  • ๐Ÿš€ Modern, interactive API documentation out of the box
  • ๐Ÿ”„ Automatic OpenAPI spec discovery and rendering
  • ๐ŸŽฏ Better developer experience for API consumers

Example:

builder.AddScalar("api-docs")
    .WithOpenApiSpec("/openapi/v1.yaml");

WiremockCli Support (Experimental) ๐Ÿงช

Package: SAIF.Platform.Aspire.Hosting

Introduced experimental WiremockCli integration for Aspire applications, enabling powerful API mocking capabilities during local development and testing.

Key Features:

  • โœ… Experimental APIs - Early access to WiremockCli functionality (marked with SAIFWIREMOCKCLI0001 diagnostic)
  • โœ… Service Configuration - Configure mock services with fluent API
  • โœ… Aspire Integration - Native support for Aspire resource management

Benefits:

  • ๐Ÿš€ Accelerate development with reliable API mocks
  • ๐Ÿ”„ Test integration scenarios without external dependencies
  • ๐ŸŽฏ Consistent mock behavior across team environments

Example:

builder.AddWiremockCli("mock-api")
    .WithMappingsDirectory("./mocks");

Note: This feature is experimental and APIs may change in future releases. Use the diagnostic ID SAIFWIREMOCKCLI0001 to suppress warnings if needed.

Documentation:


Terraform Modules

Azure Management Group Module ๐Ÿข

Module: src/terraform/azure-management/modules/management_group

Complete Terraform module for creating and managing Azure Management Groups, enabling hierarchical organization of Azure subscriptions.

Key Features:

  • โœ… Hierarchical Structures - Support parent-child management group relationships
  • โœ… Subscription Association - Attach subscriptions to management groups
  • โœ… Input Validation - Comprehensive validation for names and subscription UUIDs
  • โœ… Smart Defaults - Display name defaults to name if not provided

New Variables:

  • name (string, required) - Management group name
  • display_name (string, optional) - Friendly display name
  • parent_management_group_id (string, optional) - Parent management group ID for hierarchy
  • subscription_ids (list(string), optional) - List of subscription UUIDs to associate

Example:

module "platform_mg" {
  source = "../../modules/management_group"

  name         = "platform"
  display_name = "Platform Services"
  parent_management_group_id = azurerm_management_group.root.id
  subscription_ids = [
    "12345678-1234-1234-1234-123456789012"
  ]
}

Benefits:

  • โœ… Organize subscriptions into logical hierarchies
  • โœ… Apply governance policies at scale
  • โœ… Simplify subscription management

Azure Subscription Module ๐Ÿ”‘

Module: src/terraform/azure-management/modules/subscription

New Terraform module for managing Azure subscriptions with comprehensive configuration options and examples.

Key Features:

  • โœ… Subscription Provisioning - Create and manage Azure subscriptions
  • โœ… Flexible Configuration - Support for various subscription types and settings
  • โœ… Example Configurations - Multiple examples demonstrating common patterns

Example:

module "subscription" {
  source = "../../modules/subscription"

  subscription_name = "dev-subscription"
  # Additional configuration...
}

Benefits:

  • โœ… Automated subscription provisioning
  • โœ… Consistent subscription configuration
  • โœ… Infrastructure as code for subscription management

Documentation:


Application Permissions Management ๐Ÿ”

Module: src/terraform/saif-application-permissions

Added keep.tf file to preserve application permissions configuration and prevent accidental deletion of critical security settings.

Key Features:

  • โœ… Protected Configuration - Ensures permissions remain tracked in source control
  • โœ… Prevents Drift - Keeps critical security settings from being accidentally removed

Benefits:

  • ๐Ÿ›ก๏ธ Enhanced security posture
  • ๐Ÿ”’ Prevents permission configuration loss
  • ๐Ÿ“ Maintains audit trail for permission changes

Foundry Examples

PetStore Event Orchestration Sample ๐Ÿพ

Location: foundry/dotnet/event-orchestration

Comprehensive example application demonstrating event-driven architecture with Azure Functions, Durable Functions, Service Bus, and Cosmos DB.

Components:

  • โœ… PetStore.Api - REST API for order management
  • โœ… PetStore.Orchestration - Durable Functions for saga orchestration
  • โœ… PetStore.Data - Cosmos DB data access layer
  • โœ… PetStore.ServiceBus.Seed - Service Bus message seeding tool
  • โœ… PetStore.AppHost - Aspire orchestration host

Key Features:

  • โœ… Saga Pattern - Order fulfillment orchestration with compensation logic
  • โœ… Activity Tracing - Comprehensive correlation ID tracking across services
  • โœ… Service Bus Integration - Event-driven communication between services
  • โœ… Cosmos DB - Document storage for orders and inventory

Architecture Highlights:

  • ๐Ÿš€ Event-driven microservices architecture
  • ๐Ÿ”„ Durable Functions for reliable orchestration
  • ๐ŸŽฏ Correlation ID tracking for distributed tracing
  • ๐Ÿ“Š Sensitive data logging enabled for local development

Example:

// OrderCreatedTrigger - Service Bus trigger
[Function(nameof(OrderCreatedTrigger))]
public async Task Run(
    [ServiceBusTrigger("orders", Connection = "ServiceBusConnection")]
    string message,
    FunctionContext context)
{
    var orchestrationClient = context.GetOrchestrationClient();
    await orchestrationClient.StartNewAsync(
        nameof(OrderFulfillmentOrchestrator),
        message);
}

Documentation:


Azure API Management Policy Examples ๐Ÿ›ก๏ธ

Location: foundry/terraform/azure-apim-policy

Complete Terraform examples for Azure API Management policies, including authentication, authorization, and request/response transformation.

Policy Templates:

  • โœ… EntraID Authentication - Validate and authorize Azure AD tokens
  • โœ… Okta Authentication - Support for Okta identity provider
  • โœ… Permission Checking - Fine-grained permission validation
  • โœ… Error Handling - Standardized error response headers
  • โœ… CORS Support - Configurable origin headers
  • โœ… Mock Backends - Development/testing backend configuration

Key Features:

  • โœ… Modular Policy Design - Reusable policy fragments
  • โœ… Template-Based - Easy customization via variables
  • โœ… OpenAPI Integration - Policy examples with OpenAPI specification
  • โœ… Test Endpoints - HTTP test file included for validation

Example:

module "auth_policy" {
  source = "./api_auth_policy_entraid"

  api_management_id = azurerm_api_management.apim.id
  # Additional configuration...
}

Benefits:

  • ๐Ÿ”’ Enterprise-grade API security
  • ๐Ÿ”„ Reusable policy patterns
  • ๐ŸŽฏ Consistent authentication/authorization

๐Ÿ”ง Enhancements

NuGet Packages

  • โœ… SAIF.Platform.Aspire.Hosting - Updated WiremockCli with improved defaults and options extensions
  • โœ… Microsoft.Identity.Client - Updated from 4.77.1 to 4.79.0 with improved managed identity support and IMDS v2
  • โœ… Microsoft.Identity.Client.Broker - Updated from 4.77.1 to 4.79.0 with Android edge-to-edge support
  • โœ… Microsoft.Identity.Client.Extensions.Msal - Updated from 4.77.1 to 4.79.0 with platform updates
  • โœ… Microsoft.Kiota.Abstractions - Updated from 1.20.1 to 1.21.0 with new SetContentFromEnumCollection method
  • โœ… Microsoft.Kiota.Http.HttpClientLibrary - Updated from 1.20.1 to 1.21.0 with backwards compatibility fixes
  • โœ… FluentValidation - Updated from 12.0.0 to 12.1.0 with Tamil and Telugu language support
  • โœ… FluentValidation.DependencyInjectionExtensions - Updated from 12.0.0 to 12.1.0
  • โœ… Spectre.Console - Updated from 0.52.0 to 0.53.0

Terraform Modules

  • โœ… azure-management/modules/resource_group - Updated README documentation
  • โœ… azure-apim-policy - Added comprehensive policy templates and examples

๐Ÿ› Bug Fixes

Terraform Modules

  • ๐Ÿ› azure-apim-policy - Fixed extraneous quotes in policy conditions

Documentation

  • ๐Ÿ› settings-and-secrets.md - Clarified that library name doesn't need to match project ID (but recommended)

๐Ÿ“š Documentation

New Documentation

Updated Documentation


๐Ÿ”„ Breaking Changes

None in this release โœ…


๐Ÿ“‹ Additional Notes

  • Total commits: 54
  • Files changed: 129 files (118 added, 10 modified, 1 deleted)
  • Contributors:
  • Craig Palmquist (crapal@saif.com)
  • Jason Coria Corona Yue (jasyue@saif.com)
  • Emmitt Johnson (emmjoh@saif.com)
  • Brian Sheridan (brishe@saif.com)
  • Aaron Morgulis C (aarmor@saif.com)
  • Platform Build Service (automated dependency updates)

Commit Statistics by Type

  • ๐Ÿ“ 6 new features
  • ๐Ÿ› 2 bug fixes
  • ๐Ÿ“š 11 documentation updates
  • ๐Ÿ”ง 18 dependency updates
  • โ™ป๏ธ 3 refactoring/maintenance
  • ๐Ÿ”€ 14 merge commits

Support

  • ๐Ÿ“ง Teams Support Channel: Support