Skip to content

Services Overview

miniblue emulates 21 Azure services on a single port. All services use in-memory storage and require no authentication.

Service status

Service Azure Provider Status ARM API Data Plane
Resource Groups Microsoft.Resources Done Yes --
Blob Storage Microsoft.Storage Done -- Yes
Table Storage Microsoft.Storage Done -- Yes
Queue Storage Microsoft.Storage Done -- Yes
Key Vault Microsoft.KeyVault Done -- Yes
Cosmos DB Microsoft.DocumentDB Done -- Yes
Service Bus Microsoft.ServiceBus Done -- Yes
Azure Functions Microsoft.Web Done Yes --
Virtual Networks Microsoft.Network Done Yes --
DNS Zones Microsoft.Network Done Yes --
Container Registry Microsoft.ContainerRegistry Done Yes Yes
Event Grid Microsoft.EventGrid Done Yes Yes
App Configuration Microsoft.AppConfiguration Done -- Yes
Managed Identity IMDS Done -- Yes
DB for PostgreSQL Microsoft.DBforPostgreSQL Done Yes --
DB for MySQL Microsoft.DBforMySQL Done Yes --
Azure SQL Database Microsoft.Sql Done Yes --
Azure Cache for Redis Microsoft.Cache Done Yes --
Container Instances Microsoft.ContainerInstance Done Yes --

What "ARM API" and "Data Plane" mean

  • ARM API -- the service responds to Azure Resource Manager style URLs (/subscriptions/{sub}/resourceGroups/{rg}/providers/...). This is what Terraform and the Azure CLI use.
  • Data Plane -- the service responds to simplified REST URLs for direct data operations (e.g. /blob/{account}/{container}/{blob}). This is what the azlocal CLI and curl use.

Terraform compatibility

The following resources work with hashicorp/azurerm provider v3.x:

Terraform Resource miniblue Service
azurerm_resource_group Resource Groups
azurerm_virtual_network Virtual Networks
azurerm_subnet Virtual Networks
azurerm_dns_zone DNS Zones
azurerm_container_registry Container Registry

See the Terraform guide for a full working example.

API patterns

All ARM-style endpoints follow the Azure REST API convention:

PUT /subscriptions/{subscriptionId}/resourceGroups/{rg}/providers/{provider}/{resourceType}/{name}

All data plane endpoints use simplified paths:

PUT /blob/{account}/{container}/{blob}
PUT /keyvault/{vault}/secrets/{name}
POST /cosmosdb/{account}/dbs/{db}/colls/{coll}/docs

Common query parameters

Parameter Notes
api-version Accepted but not enforced. miniblue responds the same regardless of version.

Error format

Errors follow the Azure error response format:

{
  "error": {
    "code": "ResourceNotFound",
    "message": "Resource 'myRG' of type 'Microsoft.Resources/resourceGroups' was not found."
  }
}

HTTP status codes used:

Code Meaning
200 OK (update, get)
201 Created
202 Accepted (async delete)
204 No Content
400 Bad Request
404 Not Found
409 Conflict