Alphaus Pricing API
(BETA) Pricing API. Base URL: https://api.alphaus.cloud/m/blue/pricing
(BETA) Pricing API. Base URL: https://api.alphaus.cloud/m/blue/pricing
swagger: '2.0'
info:
title: Blue API reference Admin Pricing API
description: 'Alphaus provides an API for interacting with its services. Blue API is a RESTful API that
can be accessed by an HTTP client such as `curl`, or any HTTP library which is part of most modern
programming languages. This API reference is autogenerated from [protocol buffers](https://developers.google.com/protocol-buffers)
defined in this [repository](https://github.com/alphauslabs/blueapi), together with our supported
[client libraries](https://alphauslabs.github.io/docs/blueapi/client-sdks/). See the official [documentation](https://alphauslabs.github.io/docs/blueapi/overview/)
for more information.
You may encounter the following feature maturity indicators:
- **(WORK-IN-PROGRESS)** - Development is ongoing, don''t use yet;
- **(BETA)** - New or experimental features, subject to changes; and
- **(DEPRECATED)** - Outdated or replaced features.
Some endpoints, especially those that return lists of resources, have streaming responses; newline-separated
stream of “chunks”. Each chunk is an envelope that can contain either a response message or an error.
Only the last chunk will include an error, if any.'
version: v1
host: api.alphaus.cloud
basePath: /m/blue
schemes:
- https
consumes:
- application/json
produces:
- application/json
tags:
- name: Pricing
description: '(BETA) Pricing API. Base URL: https://api.alphaus.cloud/m/blue/pricing'
externalDocs:
description: Service definition
url: https://github.com/alphauslabs/blueapi/tree/main/pricing/
paths:
/v0/info:
get:
summary: Test endpoint only.
operationId: Pricing_GetInfo
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/blueapiPricingV1GetInfoResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
tags:
- Pricing
/v0/{vendor}/pricing:
post:
summary: 'WORK-IN-PROGRESS: Get cloud pricing information'
operationId: Pricing_GetPricing
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetPricingResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: vendor
description: Required. Cloud vendor, only `aws` and `azure` are currently supported.
in: path
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/PricingGetPricingBody'
tags:
- Pricing
/v0/{vendor}/services:
get:
summary: 'WORK-IN-PROGRESS: Get list of supported services, regions, attributes, and columns for
filtering'
operationId: Pricing_GetSupportedServices
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetSupportedServicesResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: vendor
description: Required. Cloud vendor, only `aws` and `azure` are currently supported.
in: path
required: true
type: string
tags:
- Pricing
definitions:
PricingGetPricingBody:
type: object
properties:
service:
type: string
description: "Required. Cloud vendor service. \nSupported services can be listed using `/{vendor}/services`\
\ endpoint. For usage information visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices."
region:
type: string
description: 'Required. Region code.
Supported regions can be listed using `/{vendor}/services` endpoint. For usage information visit
https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices.
View all available AWS services by region at https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/.
View all available Azure services by region at https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/.'
token:
type: string
description: Optional. Supply token that is included in the latest response to continue fetching
the remaining chunks of data. No further data can be retrieved once the token returned is empty.
filters:
type: object
additionalProperties:
type: string
description: "Optional. Filters to apply to the pricing data.\nThis is a map of column names and\
\ values to filter pricing items. Each key-value pair in the map represents a filter condition.\n\
Supported filter key-value pairs can be listed using `/{vendor}/services` endpoint. For usage\
\ information visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices.\n\
\nFor example, if you want to return AWS EC2 items that has All Upfront purchase option, add\
\ `\"purchaseOption\": \"All Upfront\"` to the filters.\n\nMultiple key-value pairs are supported\
\ but keys should not be duplicated.\nFor example, for AWS EC2, the following is valid,\n```\n\
\"filters\": {\n \"purchaseOption\": \"All Upfront\",\n \"operatingSystem\": \"Windows\"\n\
}\n```\nbut not the following,\n```\n\"filters\": {\n \"purchaseOption\": \"All Upfront\",\n\
\ \"purchaseOption\": \"Partial Upfront\"\n}\n```"
columns:
type: array
items:
type: string
description: 'Optional. Only specified columns will be returned, if provided.
All columns will be returned if this array is empty.
Supported columns can be listed using `/{vendor}/services` endpoint. For usage information visit
https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices.'
description: Request message for Pricing.GetPricing rpc.
v1Attribute:
type: object
properties:
key:
type: string
description: Filter key.
values:
type: array
items:
type: string
description: Array of filter values.
v1GetPricingResponse:
type: object
properties:
token:
type: string
description: Use token to retrieve next set of pricing items. An empty string means there are
no more items to retrieve.
pricingData:
type: array
items:
type: object
$ref: '#/definitions/pricingPricingData'
description: Array of pricing items details. Maximum number of items returned per call is 1000.
description: Response message for Pricing.GetPricing rpc.
protobufAny:
type: object
properties:
'@type':
type: string
description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol\
\ buffer message. This string must contain at least\none \"/\" character. The last segment of\
\ the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`).\
\ The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice,\
\ teams usually precompile into the binary all types that they\nexpect it to use in the context\
\ of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally\
\ set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme\
\ is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n\
\ value in binary format, or produce an error.\n* Applications are allowed to cache lookup\
\ results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup.\
\ Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned\
\ type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available\
\ in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\
\ As of May 2023, there are no widely used type server\nimplementations and no plans to implement\
\ one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation\
\ specific semantics."
additionalProperties: {}
description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that\
\ describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack\
\ Any values in the form\nof utility functions or additional generated methods of the Any type.\n\
\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n\
\ ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message\
\ in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class))\
\ {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance()))\
\ {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message\
\ in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n\
\ any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo :=\
\ &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n \
\ ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n \
\ }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name'\
\ as the type URL and the unpack\nmethods only use the fully qualified type name after the last\
\ '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n\
====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized,\
\ embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n\
\ package google.profile;\n message Person {\n string first_name = 1;\n string last_name\
\ = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"\
firstName\": <string>,\n \"lastName\": <string>\n }\n\nIf the embedded message type is well-known\
\ and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value`\
\ which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\
\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"\
1.212s\"\n }"
v1SupportedService:
type: object
properties:
service:
type: string
description: AWS or Azure services only as of now.
regions:
type: array
items:
type: string
description: Array of regions supported for the specific service.
attributes:
type: array
items:
type: object
$ref: '#/definitions/v1Attribute'
description: Array of attributes that can be used as key-value pairs for filtering.
columns:
type: array
items:
type: string
description: 'Array of column names that can be used to specify what columns should `/{vendor}/pricing`
return.
For usage information, visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetPricing.'
rpcStatus:
type: object
properties:
code:
type: integer
format: int32
description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
message:
type: string
description: 'A developer-facing error message, which should be in English. Any
user-facing error message should be localized and sent in the
[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.'
details:
type: array
items:
type: object
$ref: '#/definitions/protobufAny'
description: 'A list of messages that carry the error details. There is a common set of
message types for APIs to use.'
description: 'The `Status` type defines a logical error model that is suitable for
different programming environments, including REST APIs and RPC APIs. It is
used by [gRPC](https://github.com/grpc). Each `Status` message contains
three pieces of data: error code, error message, and error details.
You can find out more about this error model and how to work with it in the
[API Design Guide](https://cloud.google.com/apis/design/errors).'
v1GetSupportedServicesResponse:
type: object
properties:
supportedServices:
type: array
items:
type: object
$ref: '#/definitions/v1SupportedService'
description: 'Suported services, regions, and attributes that can be used to specify which pricing
data to retrieve from `/{vendor}/pricing`.
For usage information, visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetPricing.'
description: Response message for Pricing.GetSupportedServices rpc.
blueapiPricingV1GetInfoResponse:
type: object
properties:
response:
type: string
description: Response message for the Pricing.GetInfo rpc.
pricingPricingData:
type: object
properties:
vendor:
type: string
description: Cloud vendor.
service:
type: string
description: 'Cloud vendor service. We have a limited number of services supported currently.
Refer to https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices to list
supported services.'
regionCode:
type: string
description: Region code.
sku:
type: string
description: SKU ID.
unit:
type: string
description: Unit of measure.
pricePerUnit:
type: number
format: double
description: Price per unit.
serviceDetails:
type: object
description: "Service details. A protobuf struct which translates to a map for HTTP. Keys are\
\ of type string and values can be of type string, float, or bool, depending on the detail.\n\
\nThe following is an example of a serviceDetails field of a response,\n```\n\"serviceDetails\"\
: {\n \"availabilityZone\": \"NA\",\n \"capacityStatus\": \"Used\",\n \"classicNetworkingSupport\"\
: \"false\",\n \"clockSpeed\": \"3.5 GHz\",\n \"currency\": \"USD\",\n \"currentGeneration\"\
: \"Yes\",\n \"dedicatedEbsThroughput\": \"Up to 10000 Mbps\",\n \"ebsOptimized\": \"\",\n\
\ \"ecu\": \"NA\",\n \"effectiveDate\": \"2022-04-01\",\n \"elasticGraphicsType\": \"\",\n\
\ \"endingRange\": \"Inf\",\n \"enhancedNetworkingSupported\": \"Yes\",\n \"fromLocation\"\
: \"\",\n \"fromLocationType\": \"\",\n \"fromRegionCode\": \"\",\n \"gpu\": \"\",\n \"\
gpuMemory\": \"NA\",\n \"groupDescription\": \"\",\n \"groupings\": \"\",\n \"instance\"\
: \"\",\n \"instanceCapacity10Xlarge\": \"\",\n \"instanceCapacity12Xlarge\": \"\",\n \"\
instanceCapacity16Xlarge\": \"\",\n \"instanceCapacity18Xlarge\": \"\",\n \"instanceCapacity24Xlarge\"\
: \"\",\n \"instanceCapacity2Xlarge\": \"\",\n \"instanceCapacity32Xlarge\": \"\",\n \"instanceCapacity4Xlarge\"\
: \"\",\n \"instanceCapacity8Xlarge\": \"\",\n \"instanceCapacity9Xlarge\": \"\",\n \"instanceCapacityLarge\"\
: \"\",\n \"instanceCapacityMedium\": \"\",\n \"instanceCapacityMetal\": \"\",\n \"instanceCapacityXlarge\"\
: \"\",\n \"instanceFamily\": \"Compute optimized\",\n \"instanceSku\": \"\",\n \"instanceType\"\
: \"c6i.large\",\n \"intelAvx2Available\": \"Yes\",\n \"intelAvxAvailable\": \"Yes\",\n \"\
intelTurboAvailable\": \"Yes\",\n \"leaseContractLength\": \"1yr\",\n \"licenseModel\": \"\
No License required\",\n \"location\": \"Asia Pacific (Tokyo)\",\n \"locationType\": \"AWS\
\ Region\",\n \"marketOption\": \"OnDemand\",\n \"maxIopsBurstPerformance\": \"\",\n \"maxIopsVolume\"\
: \"\",\n \"maxThroughputVolume\": \"\",\n \"maxVolumeSize\": \"\",\n \"memory\": \"4 GiB\"\
,\n \"networkPerformance\": \"Up to 12500 Megabit\",\n \"normalizationSizeFactor\": \"4\"\
,\n \"offerTermCode\": \"4NA7Y494T4\",\n \"offeringClass\": \"standard\",\n \"operatingSystem\"\
: \"Windows\",\n \"operation\": \"RunInstances:0202\",\n \"physicalCores\": \"\",\n \"physicalProcessor\"\
: \"Intel Xeon 8375C (Ice Lake)\",\n \"preInstalledSw\": \"SQL Web\",\n \"priceDescription\"\
: \"Windows with SQL Server Web (Amazon VPC), c6i.large reserved instance applied\",\n \"processorArchitecture\"\
: \"64-bit\",\n \"processorFeatures\": \"Intel AVX; Intel AVX2; Intel AVX512; Intel Turbo\"\
,\n \"productFamily\": \"Compute Instance\",\n \"productType\": \"\",\n \"provisioned\":\
\ \"\",\n \"purchaseOption\": \"No Upfront\",\n \"rateCode\": \"2223B6PCG6QAUYY6.4NA7Y494T4.6YS6EN2CT7\"\
,\n \"relatedTo\": \"\",\n \"resourceType\": \"\",\n \"serviceCode\": \"AmazonEC2\",\n \"\
serviceName\": \"Amazon Elastic Compute Cloud\",\n \"snapShotArchiveFeeType\": \"\",\n \"\
startingRange\": \"0\",\n \"storage\": \"EBS only\",\n \"storageMedia\": \"\",\n \"tenancy\"\
: \"Dedicated\",\n \"termType\": \"Reserved\",\n \"toLocation\": \"\",\n \"toLocationType\"\
: \"\",\n \"toRegionCode\": \"\",\n \"transferType\": \"\",\n \"usageType\": \"APN1-DedicatedUsage:c6i.large\"\
,\n \"vcpu\": \"2\",\n \"volumeApiName\": \"\",\n \"volumeType\": \"\",\n \"vpcNetworkingSupport\"\
: \"true\"\n}\n```"
title: Pricing details
servers:
- url: https://api.alphaus.cloud/m/blue
description: Base URL reconciled from apis.yml