Alphaus Flow API
(ALPHA) Flow API. Base URL: https://api.alphaus.cloud/m/blue/flow
(ALPHA) Flow API. Base URL: https://api.alphaus.cloud/m/blue/flow
swagger: '2.0'
info:
title: Blue API reference Admin Flow 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: Flow
description: '(ALPHA) Flow API. Base URL: https://api.alphaus.cloud/m/blue/flow'
externalDocs:
description: Service definition
url: https://github.com/alphauslabs/blueapi/tree/main/flow/
paths:
/v1/aws/xacct/cea:
get:
summary: Gets a CloudFormation launch URL for enabling read-only cross-account access to cost explorer information (API only).
operationId: Flow_GetCostExplorerAccessTemplateUrl
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetCostExplorerAccessTemplateUrlResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
tags:
- Flow
post:
summary: Creates a default cross-account access role for cost explorer (API only).
operationId: Flow_CreateCostExplorerAccess
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1CreateCostExplorerAccessResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
description: 'Request message for the Flow.CreateCostExplorerAccess rpc.
This endpoint only supports the ''apionly'' template type.'
in: body
required: true
schema:
$ref: '#/definitions/v1CreateCostExplorerAccessRequest'
tags:
- Flow
/v1/aws/xacct/spa:
get:
summary: Gets a CloudFormation launch URL for Savings Plan purchase capabilities
operationId: Flow_GetSPPurchaseAccessTemplateUrl
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetSPPurchaseAccessTemplateUrlResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
tags:
- Flow
post:
summary: Creates a default cross-account access role for Savings Plan (API only).
operationId: Flow_CreateSPPurchaseAccess
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1CreateSPPurchaseAccessResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
description: Request message for the Flow.CreateSPPurchaseAccess rpc.
in: body
required: true
schema:
$ref: '#/definitions/v1CreateSPPurchaseAccessRequest'
tags:
- Flow
/v1/aws/xacct/{payerId}/access:
get:
summary: Returns the activated cross-account access roles of the target payerId.
operationId: Flow_GetCrossAccountAccessDetails
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetCrossAccountAccessDetailsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: payerId
description: Required. The target payerId of the AWS account to be checked.
in: path
required: true
type: string
tags:
- Flow
/v1/aws/{billingInternalId}/accounts:
post:
summary: Returns all the aws accounts and its payer of the msp id
operationId: Flow_GetAwsAccounts
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetAwsAccountsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: billingInternalId
in: path
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/FlowGetAwsAccountsBody'
tags:
- Flow
/v1/info:
get:
summary: For Testing Purposes Only.
operationId: Flow_GetInfo
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/blueapiFlowV1GetInfoResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
tags:
- Flow
/v1/settings/history/{id}:
get:
summary: Gets the settings configuration history for a user.
operationId: Flow_GetSettingsHistory
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetSettingsHistoryResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: id
description: Required. The id of the payer to fetch settings history for.
in: path
required: true
type: string
tags:
- Flow
/v1/settings/recommendations/{id}:
get:
summary: Fetch user savings plan details
operationId: Flow_GetRecommendationDetails
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetRecommendationDetailsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: id
description: Required. The id of the payer to fetch recommendation details for.
in: path
required: true
type: string
tags:
- Flow
/v1/settings/{id}:
get:
summary: Fetch previous settings for a user
operationId: Flow_GetSettings
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetSettingsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: id
description: Required. The id of the payer to fetch settings for.
in: path
required: true
type: string
tags:
- Flow
put:
summary: Creates or Updates the settings configuration for recommendation.
operationId: Flow_SetSettings
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1SetSettingsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: id
description: Required. The id of the payer.
in: path
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/FlowSetSettingsBody'
tags:
- Flow
/v1/sp/purchaseDetails/notification:
post:
summary: Sends savings plan details to be purchased to a Slack channel or user email
operationId: Flow_SendSPToPurchaseDetailsNotification
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1SendSPToPurchaseDetailsNotificationsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
description: Request message for the Flow.SendSPToPurchaseDetailsNotifications rpc.
in: body
required: true
schema:
$ref: '#/definitions/v1SendSPToPurchaseDetailsNotificationsRequest'
tags:
- Flow
/v1/sp/purchaseDetails/notification/link/expiry:
get:
summary: Checks the expiry of the link in the SP to purchase details notification
operationId: Flow_CheckSPToPurchaseDetailsLinkExpiry
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1CheckSPToPurchaseDetailsLinkExpiryResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: url
description: 'Required. The URL containing the expiry information to check.
The URL to check for expiration'
in: query
required: false
type: string
tags:
- Flow
/v1/sp/purchaseDetails/{payerId}/{yearMonth}:
get:
summary: Get savings plan details to be purchased .
operationId: Flow_GetSPToPurchaseDetails
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetSPToPurchaseDetailsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: payerId
description: Required. The id of the payer account.
in: path
required: true
type: string
- name: yearMonth
description: Required. The year and month for which the savings plan details are requested, formatted as "YYYYMM".
in: path
required: true
type: string
tags:
- Flow
/v1/sp/recommendation/notification:
post:
summary: Sends configuration and recommendation to a Slack channel
operationId: Flow_CreateSPRecommendationNotification
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1CreateSPRecommendationNotificationResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/v1CreateSPRecommendationNotificationRequest'
tags:
- Flow
/v1/usagecost:
post:
summary: Gets the daily cost and usage details.
operationId: Flow_GetDailyUsageCostDetails
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetDailyUsageCostDetailsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
description: Request message for the Flow.GetDailyUsageCostDetailsRequest rpc.
in: body
required: true
schema:
$ref: '#/definitions/v1GetDailyUsageCostDetailsRequest'
tags:
- Flow
/v1/user/settings/{id}:
get:
summary: Gets the user account settings.
operationId: Flow_GetUserAccountSettings
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1GetUserAccountSettingsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: id
description: Required. The user ID of the user.
in: path
required: true
type: string
tags:
- Flow
put:
summary: Create or Update the user account settings.
operationId: Flow_SetUserAccountSettings
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v1SetUserAccountSettingsResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: id
description: Required. The user ID of the user.
in: path
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/FlowSetUserAccountSettingsBody'
tags:
- Flow
definitions:
flowV1SavingsPlanDetailsPurchase:
type: object
properties:
payerId:
type: string
linkedAccounts:
type: string
accountScope:
type: string
savingsPlanType:
type: string
term:
type: integer
format: int32
region:
type: string
instanceFamily:
type: string
recommendedHourlyCommitment:
type: number
format: double
paymentOption:
type: string
upfrontCost:
type: number
format: double
monthlyCost:
type: number
format: double
totalCost:
type: number
format: double
expiryDate:
type: string
title: Savings plan details to be purchased
v1CreateCostExplorerAccessResponse:
type: object
properties:
target:
type: string
description: The queried target account.
roleArn:
type: string
description: The role ARN that provides the cross-account access permissions.
externalId:
type: string
description: The external id for this role.
stackId:
type: string
description: The id of the CloudFormation stack deployed in the target account.
stackRegion:
type: string
description: The region where the stack is deployed.
templateUrl:
type: string
description: The latest template used to deploy the stack.
status:
type: string
description: This can be `latest`, `outdated`, or some error information.
lastUpdated:
type: string
description: The last updated timestamp, RFC3339 UTC.
access:
type: string
title: 'The access type- partial access to view simulation only: "cloud_explorer_access"'
description: Response message for the Flow.CreateCostExplorerAccess rpc.
v1GetCostExplorerAccessTemplateUrlResponse:
type: object
properties:
launchUrl:
type: string
description: The CloudFormation launch url. Open it in your browser.
templateUrl:
type: string
description: The latest CloudFormation template. The version is included in the filename.
stackName:
type: string
description: The default stack name used. Can be modified.
principal:
type: string
description: The AWS account that will receive the access. Do not change.
externalId:
type: string
description: The external id for this role. Do not change.
description: Response message for the Flow.GetCostExplorerAccessTemplateUrl rpc.
v1CreateSPPurchaseAccessResponse:
type: object
properties:
target:
type: string
description: The queried target account.
roleArn:
type: string
description: The role ARN that provides the cross-account access permissions.
externalId:
type: string
description: The external id for this role.
stackId:
type: string
description: The id of the CloudFormation stack deployed in the target account.
stackRegion:
type: string
description: The region where the stack is deployed.
templateUrl:
type: string
description: The latest template used to deploy the stack.
status:
type: string
description: This can be `latest`, `outdated`, or some error information.
lastUpdated:
type: string
description: The last updated timestamp, RFC3339 UTC.
access:
type: string
title: 'The access type- full access to view simulation and purchase saving plan: "savings_plan_access"'
description: Response message for the Flow.CreateSPPurchaseAccess rpc.
v1SetUserAccountSettingsResponse:
type: object
properties:
response:
type: string
description: Response message for the Flow.SetUserAccountSettings rpc.
v1SendSPToPurchaseDetailsNotificationsRequestSavingsPlanDetailsPurchase:
type: object
properties:
payerId:
type: string
linkedAccounts:
type: string
accountScope:
type: string
savingsPlanType:
type: string
term:
type: integer
format: int32
region:
type: string
instanceFamily:
type: string
recommendedHourlyCommitment:
type: number
format: double
paymentOption:
type: string
upfrontCost:
type: number
format: double
monthlyCost:
type: number
format: double
totalCost:
type: number
format: double
expiryDate:
type: string
title: Savings plan details to be purchased
v1CreateSPRecommendationNotificationRequest:
type: object
properties:
configurations:
$ref: '#/definitions/CreateSPRecommendationNotificationRequestConfigurations'
recommendation:
$ref: '#/definitions/CreateSPRecommendationNotificationRequestRecommendation'
title: Configuration and recommendation details to send to Slack
v1GetSettingsHistoryResponse:
type: object
properties:
settingsHistory:
type: array
items:
type: object
$ref: '#/definitions/v1SettingsHistory'
description: Response message for the Flow.GetSettingsHistory rpc.
v1CrossAccountAccessDetail:
type: object
properties:
roleArn:
type: string
description: The role ARN that provides the cross-account access permissions.
externalId:
type: string
description: The external id for this role.
stackId:
type: string
description: The id of the CloudFormation stack deployed in the target account.
stackRegion:
type: string
description: The region where the stack is deployed.
templateUrl:
type: string
description: The latest template used to deploy the stack.
status:
type: string
description: This can be `latest`, `outdated`, or some error information.
access:
type: string
title: 'The access type: "savings_plan_access" or "cost_explorer_access"'
description: Individual cross-access detail record.
v1GetDailyUsageCostDetailsResponse:
type: object
properties:
payerId:
type: string
description: The payer account ID for which the savings plan details are fetched.
monthlyCosts:
$ref: '#/definitions/v1MonthlyCosts'
description: Monthly aggregated cost summary for the Savings Plan.
spDetails:
type: array
items:
type: object
$ref: '#/definitions/v1SpDetails'
description: Purchased Savings Plan details for the payer account.
usageCostDetails:
type: array
items:
type: object
$ref: '#/definitions/v1UsageCostDetails'
description: Daily Savings Plan usage and cost details.
utilizationDetails:
type: array
items:
type: object
$ref: '#/definitions/v1UtilizationDetails'
description: Percentage of Savings Plan utilization per ARN.
description: A single entry containing Savings Plan, monthly cost summary, and usage breakdown.
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).'
v1GetUserAccountSettingsResponse:
type: object
properties:
id:
type: string
description: The payer ID of the user.
emails:
type: array
items:
type: string
description: List of email addresses to send notifications to.
theme:
type: string
description: User interface preferences.
language:
type: string
description: Preferred language for the user interface.
description: Response message for the Flow.GetUserAccountSettings rpc.
blueapiFlowV1GetInfoResponse:
type: object
properties:
response:
type: string
description: Response message for the Flow.GetInfo rpc.
v1SetSettingsResponse:
type: object
properties:
response:
type: string
description: Response message for the Flow.CreateSettings 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 }"
v1SendSPToPurchaseDetailsNotificationsResponse:
type: object
properties:
message:
type: string
success:
type: boolean
title: Response after sending SendSPToPurchaseDetailsNotifications to Slack
v1SendSPToPurchaseDetailsNotificationsRequest:
type: object
properties:
approval:
type: string
recommendation:
$ref: '#/definitions/v1SendSPToPurchaseDetailsNotificationsRequestSavingsPlanRecommendation'
purchases:
type: array
items:
type: object
$ref: '#/definitions/v1SendSPToPurchaseDetailsNotificationsRequestSavingsPlanDetailsPurchase'
mode:
type: string
title: '"slack" or "email"'
userEmail:
type: string
companyName:
type: string
ondemandCostBefore:
type: string
title: On-demand cost before savings plan
ondemandCostAfter:
type: string
title: On-demand cost after savings plan
reductionRate:
type: string
title: Cost reduction percentage
approvalLink:
type: string
title: Link for approval action
language:
type: string
title: Language code (en or ja)
linkExpiryDate:
type: string
title: ISO8601 formatted date when the approval link expires (3 days from sending)
description: Request message for the Flow.SendSPToPurchaseDetailsNotifications rpc.
v1CreateSPPurchaseAccessRequest:
type: object
properties:
target:
type: string
description: Required. The target AWS account to validate.
description: Request message for the Flow.CreateSPPurchaseAccess rpc.
v1GetSPPurchaseAccessTemplateUrlResponse:
type: object
properties:
launchUrl:
type: string
description: The CloudFormation launch url. Open it in your browser.
templateUrl:
type: string
description: The latest CloudFormation template. The version is included in the filename.
stackName:
type: string
description: The default stack name used. Can be modified.
principal:
type: string
description: The AWS account that will receive the access. Do not change.
externalId:
type: string
description: The external id for this role. Do not change.
description: Response message for the Flow.GetSPPurchaseAccessTemplateUrl rpc.
blueapiFlowV1DailyUtilization:
type: object
properties:
currentDate:
type: string
description: The current date for which the utilization is reported.
utilizationPercentage:
type: number
format: double
title: The percentage of utilization for this specific date
description: Daily utilization data for a specific date range.
v1SpDetails:
type: object
properties:
savingsPlanType:
type: string
description: The savings plan type, e.g., `Compute`, `Ec2`.
state:
type: string
description: The current state of the savings plan, e.g., `ACTIVE`, `EXPIRED`, `PENDING`.
startTime:
type: string
description: The start time of the savings plan.
endTime:
type: string
description: The end time of the savings plan.
returnableUntil:
type: string
description: The date until which the savings plan is returnable, if applicable.
commitment:
type: number
format: double
description: The commitment amount per hour for the savings plan in USD.
currency:
type: string
description: The currency in which the savings plan is priced, e.g., `USD`.
planTerm:
type: string
description: The duration of the plan term, e.g., `1 year`, `3 years`.
paymentOption:
type: string
description: The payment option for the savings plan, e.g., `All Upfront`, `Partial Upfront`, `No Upfront`.
productTypes:
type: array
items:
type: string
description: The product types covered by the savings plan, e.g., `EC2`, `Lambda`.
upfrontPaymentAmount:
type: number
format: double
description: The total amount paid at the start of the Savings Plan, if applicable.
recurringPaymentAmount:
type: number
format: double
description: The periodic (usually monthly) charge to pay over the term of the plan.
ec2InstanceFamily:
type: array
items:
type: string
description: The EC2 instance families covered by the savings plan, e.g., `m5`, `c5`.
tags:
type: string
description: The tag that refers to the one who purchased the Savings Plan.
purchasedBy:
type: string
description: The user or Flow that purchased the Savings Plan.
description: Savings Plan Details to be used in the GetDailyUsageCostDetailsResponse.
v1SendSPToPurchaseDetailsNotificationsRequestSavingsPlanRecommendation:
type: object
properties:
payerId:
type: string
linkedAccounts:
type: string
accountScope:
type: string
savingsPlanType:
type: string
term:
type: integer
format: int32
region:
type: string
instanceFamily:
type: string
recommendedHourlyCommitment:
type: number
format: double
paymentOption:
type: string
upfrontCost:
type: number
format: double
monthlyCost:
type: number
format: double
totalCost:
type: number
format: double
expiryDate:
type: s
# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/alphaus/refs/heads/main/openapi/alphaus-flow-api-openapi.yml