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\": ,\n \"lastName\": \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: string title: Savings plan recommendation details FlowSetSettingsBody: type: object properties: accountScope: type: string description: Required. Account scope determines if the account is payer or linked account. Valid values are `payer` or `linked`. customization: type: string description: Required. Customization setting for SP. Valid values are `COMPUTE_SP` or `EC2_INSTANCE_SP`. planTerm: type: string description: Required. Term of the SP. Valid values are `ONE_YEAR` or `THREE_YEARS`. paymentOption: type: string description: Required. Payment option for the SP. Valid values are `ALL_UPFRONT`, `PARTIAL_UPFRONT`, or `NO_UPFRONT`. lookBackPeriod: type: string description: Required. Lookback period for recommendation. Valid values are `SEVEN_DAYS`, `THIRTY_DAYS`, or `SIXTY_DAYS`. instanceFamily: type: string title: Optional. If EC2 Instance SP is selected in Customization, request will include list of instance family annualBudget: type: number format: double description: Optional. Annual budget input for SP. approval: type: boolean description: Optional. Purchase approval from the payer for the SP. Default value is `false`. payerId: type: string title: Required. Payer account ID description: Request message for the Flow.CreateSettings rpc. CreateSPRecommendationNotificationRequestConfigurations: type: object properties: accountScope: type: string customization: type: string planTerm: type: string paymentOption: type: string lookBackPeriod: type: string instanceFamily: type: string annualBudget: type: number format: double approval: type: boolean payerId: type: string title: Configurations for the Savings Plan CreateSPRecommendationNotificationRequestRecommendation: type: object properties: id: type: string currentMonthlyOnDemandSpend: type: number format: double estimatedMonthlySpend: type: number format: double estimatedMonthlySavingsDerived: type: number format: double totalDailyCost: type: number format: double currentSPCommitment: type: number format: double estimatedOnDemandCost: type: number format: double hourlyCommitment: type: number format: double estimatedMonthlySavings: type: number format: double estimatedSavings: type: number format: double recommendationLevel: type: string planType: type: string planTerm: type: string paymentOption: type: string lookBackPeriod: type: string estimatedROI: type: number format: double estimatedSPCost: type: number format: double estimatedTotalCost: type: number format: double lastUpdated: type: string title: Recommendation details for the Savings Plan v1UsageCostDetails: type: object properties: currentDate: type: string description: The specific date this entry represents, corresponding to one day within the requested date range. productCode: type: string description: The product code for which the usage and cost details are provided. ondemandCost: type: number format: double description: Total On-Demand cost in USD for the date. reservedCost: type: number format: double description: Total Reserved Instance cost in USD for the date. savingsPlanCostByFlow: type: number format: double description: Total Savings Plan cost in USD for the date purchased by Flow. savingsPlanCostByUser: type: number format: double description: Total Savings Plan cost in USD for the date purchased by user. spotCost: type: number format: double description: Total Spot Instance cost in USD for the date. coveragePercentage: type: number format: double description: Percentage of Savings Plan coverage for the date. description: Usage and Cost Details to be used in the GetDailyUsageCostDetailsResponse. flowV1SavingsPlanRecommendation: 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 recommendation details v1UtilizationDetails: type: object properties: savingsPlanName: type: string title: Descriptive name of the Savings Plan savingsPlanArn: type: string title: The ARN of the Savings Plan perDayUtilization: type: array items: type: object $ref: '#/definitions/blueapiFlowV1DailyUtilization' title: Array of daily utilization data for this Savings Plan description: Utilization details for Savings Plans, including ARN and utilization percentage. v1GetAwsAccountsResponse: type: object properties: groupId: type: string groupName: type: string payerAccounts: type: array items: type: string title: all payers registered on billing group linkedAccountToPayerId: type: object additionalProperties: type: string title: map of aws accountid to its payer id description: Response message for the Flow.GetAwsAccounts rpc. FlowGetAwsAccountsBody: type: object description: Response message for the Flow.GetAwsAccounts rpc. v1GetDailyUsageCostDetailsRequest: type: object properties: payerId: type: string description: Required. The id of the payer to fetch savings plan details for. startDate: type: string description: Required. The start date of the range for the savings plan details. endDate: type: string description: Required. The end date of the range for the savings plan details. description: Request message for the Flow.GetDailyUsageCostDetailsRequest rpc. FlowSetUserAccountSettingsBody: type: object properties: emails: type: array items: type: string description: Required. List of email addresses to send notifications to. theme: type: string description: Required. User interface preferences. language: type: string description: Required. Preferred language for the user interface. description: Request message for the Flow.SetUserAccountSettings rpc. v1GetSettingsResponse: type: object properties: id: type: string accountScope: type: string customization: type: string planTerm: type: string paymentOption: type: string lookBackPeriod: type: string instanceFamily: type: string annualBudget: type: number format: double approval: type: boolean lastUpdated: type: string payerId: type: string description: Response message for fetching previous settings configuration of a user. v1SettingsHistory: type: object properties: id: type: string description: Payer account ID. accountScope: type: string description: Account scope determines if the account is payer or linked account. customization: type: string description: Customization setting for SP. planTerm: type: string description: Term of the SP. paymentOption: type: string description: Payment option for the SP. lookBackPeriod: type: string description: Lookback period for recommendation. instanceFamily: type: string title: If EC2 Instance SP is selected in Customization, request will include list of instance family annualBudget: type: number format: double description: Annual budget input for SP. approval: type: boolean description: Purchase approval from the payer for the SP. lastUpdated: type: string description: Last updated timestamp of the settings configuration. description: Settings history message. v1CheckSPToPurchaseDetailsLinkExpiryResponse: type: object properties: isExpired: type: boolean title: Whether the link has expired expiryDate: type: string title: The raw expiry date from the URL (ISO8601 format) formattedDate: type: string title: User-friendly formatted date message: type: string title: Human-readable status message title: Response message for the Flow.CheckSPToPurchaseDetailsLinkExpiryRequest RPC v1GetSPToPurchaseDetailsResponse: type: object properties: recommendation: $ref: '#/definitions/flowV1SavingsPlanRecommendation' title: Recommendation details purchases: type: array items: type: object $ref: '#/definitions/flowV1SavingsPlanDetailsPurchase' title: List of purchase items 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 description: Response message for the Flow.GetSPToPurchaseDetails rpc. v1CreateCostExplorerAccessRequest: type: object properties: target: type: string description: Required. The target AWS account to validate. description: 'Request message for the Flow.CreateCostExplorerAccess rpc. This endpoint only supports the ''apionly'' template type.' v1CreateSPRecommendationNotificationResponse: type: object properties: message: type: string success: type: boolean title: Response after sending to Slack v1GetCrossAccountAccessDetailsResponse: type: object properties: target: type: string description: The queried target account. details: type: array items: type: object $ref: '#/definitions/v1CrossAccountAccessDetail' description: List of cross-access details for the target account. description: Response message for the Flow.GetCrossAccountAccessDetails rpc. v1MonthlyCosts: type: object properties: monthlyOnDemandCost: type: number format: double description: Actual monthly on-demand cost for the payer account. monthlyEffectiveCost: type: number format: double description: Actual monthly effective cost after applying Savings Plans. monthlyTotalSavings: type: number format: double description: Actual total monthly savings from Savings Plan usage. description: Summary of monthly cost values associated with a single Savings Plan. v1GetRecommendationDetailsResponse: type: object properties: id: type: string title: Unique ID of the recommendation details entry currentMonthlyOnDemandSpend: type: number format: double title: Projected monthly on-demand spend without Savings Plans, normalized from lookback period estimatedMonthlySpend: type: number format: double title: Projected total monthly spend after applying the recommended Savings Plan, normalized estimatedMonthlySavingsDerived: type: number format: double title: Difference between on-demand and post-SP spend, computed from normalized values totalDailyCost: type: number format: double title: Total current daily cost from usage, before applying any SP recommendation (Derived) currentSPCommitment: type: number format: double title: Current Savings Plan commitment applied estimatedOnDemandCost: type: number format: double title: Estimated daily on-demand cost without any Savings Plans hourlyCommitment: type: number format: double title: Suggested hourly commitment to purchase in USD estimatedMonthlySavings: type: number format: double title: Projected monthly savings from the recommended savings plan estimatedSavings: type: number format: double title: Percentage of potential savings from savings plan recommendationLevel: type: string title: Customization setting for savings plan planType: type: string description: Savings plan type. planTerm: type: string description: Savings plan duration. paymentOption: type: string description: Savings plan payment option. lookBackPeriod: type: string description: Savings plan lookback period used for analysis. estimatedROI: type: number format: double description: Savings plan estimated return on investment. estimatedSPCost: type: number format: double description: Savings plan total projected cost over the term. estimatedTotalCost: type: number format: double description: Savings plan estimated total cost and including on-demand. lastUpdated: type: string title: Savings plan last updated