Bowmark AIdocs

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

FunctionWhat it does
getServicePricingReturns 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.
listServicesReturns 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)" : ""}`);