Microsoft Azure
Microsoft Azure — the public cloud's own pricing, catalogue and status surfaces.
Microsoft Azure — the public cloud's own pricing, catalogue and status surfaces. Built: retail service pricing and the service catalogue, off Microsoft's own unauthenticated retail-prices API. Declared, not yet built: a deployment cost estimate, the region catalogue, product-by-region availability, VM sizes, live service health and published SLAs.
Domain: azure.microsoft.com
Also known as: Azure, Microsoft Azure, Azure Cloud, MS Azure
Call it directly
bowmark.providers.azure.getServicePricing(filters?: AzurePricingFilters, currencyCode?: string): Promise<AzureServicePricingResult>
bowmark.providers.azure.listServices(filters?: AzureListServicesFilters): Promise<AzureListServicesResult>Functions
| Function | What it does |
|---|---|
getServicePricing | Returns Microsoft's published retail rates for Azure services off prices.azure.com's own unauthenticated retail-prices API — the same data the Pricing Calculator reads, server-side. |
listServices | Returns Azure's service catalogue — each service's serviceName (the exact, case-sensitive string getServicePricing's serviceName filter takes), its serviceId, and the… |
Types
interface AzurePriceRow {
currencyCode: string;
tierMinimumUnits: number;
retailPrice: number;
unitPrice: number;
armRegionName: string;
location: string;
effectiveStartDate: string;
meterId: string;
meterName: string;
productId: string;
skuId: string;
productName: string;
skuName: string;
serviceName: string;
serviceId: string;
serviceFamily: string;
unitOfMeasure: string;
type: "Consumption" | "DevTestConsumption" | "Reservation";
isPrimaryMeterRegion: boolean;
armSkuName?: string;
reservationTerm?: string;
}
interface AzurePricingFilters {
serviceName?: string;
serviceId?: string;
serviceFamily?: string;
armRegionName?: string;
location?: string;
meterId?: string;
meterName?: string;
productId?: string;
productName?: string;
skuId?: string;
skuName?: string;
armSkuName?: string;
priceType?: "Consumption" | "DevTestConsumption" | "Reservation";
}
interface AzureServicePricingResult {
rows: AzurePriceRow[];
count: number;
billingCurrency: string;
moreAvailable: boolean;
}
interface AzureService {
serviceName: string;
serviceId: string;
serviceFamily: string;
}
interface AzureListServicesFilters {
serviceFamily?: string;
}
interface AzureListServicesResult {
services: AzureService[];
moreAvailable: boolean;
}Examples
const result = await bowmark.providers.azure.getServicePricing({
serviceName: "Virtual Machines",
armRegionName: "eastus",
skuName: "D2s v3",
}, "EUR");
for (const r of result.rows) log(`${r.meterName} (${r.type}): €${r.retailPrice} / ${r.unitOfMeasure}`);// Every value must match Azure's own casing exactly — there is no fuzzy match.
const vms = await bowmark.providers.azure.getServicePricing({ serviceFamily: "Compute" });
log(`${vms.count} rows${vms.moreAvailable ? " (more available — narrow the filter)" : ""}`);