diff --git a/openapiv2/apidocs.swagger.json b/openapiv2/apidocs.swagger.json index d422444..dd97b9b 100644 --- a/openapiv2/apidocs.swagger.json +++ b/openapiv2/apidocs.swagger.json @@ -175,6 +175,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ExportAuditLogs rpc.", "in": "body", "required": true, "schema": { @@ -262,6 +263,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Admin.CreateCloudWatchMetricsStream rpc.", "in": "body", "required": true, "schema": { @@ -325,6 +327,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Admin.CreateDefaultCostAccess rpc.", "in": "body", "required": true, "schema": { @@ -407,6 +410,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -469,6 +473,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -567,6 +572,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Admin.CreateNotificationChannel rpc.", "in": "body", "required": true, "schema": { @@ -623,6 +629,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -676,7 +683,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateNotificationChannelRequest" + "$ref": "#/definitions/AdminUpdateNotificationChannelBody" } } ], @@ -706,6 +713,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Admin.CreateDefaultNotificationChannel rpc.", "in": "body", "required": true, "schema": { @@ -760,6 +768,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Admin.SaveNotificationSettings rpc.", "in": "body", "required": true, "schema": { @@ -814,6 +823,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Admin.CreateNotificationTypeChannels rpc.", "in": "body", "required": true, "schema": { @@ -871,6 +881,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -931,7 +942,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateNotificationRequest" + "$ref": "#/definitions/AdminUpdateNotificationBody" } } ], @@ -1053,6 +1064,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Iam.CreateApiClient rpc.", "in": "body", "required": true, "schema": { @@ -1073,6 +1085,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -1197,6 +1210,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -1281,7 +1295,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateFeatureFlagsRequest" + "$ref": "#/definitions/IamUpdateFeatureFlagsBody" } } ], @@ -1319,6 +1333,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -1332,6 +1347,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Iam.CreateIdentityProvider rpc.", "in": "body", "required": true, "schema": { @@ -1352,6 +1368,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -1427,6 +1444,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Iam.CreateIpFilter rpc.", "in": "body", "required": true, "schema": { @@ -1447,6 +1465,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -1534,7 +1553,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreatePartnerTokenRequest" + "$ref": "#/definitions/IamCreatePartnerTokenBody" } } ], @@ -1574,7 +1593,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1RefreshPartnerTokenRequest" + "$ref": "#/definitions/IamRefreshPartnerTokenBody" } } ], @@ -1604,6 +1623,7 @@ "parameters": [ { "name": "body", + "description": "Request for message Iam.ValidateVerificationCode rpc.", "in": "body", "required": true, "schema": { @@ -1699,6 +1719,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Iam.CreateRole rpc.", "in": "body", "required": true, "schema": { @@ -1719,6 +1740,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -1786,7 +1808,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateRoleRequest" + "$ref": "#/definitions/IamUpdateRoleBody" } } ], @@ -1846,6 +1868,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Iam.CreateUserRoleMapping rpc.", "in": "body", "required": true, "schema": { @@ -1877,6 +1900,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Iam.UpdateUserRoleMapping rpc.", "in": "body", "required": true, "schema": { @@ -1940,6 +1964,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Iam.CreateUser rpc.", "in": "body", "required": true, "schema": { @@ -1989,6 +2014,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2160,6 +2186,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2192,6 +2219,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2215,7 +2243,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CancelOperationRequest" + "$ref": "#/definitions/OperationsCancelOperationBody" } } ], @@ -2253,6 +2281,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2287,6 +2316,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Organization.CreateOrg rpc.", "in": "body", "required": true, "schema": { @@ -2307,6 +2337,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2320,6 +2351,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Organization.UpdateMetadata rpc.", "in": "body", "required": true, "schema": { @@ -2340,6 +2372,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2353,6 +2386,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Organization.UpdatePassword rpc.", "in": "body", "required": true, "schema": { @@ -2373,6 +2407,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2396,6 +2431,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2406,6 +2442,14 @@ } } }, + "parameters": [ + { + "name": "key", + "in": "query", + "required": false, + "type": "string" + } + ], "tags": [ "Organization" ] @@ -2488,7 +2532,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1GetPricingRequest" + "$ref": "#/definitions/PricingGetPricingBody" } } ], @@ -2589,6 +2633,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateAccessGroup rpc.", "in": "body", "required": true, "schema": { @@ -2647,6 +2692,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2700,7 +2746,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateAccessGroupRequest" + "$ref": "#/definitions/BillingUpdateAccessGroupBody" } } ], @@ -2717,6 +2763,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2730,6 +2777,7 @@ "parameters": [ { "name": "body", + "description": "Request message for Register Data Access. For azure and gcp.", "in": "body", "required": true, "schema": { @@ -2802,7 +2850,7 @@ }, { "name": "vendor", - "description": "Vendor (GCP/Azure).", + "description": "Vendor (GCP/Azure)", "in": "query", "required": false, "type": "string" @@ -2826,6 +2874,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2846,7 +2895,7 @@ }, { "name": "vendor", - "description": "Vendor (GCP/Azure).", + "description": "Vendor (GCP/Azure)", "in": "query", "required": false, "type": "string" @@ -2870,6 +2919,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -2893,7 +2943,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateDataAccessRequest" + "$ref": "#/definitions/CoverUpdateDataAccessBody" } } ], @@ -2978,6 +3028,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -3032,7 +3083,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateAdjustmentConfigRequest" + "$ref": "#/definitions/BillingCreateAdjustmentConfigBody" } } ], @@ -3070,7 +3121,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateAdjustmentConfigRequest" + "$ref": "#/definitions/BillingUpdateAdjustmentConfigBody" } } ], @@ -3101,6 +3152,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateBudgetAlerts rpc.", "in": "body", "required": true, "schema": { @@ -3121,6 +3173,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -3216,6 +3269,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -3246,6 +3300,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -3269,7 +3324,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateAnomalyAlertRequest" + "$ref": "#/definitions/CoverUpdateAnomalyAlertBody" } } ], @@ -3432,7 +3487,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateAlertDetailsRequest" + "$ref": "#/definitions/CoverUpdateAlertDetailsBody" } } ], @@ -3449,6 +3504,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -3544,6 +3600,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -3574,6 +3631,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -3597,7 +3655,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateDiscountExpirationAlertRequest" + "$ref": "#/definitions/CoverUpdateDiscountExpirationAlertBody" } } ], @@ -3646,6 +3704,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -3700,7 +3759,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateBudgetAlertsRequest" + "$ref": "#/definitions/CostUpdateBudgetAlertsBody" } } ], @@ -3740,6 +3799,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ReadBudgetAlerts rpc.", "in": "body", "required": true, "schema": { @@ -3782,6 +3842,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the RestoreAccountUsage rpc.", "in": "body", "required": true, "schema": { @@ -3824,6 +3885,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the RestoreAccountUsage rpc.", "in": "body", "required": true, "schema": { @@ -3866,6 +3928,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateAllocator rpc.", "in": "body", "required": true, "schema": { @@ -3908,6 +3971,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ListFees rpc.", "in": "body", "required": true, "schema": { @@ -3950,6 +4014,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the RestoreFee rpc.", "in": "body", "required": true, "schema": { @@ -3992,6 +4057,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateAllocator rpc.", "in": "body", "required": true, "schema": { @@ -4034,6 +4100,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the GetCostGroupFee rpc.", "in": "body", "required": true, "schema": { @@ -4076,6 +4143,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ListFees rpc.", "in": "body", "required": true, "schema": { @@ -4118,6 +4186,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the RestoreSavings rpc.", "in": "body", "required": true, "schema": { @@ -4160,6 +4229,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateAllocator rpc.", "in": "body", "required": true, "schema": { @@ -4202,6 +4272,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the GetCostGroupAllocation rpc.", "in": "body", "required": true, "schema": { @@ -4265,6 +4336,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateAllocator rpc.", "in": "body", "required": true, "schema": { @@ -4285,6 +4357,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -4337,7 +4410,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CostAllocatorRequest" + "$ref": "#/definitions/CoverUpdateAllocatorBody" } } ], @@ -4408,14 +4481,14 @@ "parameters": [ { "name": "vendor", - "description": "Required: gcp.", + "description": "Required: gcp", "in": "query", "required": false, "type": "string" }, { "name": "target", - "description": "Required: projectId.", + "description": "Required: projectId", "in": "query", "required": false, "type": "string" @@ -4509,6 +4582,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Asset.ListResources rpc.", "in": "body", "required": true, "schema": { @@ -4605,6 +4679,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateAccountAccess rpc.", "in": "body", "required": true, "schema": { @@ -4647,6 +4722,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ListAccountAccess rpc.", "in": "body", "required": true, "schema": { @@ -4680,6 +4756,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateAccountAccess rpc.", "in": "body", "required": true, "schema": { @@ -4713,6 +4790,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateAccountAccessStackset rpc.", "in": "body", "required": true, "schema": { @@ -4809,6 +4887,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Cost.ImportCurFiles rpc.", "in": "body", "required": true, "schema": { @@ -4851,6 +4930,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Billing.ListAwsCalculationHistory rpc.", "in": "body", "required": true, "schema": { @@ -4871,6 +4951,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -4904,6 +4985,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -4960,6 +5042,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -5029,21 +5112,21 @@ }, { "name": "calcType", - "description": "Optional. Filter by calcType. Format: calType=account\nValid values: account, tag.", + "description": "Optional. Filter by calcType. Format: calType=account\nValid values: account, tag", "in": "query", "required": false, "type": "string" }, { "name": "displayCost", - "description": "Optional. Filter by displayCost. Format: displayCost=unblended_cost\nvalid values: unblended_cost, true_unblended_cost.", + "description": "Optional. Filter by displayCost. Format: displayCost=unblended_cost\nvalid values: unblended_cost, true_unblended_cost", "in": "query", "required": false, "type": "string" }, { "name": "bgType", - "description": "Optional. For aws only, filter will be ignored for other vendors.\nValid values: default, imported.", + "description": "Optional. For aws only, filter will be ignored for other vendors.\nValid values: default, imported", "in": "query", "required": false, "type": "string" @@ -5073,6 +5156,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Billing.CreateBillingGroup rpc.", "in": "body", "required": true, "schema": { @@ -5220,6 +5304,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -5243,7 +5328,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateBillingGroupInvoiceTemplateRequest" + "$ref": "#/definitions/BillingUpdateBillingGroupInvoiceTemplateBody" } } ], @@ -5376,7 +5461,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateBudgetRequest" + "$ref": "#/definitions/CoverUpdateBudgetBody" } } ], @@ -5582,7 +5667,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateChannelDetailsRequest" + "$ref": "#/definitions/CoverUpdateChannelDetailsBody" } } ], @@ -5845,7 +5930,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1SetCostGroupAnomalyOptionsRequest" + "$ref": "#/definitions/CoverSetCostGroupAnomalyOptionsBody" } } ], @@ -5885,7 +5970,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCostGroupColorThemeRequest" + "$ref": "#/definitions/CoverUpdateCostGroupColorThemeBody" } } ], @@ -5925,7 +6010,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCostGroupCombinationsRequest" + "$ref": "#/definitions/CoverUpdateCostGroupCombinationsBody" } } ], @@ -5965,7 +6050,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCostGroupDescriptionRequest" + "$ref": "#/definitions/CoverUpdateCostGroupDescriptionBody" } } ], @@ -6005,7 +6090,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1SetCostGroupEventIndicatorRequest" + "$ref": "#/definitions/CoverSetCostGroupEventIndicatorBody" } } ], @@ -6045,7 +6130,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCostGroupIconRequest" + "$ref": "#/definitions/CoverUpdateCostGroupIconBody" } } ], @@ -6085,7 +6170,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCostGroupImageRequest" + "$ref": "#/definitions/CoverUpdateCostGroupImageBody" } } ], @@ -6125,7 +6210,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1AssignCostGroupMemberRequest" + "$ref": "#/definitions/CoverAssignCostGroupMemberBody" } } ], @@ -6165,7 +6250,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1RemoveCostGroupMemberRequest" + "$ref": "#/definitions/CoverRemoveCostGroupMemberBody" } } ], @@ -6205,7 +6290,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCostGroupNameRequest" + "$ref": "#/definitions/CoverUpdateCostGroupNameBody" } } ], @@ -6297,6 +6382,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -6348,7 +6434,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCustomFieldRequest" + "$ref": "#/definitions/BillingUpdateCustomFieldBody" } } ], @@ -6410,6 +6496,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Billing.CreateCustomizedBillingService rpc.", "in": "body", "required": true, "schema": { @@ -6476,6 +6563,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -6513,6 +6601,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -6543,7 +6632,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1SetCustomizedBillingServiceBillingGroupRequest" + "$ref": "#/definitions/BillingSetCustomizedBillingServiceBillingGroupBody" } } ], @@ -6597,6 +6686,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -6650,7 +6740,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCustomizedBillingServiceRequest" + "$ref": "#/definitions/BillingUpdateCustomizedBillingServiceBody" } } ], @@ -6689,6 +6779,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Billing.ReadCustomizedBillingServices rpc.", "in": "body", "required": true, "schema": { @@ -6742,6 +6833,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -6752,6 +6844,20 @@ } } }, + "parameters": [ + { + "name": "groupId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "vendor", + "in": "query", + "required": false, + "type": "string" + } + ], "tags": [ "Billing" ] @@ -6794,7 +6900,7 @@ }, { "name": "isAssociated", - "description": "this setting is ignored if groupId is not empty\nset true to return only the free format associated to a BG.", + "description": "this setting is ignored if groupId is not empty\nset true to return only the free format associated to a BG", "in": "query", "required": false, "type": "boolean" @@ -6811,6 +6917,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -6880,7 +6987,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ListInvoiceStatusRequest" + "$ref": "#/definitions/BillingListInvoiceStatusBody" } } ], @@ -6984,7 +7091,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateInvoiceRequest" + "$ref": "#/definitions/BillingCreateInvoiceBody" } } ], @@ -7024,7 +7131,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ExportInvoiceFileRequest" + "$ref": "#/definitions/BillingExportInvoiceFileBody" } } ], @@ -7041,6 +7148,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -7064,7 +7172,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateInvoicePreviewsRequest" + "$ref": "#/definitions/BillingUpdateInvoicePreviewsBody" } } ], @@ -7104,7 +7212,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1GetInvoiceRequest" + "$ref": "#/definitions/BillingGetInvoiceBody" } } ], @@ -7143,6 +7251,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ListInvoice rpc.", "in": "body", "required": true, "schema": { @@ -7185,6 +7294,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ReadInvoiceCosts rpc.", "in": "body", "required": true, "schema": { @@ -7227,6 +7337,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ReadInvoiceGroupCosts rpc.", "in": "body", "required": true, "schema": { @@ -7269,6 +7380,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ReadInvoiceOverviews rpc.", "in": "body", "required": true, "schema": { @@ -8046,7 +8158,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateUserProfileRequest" + "$ref": "#/definitions/CoverUpdateUserProfileBody" } } ], @@ -8246,7 +8358,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateMemberPermissionRequest" + "$ref": "#/definitions/CoverUpdateMemberPermissionBody" } } ], @@ -8330,14 +8442,14 @@ "parameters": [ { "name": "startDate", - "description": "Required. Start date Format: \"YYYYMMDD\".", + "description": "Required. Start date Format: \"YYYYMMDD\"", "in": "query", "required": false, "type": "string" }, { "name": "endDate", - "description": "Required. End date Format: \"YYYYMMDD\".", + "description": "Required. End date Format: \"YYYYMMDD\"", "in": "query", "required": false, "type": "string" @@ -8557,7 +8669,7 @@ }, { "name": "optimizationStatus", - "description": "Valid inputs are: \"in-progress\", \"error\", \"open\",\"done\" and \"all\".", + "description": "Valid inputs are: \"in-progress\", \"error\", \"open\",\"done\" and \"all\"", "in": "query", "required": false, "type": "string" @@ -8832,7 +8944,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ExecuteOptimizationRequest" + "$ref": "#/definitions/CoverExecuteOptimizationBody" } } ], @@ -8923,21 +9035,21 @@ }, { "name": "startDate", - "description": "Required. Start date Format: \"YYYYMMDD\".", + "description": "Required. Start date Format: \"YYYYMMDD\"", "in": "query", "required": false, "type": "string" }, { "name": "endDate", - "description": "Required. End date Format: \"YYYYMMDD\".", + "description": "Required. End date Format: \"YYYYMMDD\"", "in": "query", "required": false, "type": "string" }, { "name": "reportType", - "description": "Required. Report Type. Valid inputs are: \"quarterly\", \"yearly\".", + "description": "Required. Report Type. Valid inputs are: \"quarterly\", \"yearly\"", "in": "query", "required": false, "type": "string" @@ -9016,6 +9128,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the CreateReseller rpc.", "in": "body", "required": true, "schema": { @@ -9073,6 +9186,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -9126,7 +9240,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateResellerRequest" + "$ref": "#/definitions/BillingUpdateResellerBody" } } ], @@ -9236,6 +9350,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the Billing.CreateInvoiceServiceDiscounts rpc.", "in": "body", "required": true, "schema": { @@ -9269,6 +9384,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ExportAccountInvoiceServiceDiscounts rpc.", "in": "body", "required": true, "schema": { @@ -9302,6 +9418,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ExportBillingGroupInvoiceServiceDiscounts rpc.", "in": "body", "required": true, "schema": { @@ -9322,6 +9439,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -9375,7 +9493,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateAccountInvoiceServiceDiscountsRequest" + "$ref": "#/definitions/BillingCreateAccountInvoiceServiceDiscountsBody" } } ], @@ -9413,7 +9531,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateAccountInvoiceServiceDiscountsRequest" + "$ref": "#/definitions/BillingUpdateAccountInvoiceServiceDiscountsBody" } } ], @@ -9462,7 +9580,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ListAccountInvoiceServiceDiscountsRequest" + "$ref": "#/definitions/BillingListAccountInvoiceServiceDiscountsBody" } } ], @@ -9479,6 +9597,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -9502,7 +9621,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1RemoveAccountInvoiceServiceDiscountsRequest" + "$ref": "#/definitions/BillingRemoveAccountInvoiceServiceDiscountsBody" } } ], @@ -9556,6 +9675,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -9609,7 +9729,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateInvoiceServiceDiscountsRequest" + "$ref": "#/definitions/BillingUpdateInvoiceServiceDiscountsBody" } } ], @@ -9658,7 +9778,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadServiceDiscountsServicesRequest" + "$ref": "#/definitions/BillingReadServiceDiscountsServicesBody" } } ], @@ -9688,6 +9808,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ExportServiceDiscounts rpc.", "in": "body", "required": true, "schema": { @@ -9730,6 +9851,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ListInvoiceServiceDiscounts rpc.", "in": "body", "required": true, "schema": { @@ -9965,7 +10087,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateUnitTypeRequest" + "$ref": "#/definitions/CoverUpdateUnitTypeBody" } } ], @@ -10148,7 +10270,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateViewLayoutRequest" + "$ref": "#/definitions/CoverUpdateViewLayoutBody" } } ], @@ -10195,7 +10317,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateViewWidgetRequest" + "$ref": "#/definitions/CoverUpdateViewWidgetBody" } } ], @@ -10328,7 +10450,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateViewRequest" + "$ref": "#/definitions/CoverUpdateViewBody" } } ], @@ -10367,7 +10489,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateViewColorThemeRequest" + "$ref": "#/definitions/CoverUpdateViewColorThemeBody" } } ], @@ -10406,7 +10528,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateViewCurrencyRequest" + "$ref": "#/definitions/CoverUpdateViewCurrencyBody" } } ], @@ -10446,7 +10568,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1AddSideMenuFavoriteRequest" + "$ref": "#/definitions/CoverAddSideMenuFavoriteBody" } } ], @@ -10486,7 +10608,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateSideMenuStateRequest" + "$ref": "#/definitions/CoverUpdateSideMenuStateBody" } } ], @@ -10526,7 +10648,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1RemoveSideMenuFavoriteRequest" + "$ref": "#/definitions/CoverRemoveSideMenuFavoriteBody" } } ], @@ -10565,6 +10687,7 @@ "parameters": [ { "name": "body", + "description": "Request message for the ProxyCreateCompletion rpc.", "in": "body", "required": true, "schema": { @@ -10577,6 +10700,76 @@ ] } }, + "/v1/{vendor_1}/payers": { + "get": { + "summary": "Get list of all payers", + "operationId": "Cover_GetPayers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1GetPayersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "vendor_1", + "description": "Required. Cloud vendor.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cover" + ] + }, + "post": { + "summary": "Assign payer to a linked account", + "operationId": "Cover_AssignPayer", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1AssignPayerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "vendor_1", + "description": "Required. Cloud vendor.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CoverAssignPayerBody" + } + } + ], + "tags": [ + "Cover" + ] + } + }, "/v1/{vendor}/account": { "post": { "summary": "Registers an account", @@ -10585,6 +10778,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -10608,7 +10802,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1RegisterAccountRequest" + "$ref": "#/definitions/CoverRegisterAccountBody" } } ], @@ -10701,7 +10895,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateAccountRequest" + "$ref": "#/definitions/CostCreateAccountBody" } } ], @@ -10741,7 +10935,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CheckAccountsRequest" + "$ref": "#/definitions/CostCheckAccountsBelongToMspBody" } } ], @@ -10895,6 +11089,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -10962,7 +11157,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateAccountRequest" + "$ref": "#/definitions/CostUpdateAccountBody" } } ], @@ -11012,7 +11207,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadAdjustmentsRequest" + "$ref": "#/definitions/CostReadAdjustmentsBody" } } ], @@ -11066,6 +11261,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -11133,7 +11329,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateAccountBudgetAlertsRequest" + "$ref": "#/definitions/CostCreateAccountBudgetAlertsBody" } } ], @@ -11178,7 +11374,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateAccountBudgetAlertsRequest" + "$ref": "#/definitions/CostUpdateAccountBudgetAlertsBody" } } ], @@ -11227,7 +11423,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadAccountOriginalResourcesRequest" + "$ref": "#/definitions/CostReadAccountOriginalResourcesBody" } } ], @@ -11297,6 +11493,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -11334,6 +11531,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -11364,7 +11562,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateAccountBudgetRequest" + "$ref": "#/definitions/CostUpdateAccountBudgetBody" } } ], @@ -11469,7 +11667,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateAccountBudgetRequest" + "$ref": "#/definitions/CostCreateAccountBudgetBody" } } ], @@ -11585,7 +11783,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateCalculationsScheduleRequest" + "$ref": "#/definitions/CostCreateCalculationsScheduleBody" } } ], @@ -11602,6 +11800,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -11736,7 +11935,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateCalculatorCostModifierRequest" + "$ref": "#/definitions/CostCreateCalculatorCostModifierBody" } } ], @@ -11753,6 +11952,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -11825,7 +12025,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ListCalculatorRunningAccountsRequest" + "$ref": "#/definitions/CostListCalculatorRunningAccountsBody" } } ], @@ -11876,7 +12076,7 @@ }, { "name": "accountId", - "description": "Optional. You can set it to a single account or a comma-separated list of accounts. If set, overrides `groupId`.", + "description": "Optional. You can set it to a single account or a comma-separated list of accounts. If set, overrides `groupId`", "in": "query", "required": false, "type": "string" @@ -11935,7 +12135,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadCostAttributesRequest" + "$ref": "#/definitions/CostReadCostAttributesBody" } } ], @@ -12006,7 +12206,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CreateCostFiltersRequest" + "$ref": "#/definitions/CostCreateCostFiltersBody" } } ], @@ -12023,6 +12223,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -12090,7 +12291,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateCostFiltersRequest" + "$ref": "#/definitions/CostUpdateCostFiltersBody" } } ], @@ -12137,7 +12338,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ExportCostFiltersFileRequest" + "$ref": "#/definitions/CostExportCostFiltersFileBody" } } ], @@ -12178,7 +12379,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CalculateCostsRequest" + "$ref": "#/definitions/CostCalculateCostsBody" } } ], @@ -12228,7 +12429,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadCostsRequest" + "$ref": "#/definitions/CostReadCostsBody" } } ], @@ -12275,7 +12476,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1GetCoverageOndemandRequest" + "$ref": "#/definitions/CostGetCoverageOndemandBody" } } ], @@ -12322,7 +12523,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1GetCoverageOptionsRequest" + "$ref": "#/definitions/CostGetCoverageOptionsBody" } } ], @@ -12399,7 +12600,7 @@ }, { "name": "billingInternalId", - "description": "Optional. Company Id of Billing Group to retrieve. Default value is user's Company Id.", + "description": "Optional. Company Id of Billing Group to retrieve. Default value is user's Company Id", "in": "query", "required": false, "type": "string" @@ -12644,7 +12845,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadInvoiceAdjustmentsRequest" + "$ref": "#/definitions/BillingReadInvoiceAdjustmentsBody" } } ], @@ -12693,7 +12894,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadInvoiceIdsRequest" + "$ref": "#/definitions/CostReadInvoiceIdsBody" } } ], @@ -12743,7 +12944,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadNonTagCostsRequest" + "$ref": "#/definitions/CostReadNonTagCostsBody" } } ], @@ -12754,13 +12955,23 @@ }, "/v1/{vendor}/payers": { "get": { - "summary": "Get list of all payers", - "operationId": "Cover_GetPayers", + "summary": "Lists vendor payer accounts.", + "description": "For AWS, these are management accounts (formerly known as master or payer accounts); for Azure, these are subscriptions, for GCP, these are projects.", + "operationId": "Cost_ListPayerAccounts", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/v1GetPayersResponse" + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/blueapiapiAccount" + }, + "error": { + "$ref": "#/definitions/googlerpcStatus" + } + }, + "title": "Stream result of blueapiapiAccount" } }, "default": { @@ -12773,24 +12984,31 @@ "parameters": [ { "name": "vendor", - "description": "Required. Cloud vendor.", + "description": "Required. At the moment, only `aws` is supported.", "in": "path", "required": true, "type": "string" + }, + { + "name": "fieldMask", + "description": "Optional. Get only the value that set fieldMask.\n\nsee more info: https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/field_mask.proto", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "Cover" + "Cost" ] }, "post": { - "summary": "Assign payer to a linked account", - "operationId": "Cover_AssignPayer", + "summary": "DEPRECATED: Registers a vendor payer account. This is now deprecated for AWS payer accounts. To register an AWS payer account, check out the 'CreateDefaultCostAccess' API.", + "operationId": "Cost_CreatePayerAccount", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/v1AssignPayerResponse" + "$ref": "#/definitions/blueapiapiAccount" } }, "default": { @@ -12803,7 +13021,7 @@ "parameters": [ { "name": "vendor", - "description": "Required. Cloud vendor.", + "description": "Required. At the moment, only `aws` is supported.", "in": "path", "required": true, "type": "string" @@ -12813,12 +13031,12 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1AssignPayerRequest" + "$ref": "#/definitions/CostCreatePayerAccountBody" } } ], "tags": [ - "Cover" + "Cost" ] } }, @@ -12868,6 +13086,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -13032,7 +13251,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1GetRecommendationsRequest" + "$ref": "#/definitions/CostGetRecommendationsBody" } } ], @@ -13079,7 +13298,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1GetCostReductionRequest" + "$ref": "#/definitions/CostGetCostReductionBody" } } ], @@ -13157,7 +13376,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ModifyResourceTypeRequest" + "$ref": "#/definitions/CoverModifyResourceTypeBody" } } ], @@ -13197,7 +13416,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1TerminateResourceRequest" + "$ref": "#/definitions/CoverTerminateResourceBody" } } ], @@ -13285,7 +13504,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadTagCostsRequest" + "$ref": "#/definitions/CostReadTagCostsBody" } } ], @@ -13492,6 +13711,7 @@ "200": { "description": "A successful response.", "schema": { + "type": "object", "properties": {} } }, @@ -13520,7 +13740,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1UpdateTagsAddingSettingRequest" + "$ref": "#/definitions/BillingUpdateTagsAddingSettingBody" } } ], @@ -13569,7 +13789,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ReadUntaggedGroupsRequest" + "$ref": "#/definitions/BillingReadUntaggedGroupsBody" } } ], @@ -13618,7 +13838,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1ListUsageCostsDriftRequest" + "$ref": "#/definitions/BillingListUsageCostsDriftBody" } } ], @@ -13961,4146 +14181,3907 @@ } } }, - "CostCalculationEstimatedDiscounts": { + "AdminUpdateNotificationBody": { "type": "object", "properties": { - "reservedInstancesDiscount": { - "type": "number", - "format": "double" + "channels": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Required" }, - "savingsPlansDiscount": { - "type": "number", - "format": "double" + "enabled": { + "type": "boolean", + "title": "Required" }, - "otherDiscount": { - "type": "number", - "format": "double" + "notificationType": { + "type": "string", + "description": "Required\nValid values:\n`InvoiceCalculationStarted`,\n`InvoiceCalculationFinished`,\n`CurUpdatedAfterInvoice`.\n`AccountBudgetAlert`." + }, + "account": { + "$ref": "#/definitions/adminv1NotificationAccount", + "description": "Optional. only available Wave(Pro)." } - } + }, + "description": "Request message for the Admin.UpdateNotificationTypeChannels rpc." }, - "CostExplorerRecommendationsDiscountPlans": { + "AdminUpdateNotificationChannelBody": { "type": "object", "properties": { - "paymentOption": { - "type": "string" + "name": { + "type": "string", + "description": "Required. Name of the notification channel." }, - "term": { - "type": "string" + "type": { + "type": "string", + "description": "Required. Valid values: `email`, `slack`, `msteams`." }, - "upfrontCost": { - "type": "number", - "format": "double" + "email": { + "$ref": "#/definitions/apiEmailChannel", + "description": "Required if type = `email`." }, - "riOption": { - "$ref": "#/definitions/DiscountPlansRIOption" + "slack": { + "$ref": "#/definitions/apiSlackChannel", + "description": "Required if type = `slack`." }, - "spOption": { - "$ref": "#/definitions/DiscountPlansSPOption" + "msteams": { + "$ref": "#/definitions/apiMSTeamsChannel", + "description": "Required if type = `msteams`." + }, + "product": { + "type": "string", + "description": "Optional. For Octo use only: `octo`." } - } + }, + "description": "Request message for the Admin.UpdateNotificationChannel rpc." }, - "CostExplorerRecommendationsEC2Rightsize": { + "BillingCreateAccountInvoiceServiceDiscountsBody": { "type": "object", "properties": { - "currentDetails": { - "$ref": "#/definitions/CostExplorerRecommendationsEC2RightsizeDetails" - }, - "recommendationDetails": { - "$ref": "#/definitions/CostExplorerRecommendationsEC2RightsizeDetails" + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1AccountServiceDiscounts" + }, + "description": "Required." } - } + }, + "description": "Request message for the CreateAccountInvoiceServiceDiscounts rpc." }, - "CostExplorerRecommendationsEC2RightsizeDetails": { + "BillingCreateAdjustmentConfigBody": { "type": "object", "properties": { - "monthlyCost": { - "type": "number", - "format": "double" - }, - "monthlySavingsAmount": { - "type": "number", - "format": "double" - }, - "monthlySavingsPercentage": { - "type": "number", - "format": "double" - }, - "ec2Details": { - "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" - } - } - }, - "CostExplorerRecommendationsTerminateEC2": { - "type": "object", - "properties": { - "ec2Details": { - "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" + "config": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiConfigFilters" + }, + "description": "Required. \nA list of filtering options. See [api.ConfigFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." }, - "monthlyCost": { - "type": "number", - "format": "double" + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiManagementAccount" + }, + "description": "Optional." } - } + }, + "description": "Request message for the Billing.CreateAdjustmentConfig rpc." }, - "CostOptimizationHubRecommendationsDetailsCostCalculation": { + "BillingCreateInvoiceBody": { "type": "object", "properties": { - "estimatedCostAfterDiscount": { - "type": "number", - "format": "double" - }, - "estimatedCostBeforeDiscount": { - "type": "number", - "format": "double" - }, - "estimatedNetUnusedAmortizedCommitments": { - "type": "number", - "format": "double" + "vendor": { + "type": "string", + "description": "Required. At the moment, only `aws` is supported." }, - "estimatedDiscounts": { - "$ref": "#/definitions/CostCalculationEstimatedDiscounts" + "allGroups": { + "type": "boolean", + "description": "Optional. You can set all billing groups.\n\nIf this parameter is not set, The list set to `groups` is used." }, - "usageTypes": { + "groups": { "type": "array", "items": { - "$ref": "#/definitions/DetailsCostCalculationUsageTypes" - } + "type": "string" + }, + "title": "Optional. You can set it to a list of billing internal group id" } - } + }, + "description": "Request message for the CreateInvoice rpc." }, - "CurrentEC2DetailsOtherDetails": { + "BillingExportInvoiceFileBody": { "type": "object", "properties": { - "exclusionStatus": { - "type": "string" - }, - "status": { - "type": "string" - }, - "resource": { - "type": "string" - }, - "awsConfigRule": { - "type": "string" - }, - "inputParameters": { - "type": "string" + "groupId": { + "type": "string", + "description": "Optional.\n\nFor Ripple, only billing internal ids are supported at the moment. You can set it to a single group or a comma-separated list of groups. ex) `group1,group2`. if want to set all group, set `*`. \n\nImplied as the parent billing group for Wave(Pro) users." } - } + }, + "description": "Request message for the ExportCostFiltersFile rpc." }, - "DBInstanceDetailsRDSMetrics": { + "BillingGetInvoiceBody": { "type": "object", "properties": { - "cpuUtilizationMetrics": { - "$ref": "#/definitions/awsMetricData" + "groupId": { + "type": "string", + "description": "Required.\n\nFor Ripple, only billing internal ids are supported at the moment. You can set it to a single group\n\nImplied as the parent billing group for Wave(Pro) users." } - } + }, + "description": "Request message for the Cost.GetInvoiceRequest rpc." }, - "DBInstanceDetailsStorage": { + "BillingListAccountInvoiceServiceDiscountsBody": { "type": "object", - "properties": { - "allocatedStorageInGb": { - "type": "number", - "format": "double" - }, - "iops": { - "type": "number", - "format": "double" - }, - "storageThroughput": { - "type": "number", - "format": "double" - }, - "type": { - "type": "string" - } - } + "description": "Request message for the ListAccountInvoiceServiceDiscounts rpc." }, - "DetailsCostCalculationUsageTypes": { + "BillingListInvoiceStatusBody": { "type": "object", - "properties": { - "operation": { - "type": "string" - }, - "productCode": { - "type": "string" - }, - "unit": { - "type": "string" - }, - "usageAmount": { - "type": "number", - "format": "double" - }, - "usageType": { - "type": "string" - } - } + "description": "Request message for the ListInvoiceStatus rpc." }, - "DiscountPlansRIOption": { + "BillingListUsageCostsDriftBody": { "type": "object", "properties": { - "ec2Details": { - "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" - }, - "rdsDetails": { - "$ref": "#/definitions/awsAWSResourceDetailsRDSDetails" - }, - "elasticacheDetails": { - "$ref": "#/definitions/AWSResourceDetailsElastiCacheDetails" - }, - "redshiftDetails": { - "$ref": "#/definitions/awsAWSResourceDetailsRedshiftDetails" - }, - "opensearchDetails": { - "$ref": "#/definitions/AWSResourceDetailsOpensearchDetails" - }, - "memoryDBDetails": { - "$ref": "#/definitions/awsAWSResourceDetailsMemoryDBDetails" - }, - "recommendedNormalizedUnits": { - "type": "number", - "format": "double" - }, - "recommendedNumberOfInstanceToPurchase": { - "type": "number", - "format": "double" - }, - "estOutcomeFromPurchaseRI": { - "$ref": "#/definitions/RIOptionEstOutcomeFromPurchaseRI" - }, - "region": { - "type": "string" - }, - "sizeFlexEligible": { - "type": "boolean" - }, - "tenancy": { - "type": "string" + "billingInternalId": { + "type": "string", + "description": "Optional. If empty, returns all billing groups." }, - "currentGeneration": { - "type": "boolean" + "month": { + "type": "string", + "description": "Optional. If empty, defaults to current UTC month. Format: yyyymm." } - } + }, + "description": "Request message for the Billing.ListUsageCostsDrift rpc." }, - "DiscountPlansSPOption": { + "BillingReadInvoiceAdjustmentsBody": { "type": "object", "properties": { - "type": { - "type": "string" - }, - "currencyCode": { - "type": "string" - }, - "hourlyCommitmentToPurchase": { - "type": "number", - "format": "double" - }, - "offeringId": { - "type": "string" + "accountId": { + "type": "string", + "description": "Required." }, - "currentUtilizationDetails": { - "$ref": "#/definitions/SPOptionCurrentUtilizationDetails" + "month": { + "type": "string", + "description": "Optional. The UTC month to query. If empty, defaults to current month. Format is `yyyymm`. For example, June 2021 will be `202106`." }, - "estOutcomeFromPurchaseSP": { - "$ref": "#/definitions/SPOptionEstOutcomeFromPurchaseSP" + "feeType": { + "type": "string", + "description": "Optional. If empty, defaults to all fee type. At the moment, only `Fee`,`Refund`,`Credit`,`SppDiscount`,`EdpDiscount`,`BundledDiscount` is supported." } - } + }, + "description": "Request message for the Billing.ReadInvoiceAdjustments rpc." }, - "EBSDetailsVolumeDetails": { + "BillingReadServiceDiscountsServicesBody": { + "type": "object", + "description": "Request message for the ReadServiceDiscountsServices rpc." + }, + "BillingReadUntaggedGroupsBody": { "type": "object", "properties": { - "attachmentState": { - "type": "string" - }, - "iops": { - "type": "number", - "format": "double" - }, - "throughput": { - "type": "number", - "format": "double" - }, - "sizeInGb": { - "type": "number", - "format": "double" - }, - "type": { - "type": "string" - }, - "id": { - "type": "string" + "fieldMask": { + "type": "string", + "description": "Optional. Get only the value that set fieldMask.\n\nsee more info: https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/field_mask.proto" } - } + }, + "description": "Request message for the Billing.ReadUntaggedGroups rpc." }, - "EC2AutoScalingGroupDetailsInstanceConfigurationDetails": { + "BillingRemoveAccountInvoiceServiceDiscountsBody": { "type": "object", "properties": { - "type": { - "type": "string" + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1AccountServiceDiscounts" + }, + "description": "Required." } } }, - "EC2DetailsRISpecsDetails": { + "BillingSetCustomizedBillingServiceBillingGroupBody": { "type": "object", "properties": { - "offeringClass": { - "type": "string" + "setting": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/SetCustomizedBillingServiceBillingGroupRequestCustomizedBillingServiceBillingSetting" + }, + "description": "Required. customized billing service setting." } - } + }, + "description": "Request message for the Billing.SetCustomizedBillingServiceBillingGroup rpc.", + "required": [ + "setting" + ] }, - "ECSDetailsServiceDetails": { + "BillingUpdateAccessGroupBody": { "type": "object", "properties": { - "architecture": { - "type": "string" - }, - "memorySizeInMB": { + "name": { "type": "string", - "format": "int64" + "description": "Optional. access group name. Set only the name to be changed.\n\nWe recommend the name length of 1~60 characters." }, - "platform": { - "type": "string" + "description": { + "type": "string", + "description": "Optional. access group description. Set only the description to be changed.\n\nWe recommend the description length of 0~150 characters." }, - "vCpu": { - "type": "number", - "format": "double" + "billingGroups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. Billing group to be included in the access group.\n\nYou can only include billing groups with the same calculation type and currency type.\nSet only the billingGroups to be changed.\nSpecify the billingInternalIds. For example: [`billingInternalId1`,`billingInternalId2`,`billingInternalId3`]" } - } + }, + "description": "Request message for the UpdateAccessGroup rpc." }, - "ELBDetailsLoadBalancer": { + "BillingUpdateAccountInvoiceServiceDiscountsBody": { "type": "object", "properties": { - "name": { - "type": "string" + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1AccountServiceDiscounts" + }, + "description": "Required." } - } + }, + "description": "Request message for the UpdateAccountInvoiceServiceDiscounts rpc." }, - "GcpOptionsBillingOption": { + "BillingUpdateAdjustmentConfigBody": { "type": "object", "properties": { - "accountName": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "datasetId": { - "type": "string" - }, - "datasetRegion": { - "type": "string" + "config": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiConfigFilters" + }, + "description": "Optional." }, - "bigQueryStatus": { - "type": "boolean" + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiManagementAccount" + }, + "description": "Optional." } }, - "title": "V2" + "description": "Request message for the Billing.UpdateAdjustmentConfig rpc." }, - "GcpOptionsProjectOption": { + "BillingUpdateBillingGroupInvoiceTemplateBody": { "type": "object", "properties": { - "apiAccess": { - "type": "boolean" - }, - "projectName": { - "type": "string" - }, - "projectNumber": { - "type": "string" - }, - "billingAccountId": { - "type": "string" + "invoiceTemplateId": { + "type": "string", + "title": "Required. The invoice template ID to associate with the billing group" } - } + }, + "title": "Request a message to update/create a billing group's invoice template", + "required": [ + "invoiceTemplateId" + ] }, - "IdentityProvidersamlInfo": { + "BillingUpdateCustomFieldBody": { "type": "object", "properties": { - "metadata": { + "key": { "type": "string" - } - } - }, - "InstanceDetailsEC2Metrics": { - "type": "object", - "properties": { - "cpuUtilizationMetrics": { - "$ref": "#/definitions/awsMetricData" - }, - "diskUtilizationMetrics": { - "$ref": "#/definitions/awsMetricData" }, - "networkUtilizationMetrics": { - "$ref": "#/definitions/awsMetricData" - }, - "memoryUtilizationMetrics": { - "$ref": "#/definitions/awsMetricData" + "description": { + "type": "string" } } }, - "InstanceDetailsEIPDetails": { + "BillingUpdateCustomizedBillingServiceBody": { "type": "object", "properties": { - "ipAddress": { - "type": "string" + "customizedBillingService": { + "$ref": "#/definitions/rippleCustomizedBillingService", + "description": "Required. The updated customized billing service object." + }, + "updateMask": { + "type": "string", + "description": "Required. Indicates which fields in the provided CustomizedBillingService to update. Must be\nspecified and non-empty." } - } + }, + "description": "Request message for the Billing.UpdateCustomizedBillingService rpc.", + "required": [ + "customizedBillingService", + "updateMask" + ] }, - "InstanceDetailsNatGatewayDetails": { + "BillingUpdateInvoicePreviewsBody": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "subnetId": { - "type": "string" + "allGroups": { + "type": "boolean", + "description": "Optional. You can set all billing groups.\n\nIf this parameter is not set, The list set to `groups` is used." }, - "vpcId": { - "type": "string" + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Optional. You can set it to a list of billing internal group id" }, - "metrics": { - "$ref": "#/definitions/NatGatewayDetailsNatGatewayMetrics" + "enabled": { + "type": "boolean", + "description": "Required. You can set display or hiding.\n\nIf true, Hiding Invoice. If false, Display Invoice." } - } + }, + "description": "Request message for the UpdateInvoicePreviews rpc." }, - "LambdaDetailsFunctionDetails": { + "BillingUpdateInvoiceServiceDiscountsBody": { "type": "object", "properties": { - "architecture": { - "type": "string" + "invoiceServiceDiscounts": { + "$ref": "#/definitions/apiripplev1InvoiceServiceDiscounts", + "description": "Required. The updated invoice service discounts object." }, - "memorySizeInMB": { + "updateMask": { "type": "string", - "format": "int64" - }, - "arn": { - "type": "string" - }, - "status": { - "type": "string" + "description": "Required. Indicates which fields in the provided InvoiceServiceDiscounts to update. Must be\nspecified and non-empty." } - } + }, + "description": "Request message for the Billing.UpdateInvoiceServiceDiscounts rpc.", + "required": [ + "invoiceServiceDiscounts", + "updateMask" + ] }, - "ListCalculatorRunningAccountsResponseAwsRunningAccount": { + "BillingUpdateResellerBody": { "type": "object", "properties": { - "month": { + "email": { "type": "string", - "description": "The queried month. Format is yyyy-mm." + "description": "Optional." }, - "account": { + "password": { "type": "string", - "description": "The AWS account that is actively processing." + "description": "Optional.\n\nWe recommend a password length of 8~32 characters. If you send 0 characters, a password will be generated automatically." }, - "date": { - "type": "string", - "description": "The target date the account is processing for." + "waveConfig": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleResellerConfig" + }, + "description": "Set only the config to be changed.\nFor example, If you want to change only dashboardGraph, set `{\"waveConfig\": [{\"key\": \"dashboardGraph\",\"value\": true}]}` as a parameter", + "title": "Optional. wave feature config" }, - "started": { + "aquaConfig": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleResellerConfig" + }, + "description": "Set only the config to be changed.\nFor example, If you want to change only aqRiManagement, set `{\"waveConfig\": [{\"key\": \"aqRiManagement\",\"value\": true}]}` as a parameter", + "title": "Optional. aqua feature config" + }, + "notification": { + "type": "boolean", + "description": "Optional.\n\nIf valid when email or password is updated, you will be notified via email address.\nIf only waveConfig or aquaConfig is changed, it is ignored." + }, + "updateMask": { "type": "string", - "description": "The timestamp when the calculation has started." + "description": "Required." } - } + }, + "description": "Request message for the UpdateReseller rpc.", + "required": [ + "updateMask" + ] }, - "ListIdentityProvidersResponseIdentityProvider": { + "BillingUpdateTagsAddingSettingBody": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "saml": { - "$ref": "#/definitions/IdentityProvidersamlInfo" + "items": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1TagsAddingSetting" + } } - } + }, + "title": "BillingGroup tags adding setting" }, - "ListRecommendationResponsePurchaseOption": { + "CostCalculateCostsBody": { "type": "object", "properties": { - "spType": { - "type": "string" - }, - "offeringClass": { - "type": "string" - }, - "commitment": { - "type": "number", - "format": "double" - }, - "numberToPurchase": { + "groupId": { "type": "string", - "format": "int64" + "description": "Optional. A comma-separated list of billing internal ids. If empty, calculate for all billing groups.\n\nAt the moment, for AWS, this is only valid for account type billing groups, not tag billing groups. If a tag billing group is provided, it is discarded and the calculation is done for the whole organization." }, - "paymentOption": { - "type": "string" - }, - "term": { - "type": "string" + "month": { + "type": "string", + "description": "Optional. The UTC month to calculate. If empty, it defaults to the previous month. Format is `yyyymm`. For example, June 2021 will be `202106`." }, - "currentGeneration": { - "type": "boolean" + "awsOptions": { + "$ref": "#/definitions/v1CalculateCostsRequestAwsOptions", + "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + } + }, + "description": "Request message for the Cost.CalculateCosts rpc." + }, + "CostCalculationEstimatedDiscounts": { + "type": "object", + "properties": { + "reservedInstancesDiscount": { + "type": "number", + "format": "double" }, - "serviceType": { - "type": "string" + "savingsPlansDiscount": { + "type": "number", + "format": "double" }, - "upfrontCost": { + "otherDiscount": { "type": "number", "format": "double" } } }, - "ListRecommendationV2RequestRateSettings": { + "CostCheckAccountsBelongToMspBody": { "type": "object", "properties": { - "spType": { - "type": "string" - }, - "rateModel": { - "type": "string" - }, - "paymentOption": { - "type": "string" + "accountIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. A comma-separated list of account ids. For example, you set to [\"accountId1\",\"accountId2\",\"accountId3\"]." + } + } + }, + "CostCreateAccountBody": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Required. The account id to register." }, - "term": { - "type": "string" + "name": { + "type": "string", + "description": "Optional. If empty, set to the value of `id`." }, - "service": { - "type": "string" + "parent": { + "type": "string", + "description": "Optional. The parent `billingInternalId` of the billing group to which this account will belong to." }, - "offeringClass": { - "type": "string" + "awsOptions": { + "$ref": "#/definitions/v1CreateAccountRequestAwsOptions", + "description": "Required for the `aws` vendor. AWS-specific options." }, - "vendor": { - "type": "string" + "gcpOptions": { + "$ref": "#/definitions/v1CreateAccountRequestGcpOptions", + "description": "Required for the `gcp` vendor. GCP-specific options." } - } - }, - "MethodConfigChargingMethod": { - "type": "string", - "enum": [ - "FIXED_FEE", - "PERCENTAGE", - "FIXED_FEE_OR_PERCENTAGE", - "TIERED_PRICE", - "TIERED_PERCENTAGE" - ], - "default": "FIXED_FEE" + }, + "description": "Request message for the Cost.CreateAccount rpc." }, - "MethodConfigCurrency": { - "type": "string", - "enum": [ - "JPY", - "USD", - "IDR", - "MYR", - "SGD", - "INR" - ], - "default": "JPY", - "description": "supported currency." + "CostCreateAccountBudgetAlertsBody": { + "type": "object", + "properties": { + "budgetAlert": { + "$ref": "#/definitions/apiwaveBudgetAlert", + "description": "Required. Budget alert setting." + } + }, + "title": "Request message for CreateAccountBudgetAlerts" }, - "MetricDataMetrics": { + "CostCreateAccountBudgetBody": { "type": "object", "properties": { - "date": { - "type": "string" - }, - "value": { - "type": "number", - "format": "double" + "data": { + "$ref": "#/definitions/blueapiapiBudget" } - } + }, + "title": "Request message for CreateAccountBudget" }, - "NatGatewayDetailsNatGatewayMetrics": { + "CostCreateCalculationsScheduleBody": { "type": "object", "properties": { - "bytesInFromDest": { - "$ref": "#/definitions/awsMetricData" + "schedule": { + "type": "string", + "description": "Required. The desired schedule in UTC, using the unix-cron string format `* * * * *` which is a set of five fields in a line using the order: `minute hour day-of-the-month month day-of-the-week`.\n\n* `minute` values can be `0-59`\n* `hour` values can be `0-23`\n* `day-of-the-month` values can be `1-31`\n* `month` values can be `1-12`, or `JAN-DEC`\n* `day-of-the-week` values can be `0-6`, or `SUN-SAT`, or `7` for Sunday\n\nSpecial characters:\n* A field can contain an asterisk (*), which always stands for \"first-last\".\n* Ranges are two numbers separated with a hyphen (-) and the specified range is inclusive.\n* Following a range with `/NUMBER` specifies skips of the number's value through the range. For example, both `0-23/2` and `*/2` can be used in the `hour` field to specify execution every two hours.\n* A list is a set of numbers (or ranges) separated by commas (,). For example, `1,2,5,6` in the `month` field specifies an execution on the first, second, fifth, and sixth days of the month." }, - "bytesInFromSrc": { - "$ref": "#/definitions/awsMetricData" + "scheduleMacro": { + "type": "string", + "description": "Optional. Non-standard macro(s) that augment(s) `schedule`'s behavior. The only supported value for now is `@endofmonth`.\n\n`@endofmonth` - If set, the backend scheduler will only use the `minute` and `hour` part of `schedule`'s value and set the days to 28th, 29th, 30th, and 31st but the runner will do the filtering for the actual end of the trigger month. Note that this is different than setting `schedule` to, say, `0 0 28-31 * *`." }, - "bytesOutToDest": { - "$ref": "#/definitions/awsMetricData" + "targetMonth": { + "type": "string", + "description": "Optional. The desired month to calculate. If not set, defaults to previous month. The only supported value for now is `@current`.\n\n`@current` - If set, calculate for the month the schedule is triggered (or current month)." }, - "bytesOutToSrc": { - "$ref": "#/definitions/awsMetricData" + "notificationChannel": { + "type": "string", + "description": "Optional. The channel id to use for notifications. At the moment, only email-type notification channels are supported. If not set, your default channel will be used. And if non-existent, an email-type notification channel will be created using your primary email address." + }, + "force": { + "type": "boolean", + "description": "Optional. Not used at the moment." + }, + "dryRun": { + "type": "boolean", + "description": "Optional. If set to true, skips the actual calculations. Useful as test, or reminder." } - } + }, + "description": "Request message for the Cost.CreateCalculationsSchedule rpc." }, - "RDSDetailsDBInstanceDetails": { + "CostCreateCalculatorCostModifierBody": { "type": "object", "properties": { - "storage": { - "$ref": "#/definitions/DBInstanceDetailsStorage" - }, - "name": { - "type": "string" + "awsOptions": { + "$ref": "#/definitions/v1CalculatorCostModifierAwsOptions", + "description": "Required if `{vendor}` is `aws`. AWS-specific options." }, - "instanceClass": { - "type": "string" + "azureOptions": { + "$ref": "#/definitions/v1CalculatorCostModifierAzureOptions", + "description": "Required if `{vendor}` is `azure`. Azure-specific options." + } + }, + "description": "Request message for the Cost.CreateCalculatorCostModifier rpc." + }, + "CostCreateCostFiltersBody": { + "type": "object", + "properties": { + "filterName": { + "type": "string", + "title": "Required. Filter Name. Specify characters between 1 ~ 100" }, - "dbEdition": { - "type": "string" + "groupId": { + "type": "string", + "description": "Required. If set, reads the usage-based cost details of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the usage-based cost details of the whole organization. Optional for AWS Wave(Pro)." }, - "dbEngine": { - "type": "string" + "accountId": { + "type": "string", + "description": "Required. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the usage-based cost details of the whole organization." }, - "deploymentOptions": { + "awsOptions": { + "$ref": "#/definitions/v1ReadCostsRequestAwsOptions", + "description": "Required. Valid only for the `aws` vendor. AWS-specific options." + } + }, + "description": "Request message for the CreateCostFilters rpc." + }, + "CostCreatePayerAccountBody": { + "type": "object", + "properties": { + "awsOptions": { + "$ref": "#/definitions/v1CreatePayerAccountRequestAwsOptions", + "description": "Required for the `aws` vendor. AWS-specific options." + } + }, + "description": "Request message for the Cost.CreatePayerAccount rpc." + }, + "CostExplorerRecommendationsDiscountPlans": { + "type": "object", + "properties": { + "paymentOption": { "type": "string" }, - "family": { + "term": { "type": "string" }, - "multiAZ": { - "type": "string" + "upfrontCost": { + "type": "number", + "format": "double" }, - "licenseModel": { - "type": "string" + "riOption": { + "$ref": "#/definitions/DiscountPlansRIOption" }, - "metrics": { - "$ref": "#/definitions/DBInstanceDetailsRDSMetrics" + "spOption": { + "$ref": "#/definitions/DiscountPlansSPOption" } } }, - "RIOptionEstOutcomeFromPurchaseRI": { + "CostExplorerRecommendationsEC2Rightsize": { "type": "object", "properties": { - "aveUtilization": { - "type": "number", - "format": "double" + "currentDetails": { + "$ref": "#/definitions/CostExplorerRecommendationsEC2RightsizeDetails" }, - "aveNormalizesUnitsUsedPerHour": { + "recommendationDetails": { + "$ref": "#/definitions/CostExplorerRecommendationsEC2RightsizeDetails" + } + } + }, + "CostExplorerRecommendationsEC2RightsizeDetails": { + "type": "object", + "properties": { + "monthlyCost": { "type": "number", "format": "double" }, - "aveNumberOfInstanceUsedPerHour": { + "monthlySavingsAmount": { "type": "number", "format": "double" }, - "breakEvenInMonths": { + "monthlySavingsPercentage": { "type": "number", "format": "double" }, - "monthlyOnDemandCost": { - "type": "number", - "format": "double" + "ec2Details": { + "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" + } + } + }, + "CostExplorerRecommendationsTerminateEC2": { + "type": "object", + "properties": { + "ec2Details": { + "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" }, - "monthlyRICost": { - "type": "number", - "format": "double" - }, - "monthlySavings": { - "type": "number", - "format": "double" - }, - "monthlySavingsPercentage": { - "type": "number", - "format": "double" - }, - "maxNormalizedUnitsUsedPerHour": { - "type": "number", - "format": "double" - }, - "minNormalizedUnitsUsedPerHour": { - "type": "number", - "format": "double" - }, - "minNumberOfInstanceUsedPerHour": { - "type": "number", - "format": "double" - }, - "maxNumberOfInstanceUsedPerHour": { + "monthlyCost": { "type": "number", "format": "double" } } }, - "RecommendationHubRecommendationsInsights": { + "CostExportCostFiltersFileBody": { "type": "object", "properties": { - "type": { - "type": "string" + "startTime": { + "type": "string", + "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20200101`." }, - "description": { - "type": "string" - } - } - }, - "RedshiftDetailsClusterDetails": { - "type": "object", - "properties": { - "type": { - "type": "string" + "endTime": { + "type": "string", + "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmd`." }, - "clusterId": { - "type": "string" + "groupByMonth": { + "type": "boolean", + "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`." }, - "status": { - "type": "string" - } - } - }, - "ReservedInstanceRIMetrics": { - "type": "object", - "properties": { - "utilization": { - "type": "array", - "items": { - "$ref": "#/definitions/MetricDataMetrics" - } - } - } - }, - "RoundingRoundingMethod": { - "type": "string", - "enum": [ - "ROUND", - "ROUNDUP", - "ROUNDDOWN" - ], - "default": "ROUND", - "description": "- ROUND: round\n - ROUNDUP: round up\n - ROUNDDOWN: round down", - "title": "RoundingMethod" - }, - "S3DetailsBucketDetails": { - "type": "object", - "properties": { - "arn": { - "type": "string" + "groupByColumns": { + "type": "string", + "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, and `resourceId`. A special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `productCode,region`. Your input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/aws/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." }, - "name": { - "type": "string" + "includeTags": { + "type": "boolean", + "description": "Optional. If set to true, stream will include resource tags." } - } + }, + "description": "Request message for the ExportCostFiltersFile rpc." }, - "SPOptionCurrentUtilizationDetails": { + "CostGetCostReductionBody": { "type": "object", "properties": { - "aveCoverage": { - "type": "number", - "format": "double" + "reductionDisplay": { + "type": "string", + "title": "Required. Valid values: 'all', 'reservation', 'savingsplan'" }, - "aveHourOnDemandSpend": { - "type": "number", - "format": "double" + "includeDetails": { + "type": "boolean", + "description": "Optional. If set to \"true\", details of the RI or SP list is returned. Default: false." }, - "maxHourlyOnDemandSpend": { - "type": "number", - "format": "double" + "fromDate": { + "type": "string", + "description": "Optional. The start date of the displayed data. If not set, the first day of the current month will be used. Format: yyyy-mm-dd." }, - "minHourlyOnDemandSpend": { - "type": "number", - "format": "double" + "toDate": { + "type": "string", + "description": "Optional. The end date of the displayed data. If not set, current date will be used. Format: yyyy-mm-dd." }, - "existingHourlyCommitment": { - "type": "number", - "format": "double" + "payerId": { + "type": "string", + "description": "Optional. Payer Id." }, - "estOnDemandCostWithHourlyCommitment": { - "type": "number", - "format": "double" + "billingInternalId": { + "type": "string", + "description": "Optional. Billing group Id." + }, + "groupId": { + "type": "string", + "description": "Optional. Account group Id." + }, + "costGroupId": { + "type": "string", + "description": "Optional. Cost Group Id used in octo." + }, + "accounts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of Account Ids." + }, + "services": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of services." } - } + }, + "title": "Request message for GetCostReduction" }, - "SPOptionEstOutcomeFromPurchaseSP": { + "CostGetCoverageOndemandBody": { "type": "object", "properties": { - "aveCoverage": { - "type": "number", - "format": "double" - }, - "aveUtilization": { - "type": "number", - "format": "double" + "period": { + "type": "string", + "title": "Required. Available values: day, hour" }, - "monthlySavingsAmount": { - "type": "number", - "format": "double" + "fromDate": { + "type": "string", + "description": "Optional. The start date of the displayed data. If not set, the first day of the current month will be used. Format: yyyy-mm-dd." }, - "onDemandCost": { - "type": "number", - "format": "double" + "toDate": { + "type": "string", + "description": "Optional. The end date of the displayed data. If not set, current date will be used. Format: yyyy-mm-dd." }, - "roi": { - "type": "number", - "format": "double" + "payerId": { + "type": "string", + "description": "Optional. Payer Id." }, - "savingsPlanCost": { - "type": "number", - "format": "double" + "billingInternalId": { + "type": "string", + "description": "Optional. Billing group Id." }, - "savingsPercentage": { - "type": "number", - "format": "double" - } - } - }, - "SetCustomizedBillingServiceBillingGroupRequestCustomizedBillingServiceBillingSetting": { - "type": "object", - "properties": { - "id": { + "groupId": { "type": "string", - "title": "Required. [blueapi.api.ripple.CustomizedBillingService.id]", - "required": [ - "id" - ] + "description": "Optional. Account group Id." }, - "chargingTarget": { - "$ref": "#/definitions/rippleChargingTarget", - "title": "Required. [blueapi.api.ripple.ChargingTarget]" + "costGroupId": { + "type": "string", + "title": "Optional. Cost Group Id, currently used in octo" }, "accounts": { "type": "array", "items": { "type": "string" }, - "description": "Optional. if chargingTarget is BILLINGGROUP, `accounts` is set emptty.\n\nSpecify the accountIds. For example: [`accountId1`,`accountId2`,`accountId3`]" + "description": "Optional. List of Account Ids." + }, + "services": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of services." } }, - "title": "CustomizedBillingServiceBillingSetting", - "required": [ - "id" - ] + "title": "Request message for GetCoverageOndemand" }, - "TrustedAdvisorRecommendationsAWSWellArchitectedHighRiskIssues": { + "CostGetCoverageOptionsBody": { "type": "object", "properties": { - "workloadArn": { - "type": "string" + "period": { + "type": "string", + "description": "Required. Available values: day, hour." }, - "workloadName": { - "type": "string" + "fromDate": { + "type": "string", + "description": "Optional. The start date of the displayed data. If not set, the first day of the current month will be used. Format: yyyy-mm-dd." }, - "reviewerName": { - "type": "string" + "toDate": { + "type": "string", + "description": "Optional. The end date of the displayed data. If not set, current date will be used. Format: yyyy-mm-dd." }, - "workloadType": { - "type": "string" + "payerId": { + "type": "string", + "description": "Optional. Payer Id." }, - "workloadStartedDate": { - "type": "string" + "billingInternalId": { + "type": "string", + "description": "Optional. Billing group Id." }, - "workloadLastModifiedDate": { - "type": "string" + "groupId": { + "type": "string", + "description": "Optional. Account group Id." }, - "numberOfIDHRI": { - "type": "string" + "costGroupId": { + "type": "string", + "title": "Optional. Cost Group Id" }, - "numberOfHRIResolved": { - "type": "string" + "accounts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of Account Ids." }, - "numberOfQuestionsAnswered": { - "type": "string" + "services": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of services." }, - "totalNumberOfQuestions": { - "type": "string" + "currency": { + "type": "string", + "description": "Optional. If not set, default value is `USD`." } - } + }, + "title": "Request message for GetCoverageOptions" }, - "TrustedAdvisorRecommendationsAmazonEC2InstanceStopped": { + "CostGetRecommendationsBody": { "type": "object", "properties": { - "ec2Details": { - "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" - }, - "awsConfigRule": { - "type": "string" + "accounts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. List of Account Ids." }, - "inputParameters": { - "type": "string" + "costGroupId": { + "type": "string", + "description": "Required. For OCTO only." }, - "resource": { - "type": "string" + "awsOptions": { + "$ref": "#/definitions/v1GetRecommendationsRequestAwsOptions", + "title": "Required if vendor = 'aws'" } - } + }, + "title": "Request message for GetRecommendations" }, - "TrustedAdvisorRecommendationsCommonDetails": { + "CostListCalculatorRunningAccountsBody": { "type": "object", "properties": { - "awsConfigRule": { - "type": "string" - }, - "inputParameters": { - "type": "string" - }, - "resource": { - "type": "string" + "month": { + "type": "string", + "description": "Optional. The UTC month to query. Defaults to current month if empty. Format is `yyyymm`. For example, June 2021 will be `202106`." } - } + }, + "description": "Request message for the Cost.ListCalculatorRunningAccounts rpc." }, - "TrustedAdvisorRecommendationsComprehendUnderutilizedEndpoints": { + "CostOptimizationHubRecommendationsDetailsCostCalculation": { "type": "object", "properties": { - "endpoint": { - "$ref": "#/definitions/AWSResourceDetailsComprehendDetailsEndpoint" + "estimatedCostAfterDiscount": { + "type": "number", + "format": "double" }, - "reason": { - "type": "string" + "estimatedCostBeforeDiscount": { + "type": "number", + "format": "double" + }, + "estimatedNetUnusedAmortizedCommitments": { + "type": "number", + "format": "double" + }, + "estimatedDiscounts": { + "$ref": "#/definitions/CostCalculationEstimatedDiscounts" + }, + "usageTypes": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/DetailsCostCalculationUsageTypes" + } } } }, - "TrustedAdvisorRecommendationsEC2ConsolidationForMSSqlServer": { + "CostReadAccountOriginalResourcesBody": { + "type": "object", + "description": "Request message for the ReadAccountOriginalResources rpc." + }, + "CostReadAdjustmentsBody": { "type": "object", "properties": { - "ec2Details": { - "$ref": "#/definitions/AWSResourceDetailsEC2DetailsInstanceDetails" + "groupId": { + "type": "string", + "description": "Optional. At the moment, only billing internal ids are supported. If set, reads the non-usage-based adjustment details of this group. Valid only if `accountId` is not set. If both `groupId` and `accountId` are not set, reads the adjustment details of the whole organization. Only valid for Ripple users. Implied (or discarded) for Wave(Pro) users." }, - "minVCpu": { - "type": "string" + "accountId": { + "type": "string", + "description": "Optional. If set, reads the non-usaged-based adjustment details of this account. Also invalidates the `groupId` value even if set. If both `groupId` and `accountId` are not set, reads the adjustment details of the whole organization." }, - "sqlServerEdition": { - "type": "string" + "startTime": { + "type": "string", + "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`." + }, + "endTime": { + "type": "string", + "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + }, + "awsOptions": { + "$ref": "#/definitions/v1ReadAdjustmentsRequestAwsOptions", + "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." } - } + }, + "description": "Request message for the Cost.ReadAdjustments rpc." }, - "TrustedAdvisorRecommendationsEC2OverProvisionedForMSSqlServer": { + "CostReadCostAttributesBody": { "type": "object", "properties": { - "ec2Details": { - "$ref": "#/definitions/AWSResourceDetailsEC2DetailsInstanceDetails" + "groupId": { + "type": "string", + "description": "Optional. If set, reads the cost attributes of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the cost attributes of the whole organization. Optional for AWS Wave(Pro)." }, - "maxVCpu": { - "type": "string" + "accountId": { + "type": "string", + "description": "Optional. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the cost attributes of the whole organization." }, - "recommendedInstanceType": { - "type": "string" + "startTime": { + "type": "string", + "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20200101`." + }, + "endTime": { + "type": "string", + "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + }, + "awsOptions": { + "$ref": "#/definitions/v1ReadCostAttributesRequestAwsOptions", + "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + }, + "azureOptions": { + "$ref": "#/definitions/v1ReadCostAttributesRequestAzureOptions" } - } + }, + "description": "Request message for the Cost.ReadCostAttributes rpc." }, - "TrustedAdvisorRecommendationsEC2RILeaseExpiration": { + "CostReadCostsBody": { "type": "object", "properties": { - "currentMonthlyCost": { - "type": "number", - "format": "double" + "groupId": { + "type": "string", + "description": "Optional. If set, reads the usage-based cost details of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the usage-based cost details of the whole organization. Optional for AWS Wave(Pro)." }, - "estMonthlySavings": { - "type": "number", - "format": "double" + "accountId": { + "type": "string", + "description": "Optional. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the usage-based cost details of the whole organization." }, - "reason": { - "type": "string" + "startTime": { + "type": "string", + "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20200101`." }, - "riDetails": { - "$ref": "#/definitions/AWSResourceDetailsReservedInstance" + "endTime": { + "type": "string", + "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + }, + "awsOptions": { + "$ref": "#/definitions/v1ReadCostsRequestAwsOptions", + "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + }, + "gcpOptions": { + "$ref": "#/definitions/v1ReadCostsRequestGcpOptions", + "description": "Optional. Valid only for the `gcp` vendor. GCP-specific options." + }, + "azureOptions": { + "$ref": "#/definitions/v1ReadCostsRequestAzureOptions", + "description": "Optional. Valid only for the `azure` vendor. Azure-specific options." } - } + }, + "description": "Request message for the Cost.ReadCosts rpc." }, - "TrustedAdvisorRecommendationsIdleLoadBalancer": { + "CostReadInvoiceIdsBody": { "type": "object", "properties": { - "elbDetails": { - "$ref": "#/definitions/AWSResourceDetailsELBDetails" - }, - "reason": { - "type": "string" + "month": { + "type": "string", + "description": "Optional. The UTC month to query. If empty, defaults to current month. Format is `yyyymm`. For example, July 2024 will be `202407`." } - } + }, + "description": "Request message for the ReadInvoiceIds rpc." }, - "TrustedAdvisorRecommendationsInactiveAWSNetworkFirewall": { + "CostReadNonTagCostsBody": { "type": "object", "properties": { - "firewallDetails": { - "$ref": "#/definitions/AWSResourceDetailsNetworkFirewallDetails" + "billingInternalId": { + "type": "string", + "description": "Required. The billing internal id to stream." }, - "totalBytesProcessed": { - "type": "number", - "format": "double" + "startTime": { + "type": "string", + "description": "Optional. Timestamp to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`." + }, + "endTime": { + "type": "string", + "description": "Optional. Timestamp to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + }, + "groupByMonths": { + "type": "boolean", + "description": "Optional. Group services and costs by months in the range of `startTime` and `endTime`. If not set, daily data will be returned." } - } + }, + "description": "Request message for the Cost.ReadNonTagCosts rpc." }, - "TrustedAdvisorRecommendationsInactiveNATGateways": { + "CostReadTagCostsBody": { "type": "object", "properties": { - "natGatewayDetails": { - "$ref": "#/definitions/InstanceDetailsNatGatewayDetails" + "billingInternalId": { + "type": "string", + "description": "Required. The billing internal id to stream." }, - "totalBytesFromDest": { - "type": "number", - "format": "double" + "startTime": { + "type": "string", + "description": "Optional. Timestamp to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`." }, - "totalBytesFromSrc": { - "type": "number", - "format": "double" + "endTime": { + "type": "string", + "description": "Optional. Timestamp to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." }, - "totalBytes": { - "type": "number", - "format": "double" + "groupByMonths": { + "type": "boolean", + "description": "Optional. Group services and costs by months in the range of `startTime` and `endTime`. If not set, daily data will be returned." + }, + "awsOptions": { + "$ref": "#/definitions/v1ReadTagCostsRequestAwsOptions", + "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." } - } + }, + "description": "Request message for the Cost.ReadTagCosts rpc." }, - "TrustedAdvisorRecommendationsLambdaHighErrorRates": { + "CostUpdateAccountBody": { "type": "object", "properties": { - "avgDailyErrorRates": { - "type": "number", - "format": "double" - }, - "avgDailyInvokes": { - "type": "number", - "format": "double" - }, - "currentDayErrorRates": { - "type": "number", - "format": "double" - }, - "currentDayInvokes": { - "type": "number", - "format": "double" - }, - "dateForMaxErrorRates": { - "type": "string" - }, - "lostDailyComputeCost": { - "type": "number", - "format": "double" - }, - "maxDailyErrorRates": { - "type": "number", - "format": "double" - }, - "lambdaDetails": { - "$ref": "#/definitions/AWSResourceDetailsLambdaDetails" + "name": { + "type": "string", + "description": "Optional." } - } + }, + "description": "Request message for the Cost.UpdateAccount rpc." }, - "TrustedAdvisorRecommendationsLambdaWithExcessiveTimeouts": { + "CostUpdateAccountBudgetAlertsBody": { "type": "object", "properties": { - "maxDailyTimeoutRate": { - "type": "number", - "format": "double" - }, - "dateOfDailyTimeoutRate": { - "type": "string" - }, - "aveDailyTimeoutRate": { - "type": "number", - "format": "double" - }, - "functionTimeoutSettings": { - "type": "number", - "format": "double" + "budgetAlert": { + "$ref": "#/definitions/apiwaveBudgetAlert", + "description": "Required. Budget alert setting.\n\nSet only the setting value to be changed.\nFor example, If you want to change only daily value, set `{\"budget\":[{\"id\":\"daily\",\"value\":100,\"enabled\":true}}` as a parameter\nThe same goes for notification. If you want to change only email value, set `{\"notification\":[{\"id\":\"email\",\"destination\":\"budgetalert-example@alphaus.cloud\",\"enabled\":true}}` as a parameter" + } + }, + "title": "Request message for UpdateAccountBudgetAlerts" + }, + "CostUpdateAccountBudgetBody": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/blueapiapiBudget" + } + }, + "title": "Request message for UpdateAccountBudget" + }, + "CostUpdateBudgetAlertsBody": { + "type": "object", + "properties": { + "vendor": { + "type": "string", + "description": "Required. At the moment, only `aws` is supported." }, - "lostDailyComputeCost": { - "type": "number", - "format": "double" + "accounts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. Lsit of accountId. For example, you set to [\"accountId1\",\"accountId2\",\"accountId3\"]." }, - "aveDailyInvokes": { - "type": "number", - "format": "double" + "notification": { + "$ref": "#/definitions/apiBudgetAlertNotification", + "description": "Required." }, - "currentDayInvokes": { - "type": "number", - "format": "double" + "daily": { + "$ref": "#/definitions/apiDailyBudgetAlert", + "description": "Optional." }, - "currentDayTimeoutRate": { - "type": "number", - "format": "double" + "dailyRate": { + "$ref": "#/definitions/apiDailyRateIncreaseBudgetAlert", + "description": "Optional." }, - "function": { - "$ref": "#/definitions/LambdaDetailsFunctionDetails" + "monthly": { + "$ref": "#/definitions/apiMonthlyBudgetAlert", + "description": "Optional." } - } + }, + "description": "Request message for the UpdateBudgetAlerts rpc." }, - "TrustedAdvisorRecommendationsLowUtilizationEC2Instances": { + "CostUpdateCostFiltersBody": { "type": "object", "properties": { - "ec2Instance": { - "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" + "filterName": { + "type": "string", + "title": "Required. Filter Name. Specify characters between 1 ~ 100" }, - "aveCpuUtilizationBy14Day": { - "type": "number", - "format": "double" + "groupId": { + "type": "string", + "description": "Required. If set, reads the usage-based cost details of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the usage-based cost details of the whole organization. Optional for AWS Wave(Pro)." }, - "aveNetworkIOBy14Day": { - "type": "number", - "format": "double" + "accountId": { + "type": "string", + "description": "Required. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the usage-based cost details of the whole organization." + }, + "awsOptions": { + "$ref": "#/definitions/v1ReadCostsRequestAwsOptions", + "description": "Required. Valid only for the `aws` vendor. AWS-specific options." } - } + }, + "description": "Request message for the UpdateCostFilters rpc." }, - "TrustedAdvisorRecommendationsNetworkFirewallEndpointAZIndependence": { + "CoverAddSideMenuFavoriteBody": { "type": "object", "properties": { - "endpoint": { - "$ref": "#/definitions/AWSResourceDetailsNetworkFirewallDetailsEndpoint" - }, - "crossAZSubnetsList": { + "menuItemId": { "type": "string" } - } + }, + "title": "Request message for AddSideMenuFavorite" }, - "TrustedAdvisorRecommendationsRDSIdleDBInstances": { + "CoverAssignCostGroupMemberBody": { "type": "object", "properties": { - "rdsDetails": { - "$ref": "#/definitions/awsAWSResourceDetailsRDSDetails" - }, - "daysLastConnection": { - "type": "string" + "userId": { + "type": "string", + "description": "Required. User Id." } - } + }, + "title": "Request message for AssignCostGroupMember" }, - "TrustedAdvisorRecommendationsRoute53LatencyResourceRecordsSets": { + "CoverAssignPayerBody": { "type": "object", "properties": { - "route53Details": { - "$ref": "#/definitions/AWSResourceDetailsRoute53Details" + "accountId": { + "type": "string", + "description": "Required. Account Id." + }, + "payerId": { + "type": "string", + "description": "Required. The Payer Id." } - } + }, + "title": "Request message for AssignPayer" }, - "TrustedAdvisorRecommendationsS3IncompleteMPU": { + "CoverExecuteOptimizationBody": { + "type": "object" + }, + "CoverModifyResourceTypeBody": { "type": "object", "properties": { - "s3Details": { - "$ref": "#/definitions/AWSResourceDetailsS3Details" + "accountId": { + "type": "string", + "description": "Required. Account Id." }, - "lifecycleRuleForDeletingIMPU": { - "type": "string" + "resourceId": { + "type": "string", + "description": "Required. The resource Id." }, - "daysAfterInitiation": { - "type": "string" + "resourceType": { + "type": "string", + "description": "Required. The recommended resource type." + }, + "region": { + "type": "string", + "description": "Required. Resource region." } - } + }, + "title": "Request message for ModifyResourceType" }, - "TrustedAdvisorRecommendationsUnassociatedEIP": { + "CoverRegisterAccountBody": { "type": "object", "properties": { - "eipDetails": { - "$ref": "#/definitions/InstanceDetailsEIPDetails" + "accountId": { + "type": "string", + "description": "Required. The AWS account Id." + }, + "accountName": { + "type": "string", + "title": "The account name" } - } + }, + "description": "Request message for the RegisterAccount rpc." }, - "TrustedAdvisorRecommendationsUnderutilizedEBSVolume": { + "CoverRemoveCostGroupMemberBody": { "type": "object", "properties": { - "ebsDetails": { - "$ref": "#/definitions/awsAWSResourceDetailsEBSDetails" - }, - "monthlyStorageCost": { - "type": "number", - "format": "double" + "userId": { + "type": "string", + "description": "Required. User Id." } - } + }, + "title": "Request message for RemoveCostGroupMember" }, - "TrustedAdvisorRecommendationsUnderutilizedRedshiftCluster": { + "CoverRemoveSideMenuFavoriteBody": { "type": "object", "properties": { - "cluster": { - "$ref": "#/definitions/RedshiftDetailsClusterDetails" - }, - "reason": { + "menuItemId": { "type": "string" - }, - "estimatedMonthlySavings": { + } + }, + "title": "Request message for RemoveSideMenuFavorite" + }, + "CoverSetCostGroupAnomalyOptionsBody": { + "type": "object", + "properties": { + "threshold": { "type": "number", - "format": "double" + "format": "float", + "title": "Required" + }, + "isPercentage": { + "type": "boolean", + "description": "Required. When set to true, the threshold is a percentage to the actual cost. Otherwise, it is a fixed amount." + }, + "pastDataInMonths": { + "type": "string", + "format": "int64", + "description": "Optional. The number of past months to be used in training the model. Note: This will affect the results of anomaly detection. Default and max is 9 while min is 1." } } }, - "adminv1NotificationAccount": { + "CoverSetCostGroupEventIndicatorBody": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required." + "anomaly": { + "type": "boolean", + "title": "Required. Only anomaly is supported as of now" }, - "accountId": { - "type": "string", - "description": "Required." + "visualBuilder": { + "type": "boolean", + "title": "Optional. Temporary storage of cost group creation UI preference" } } }, - "apiAccountDetails": { + "CoverTerminateResourceBody": { "type": "object", "properties": { - "id": { + "accountId": { "type": "string", - "description": "Resource Id. \n\nif account, customer id.\n\nif tag, tag resource id." + "description": "Required. Account Id." + }, + "resourceId": { + "type": "string", + "description": "Required. The resource Id." }, + "region": { + "type": "string", + "description": "Required. Resource region." + } + }, + "title": "Request message for TerminateResource" + }, + "CoverUpdateAlertDetailsBody": { + "type": "object", + "properties": { "name": { "type": "string", - "description": "Resource Name. \n\nif account, customer name.\n\nif tag, tag resources." + "description": "If optional fields are not supplied, no changes occur.\nOptional." }, - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/apiUsageDetails" - }, - "title": "details: Vendor service fees included" + "fixedAmount": { + "type": "number", + "format": "float", + "description": "Both are optional." }, - "customDetails": { - "type": "array", - "items": { - "$ref": "#/definitions/apiCustomDetails" - }, - "title": "customDetails: Includes details of custom service and additional item data" + "percentage": { + "type": "number", + "format": "float" }, - "feeDetails": { + "granularity": { + "type": "string", + "description": "Optional. daily or monthly. Only 'daily' is supported for now." + }, + "costGroups": { "type": "array", "items": { - "$ref": "#/definitions/blueapiapiFeeDetails" + "type": "string" }, - "title": "feeDetails: Includes details of re-caluclated fee data" + "description": "Optional. Cost group IDs." }, - "total": { + "channels": { "type": "array", "items": { - "$ref": "#/definitions/apiAccountTotal" + "type": "string" }, - "description": "substitution:\n Total amount of agency fee costs\n\nsupportFee:\n Total amount of Support Fee costs\n\nusageOnlyTotal:\n Total amount of vendor usage fee only costs\n\nusageTotal:\n Total amount of vendor usage fee costs\n\nmarketplace:\n Total amount of vendor marketplace usage costs\n\nmarketplaceFees:\n Total amount of vendor marketplace fee costs", - "title": "The keys included in the account total column have the following values" + "description": "Optional. Channel IDs." } }, - "description": "AccountDetails resource definition." + "title": "Request message for UpdateAlertDetails" }, - "apiAccountGroup": { + "CoverUpdateAllocatorBody": { "type": "object", "properties": { - "id": { + "category": { + "type": "string" + }, + "expiration": { "type": "string", - "description": "The AccountGroup id." + "format": "int64" }, - "name": { + "startMonth": { "type": "string", - "description": "The AccountGroup name." + "description": "Optional. The starting month of the allocator to be effective." }, - "metadata": { + "defaultAccount": { + "type": "string", + "description": "Optional. The default account for remaining costs. If not set, will allocate the cost to the original account." + }, + "criteria": { "type": "array", "items": { - "$ref": "#/definitions/apiKeyValue" + "type": "object", + "$ref": "#/definitions/v1Criteria" }, - "description": "The attributes (key/value pair) of the AccountGroup." + "description": "Required. Criteria for the adjustment to be applied." }, - "accounts": { + "allocator": { "type": "array", "items": { - "$ref": "#/definitions/blueapiapiAccount" + "type": "object", + "$ref": "#/definitions/v1Allocator" } } } }, - "apiAccountOriginalResource": { + "CoverUpdateAnomalyAlertBody": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "The id is associated with CostUsage or BillingReport.\nVendor positioning is\nAWS: `lineItem/UsageAccountId`\nGoogleCloud: `projectId`\nAzure: `azure customer id`" - }, "name": { "type": "string", - "description": "The name is associated with CostUsage or BillingReport.\nBasically the same as id." - }, - "payerId": { - "type": "string", - "description": "The payerId associated with CostUsage or BillingReport.\nIt will be the organization Id associated with the id." - }, - "vendor": { - "type": "string", - "title": "The vendor. supported by `aws`,`gcp`,`azure`" + "title": "required. alert name" }, - "productRegistered": { + "alertEnabled": { "type": "boolean", - "description": "The ProductRegistered indicates whether it is linked to a product(Ripple or Wave(Pro))." + "description": "required." }, - "metadata": { + "notificationChannels": { "type": "array", "items": { - "$ref": "#/definitions/apiKeyValueMap" + "type": "string" }, - "description": "The attributes (key/value pair) of the account original resource." - } - }, - "description": "AccountOriginalResource resource definition." - }, - "apiAccountTotal": { - "type": "object", - "properties": { - "name": { - "type": "string" + "description": "required. Notification Channel Ids." }, - "currency": { - "type": "string" + "frequency": { + "type": "string", + "description": "required. Frequency." }, - "amount": { - "type": "number", - "format": "double" + "costGroupId": { + "type": "string", + "title": "required. cost group id" } - }, - "description": "AccountTotal resource definition." + } }, - "apiAdditionalItems": { + "CoverUpdateBudgetBody": { "type": "object", "properties": { - "label": { - "type": "string" - }, - "unitCost": { - "type": "number", - "format": "double" - }, - "total": { - "type": "number", - "format": "double" - }, - "quantity": { - "type": "number", - "format": "double" + "budgetData": { + "$ref": "#/definitions/coverBudgetData" } - }, - "description": "AdditionalItems resource definition." + } }, - "apiAdjustmentConfig": { + "CoverUpdateChannelDetailsBody": { "type": "object", "properties": { - "config": { - "type": "array", - "items": { - "$ref": "#/definitions/apiConfigFilters" - }, - "title": "User configuration" + "name": { + "type": "string", + "title": "If optional fields are not supplied, no changes occur.\nOptional. Either actual email address or slack/msteams channel name" }, - "vendor": { + "type": { "type": "string", - "title": "Vendor" + "description": "Optional. email, slack, or msteams." }, - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/apiManagementAccount" - }, - "title": "Management account configuration" + "webhookUrl": { + "type": "string", + "description": "Optional. Only needed for slack and msteams type." } }, - "description": "AdjustmentConfig resource definition." + "title": "Request message for UpdateChannelDetails" }, - "apiApiClient": { + "CoverUpdateCostGroupColorThemeBody": { "type": "object", "properties": { - "clientId": { - "type": "string", - "description": "API client id." - }, - "clientSecret": { - "type": "string", - "description": "API client secret. Only available during creation; otherwise, redacted." - }, - "name": { - "type": "string", - "description": "API client name." - }, - "grantType": { - "type": "string", - "description": "Grant type. Always set to `client_credentials`." - }, - "parent": { + "colorTheme": { "type": "string", - "description": "The client's parent resource." - }, - "createTime": { - "type": "string" + "description": "Required. Color Theme." } - } + }, + "title": "Request message for UpdateCostGroupColorTheme" }, - "apiAuditExport": { + "CoverUpdateCostGroupCombinationsBody": { "type": "object", "properties": { - "data": { - "$ref": "#/definitions/apiAuditExportData" + "combinations": { + "$ref": "#/definitions/coverCombinations" } }, - "description": "AuditExport resource definition." + "title": "Request message for UpdateCostGroupCombinations" }, - "apiAuditExportData": { + "CoverUpdateCostGroupDescriptionBody": { "type": "object", "properties": { - "content": { - "type": "string", - "description": "Base64 encoded value\nFor example, content :`dGltZSx1c2VySWQsc3ViVXNlcklkLHVzZXJOYW1lLGlzQWRtaW4sZXZlbnROYW1lLHBhdGgsdXNlclBhc3MsY2F0ZU5hbWUNCg==`\nDecoding this value, get `time,userId,subUserId,userName,isAdmin,eventName,path,userPass,cateName`." - }, - "downloadedRows": { - "type": "string", - "format": "int64", - "description": "Downloaded content lines." - }, - "totalRows": { + "description": { "type": "string", - "format": "int64", - "description": "Total of content lines." + "description": "Required. Description." } }, - "description": "AuditExportData resource definition." + "title": "Request message for UpdateCostGroupDescription" }, - "apiBillingGroupForecast": { + "CoverUpdateCostGroupIconBody": { "type": "object", "properties": { - "billingInternalId": { - "type": "string" - }, - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/apiForecastData" - } + "icon": { + "type": "string", + "description": "Required. Icon." } - } + }, + "title": "Request message for UpdateCostGroupIcon" }, - "apiBudgetAlertNotification": { + "CoverUpdateCostGroupImageBody": { "type": "object", "properties": { - "channels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. List of channelId. For example, you set to [\"channelId1\",\"channelId2\",\"channelId3\"]." - }, - "enabled": { - "type": "boolean", - "description": "Required. notification enable/disable \nIf disabled, no alert is sent." + "image": { + "type": "string", + "description": "Required. Image." } }, - "description": "BudgetAlertNotification resource definition." + "title": "Request message for UpdateCostGroupImage" }, - "apiBudgetAlertNotificationDetail": { + "CoverUpdateCostGroupNameBody": { "type": "object", "properties": { + "name": { + "type": "string", + "description": "Required. Name." + } + }, + "title": "Request message for UpdateCostGroupName" + }, + "CoverUpdateDataAccessBody": { + "type": "object", + "properties": { + "vendor": { + "type": "string", + "title": "GCP or Azure" + }, + "gcpOptions": { + "$ref": "#/definitions/coverGcpOptions", + "title": "GCP Options" + }, + "azureOptions": { + "$ref": "#/definitions/apicoverAzureOptions", + "title": "Azure Options" + }, + "awsOptions": { + "$ref": "#/definitions/apicoverAwsOptions", + "title": "AWS Options" + }, + "accountType": { + "type": "string", + "title": "Account Type" + } + }, + "title": "Request message for UpdateDataAccess (GCP/Azure)" + }, + "CoverUpdateDiscountExpirationAlertBody": { + "type": "object", + "properties": { + "alertEnabled": { + "type": "boolean", + "description": "required." + }, "channels": { "type": "array", "items": { - "$ref": "#/definitions/apiNotificationChannel" + "type": "string" }, - "description": "List of channel info." + "description": "required. Notification Channel Ids." }, - "enabled": { + "frequencies": { + "type": "array", + "items": { + "type": "string", + "format": "int64" + }, + "description": "required. Frequencies." + }, + "costGroups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Required. Cost Group Ids" + }, + "name": { + "type": "string", + "title": "required. Name" + } + } + }, + "CoverUpdateMemberPermissionBody": { + "type": "object", + "properties": { + "isAdmin": { "type": "boolean", - "description": "Notification enable/disable \nIf disabled, no alert is sent." + "description": "Required. IsAdmin." } }, - "description": "BudgetAlertNotificationDetail resource definition." + "title": "Request message for UpdateMemberPermission" }, - "apiConfigFilters": { + "CoverUpdateSideMenuStateBody": { "type": "object", "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" + "sidemenustate": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverSideMenuState" } } }, - "description": "ConfigFilters resource definition.\nA map of \"key:value\" config filters. The key indicates the adjustment key while the value is the filter adjustment value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the adjustment `productCode:AmazonEC2`, set to `{\"productCode\":\"AmazonEC2\"}`. You can also use regular expressions for adjustment values, such as `{\"description\":\"re:[A-Za-z0-9]*\"}`.\nList of available adjustment keys: productCode, type, description\nFor example value on productCode: AmazonEC2, AmazonRDS, AWSLambda, etc.\nFor example value on type: Fee, Refund, SppDiscount, etc." + "title": "Request message for UpdateSideMenuState" }, - "apiCostTag": { + "CoverUpdateUnitTypeBody": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "The costtag id." - }, - "orgId": { - "type": "string", - "description": "The parent organization id." - }, - "billingInternalId": { - "type": "string", - "description": "The parent billing internal id." - }, - "vendor": { - "type": "string", - "description": "The vendor." - }, - "accountId": { - "type": "string", - "description": "The account id." - }, - "logic": { + "unitName": { "type": "string", - "title": "The logic.(and/or)" + "title": "Optional" }, - "tags": { + "unitItems": { "type": "array", "items": { - "$ref": "#/definitions/apiKeyValue" + "type": "object", + "$ref": "#/definitions/coverUnitItem" }, - "description": "The attributes (key/value pair) of the costtag." + "title": "Optional" + }, + "description": { + "type": "string", + "title": "Optional" } } }, - "apiCustomDetails": { + "CoverUpdateUserProfileBody": { "type": "object", "properties": { "name": { "type": "string" }, - "currency": { + "role": { "type": "string" }, - "amount": { - "type": "number", - "format": "double" + "usage": { + "type": "string" + }, + "intention": { + "type": "string" + }, + "companyName": { + "type": "string" + }, + "linkSource": { + "type": "string" + }, + "hasSubscribedUpdates": { + "type": "boolean" } }, - "description": "CustomDetails resource definition." + "title": "Request message for UpdateUserProfile" }, - "apiDailyBudgetAlert": { + "CoverUpdateViewBody": { "type": "object", "properties": { - "value": { - "type": "number", - "format": "double", - "title": "Required. threshold in budget alerts" + "name": { + "type": "string" }, - "enabled": { - "type": "boolean", - "description": "Required. notification enable/disable \nIf disabled, no alert is sent." + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "isPrivate": { + "type": "boolean" + }, + "isEditable": { + "type": "boolean" + }, + "colorTheme": { + "type": "string" } }, - "description": "DailyBudgetAlert resource definition." + "title": "Request message for UpdateView" }, - "apiDailyRateIncreaseBudgetAlert": { + "CoverUpdateViewColorThemeBody": { "type": "object", "properties": { - "value": { - "type": "number", - "format": "double", - "title": "Required. threshold in budget alerts" - }, - "enabled": { - "type": "boolean", - "description": "Required. notification enable/disable \nIf disabled, no alert is sent." + "colorTheme": { + "type": "string" } }, - "description": "DailyRateIncreaseBudgetAlert resource definition." + "title": "Request message for UpdateViewColorTheme" }, - "apiEmailChannel": { + "CoverUpdateViewCurrencyBody": { "type": "object", "properties": { - "format": { + "currency": { "type": "string" - }, - "recipients": { + } + }, + "title": "Request message for UpdateViewCurrency" + }, + "CoverUpdateViewLayoutBody": { + "type": "object", + "properties": { + "layout": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/coverWidgetData" } } - } + }, + "title": "Request message for UpdateViewLayout" }, - "apiFeatureFlags": { + "CoverUpdateViewWidgetBody": { "type": "object", "properties": { - "dashboardGraph": { - "type": "boolean", - "title": "Control view-access to the Wave dashboard graph" + "options": { + "type": "object" }, - "usageAccount": { - "type": "boolean", - "title": "Control access to the Accounts pane under usage reports on Wave" + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverLayoutRequests" + } + } + }, + "title": "Request message for UpdateViewWidget" + }, + "CurrentEC2DetailsOtherDetails": { + "type": "object", + "properties": { + "exclusionStatus": { + "type": "string" }, - "usageAccountGraph": { - "type": "boolean", - "title": "Control view-access to the Account-level graph under usage reports on Wave" + "status": { + "type": "string" }, - "usageAccountMenuAccountEdit": { - "type": "boolean", - "title": "Control edit-access to Accounts under usage reports on Wave" + "resource": { + "type": "string" }, - "usageAccountMenuBudget": { - "type": "boolean", - "title": "Control view-access to budget settings for an Account under usage reports on Wave" + "awsConfigRule": { + "type": "string" }, - "usageAccountMenuBudgetEdit": { - "type": "boolean", - "title": "Control edit-access to budget settings for an Account under usage reports on Wave" + "inputParameters": { + "type": "string" + } + } + }, + "DBInstanceDetailsRDSMetrics": { + "type": "object", + "properties": { + "cpuUtilizationMetrics": { + "$ref": "#/definitions/awsMetricData" + } + } + }, + "DBInstanceDetailsStorage": { + "type": "object", + "properties": { + "allocatedStorageInGb": { + "type": "number", + "format": "double" }, - "usageAccountMenuFeesFee": { - "type": "boolean", - "title": "Control view-access to the fees menu for an Account under usage reports on Wave" - }, - "usageAccountMenuFeesCredit": { - "type": "boolean", - "title": "Control view-access to credits for an Account under usage reports on Wave" - }, - "usageAccountMenuFeesRefund": { - "type": "boolean", - "title": "Control view-access to refunds for an Account under usage reports on Wave" - }, - "usageAccountMenuFeesOtherFees": { - "type": "boolean", - "title": "Control view-access to other fees for an Account under usage reports on Wave" - }, - "usageReportDownload": { - "type": "boolean", - "title": "Control download-access to usage report on Wave" - }, - "usageGroup": { - "type": "boolean", - "title": "Control access to the Groups pane under usage reports on Wave" - }, - "usageGroupGraph": { - "type": "boolean", - "title": "Control view-access to the Group-level graph under usage reports on Wave" - }, - "usageTag": { - "type": "boolean", - "title": "Control view-access to the Tags pane under usage reports on Wave" - }, - "usageTagGraph": { - "type": "boolean", - "title": "Control view-access to the Tag-level graph under usage reports on Wave" - }, - "usageCrosstag": { - "type": "boolean", - "title": "Control view-access to the Tags pane for crosstag groups under usage reports on Wave" - }, - "usageCrosstagGraph": { - "type": "boolean", - "title": "Control view-access to the Tag-level graph for crosstag groups under usage reports on Wave" + "iops": { + "type": "number", + "format": "double" }, - "riPurchased": { - "type": "boolean", - "title": "Control view-access to purchased reservations under reserved instances on Wave" + "storageThroughput": { + "type": "number", + "format": "double" }, - "riUtilization": { - "type": "boolean", - "title": "Control access to RI utilization under reserved instances on Wave" + "type": { + "type": "string" + } + } + }, + "DetailsCostCalculationUsageTypes": { + "type": "object", + "properties": { + "operation": { + "type": "string" }, - "riRecommendation": { - "type": "boolean", - "title": "Control access to RI recommendations on Wave" + "productCode": { + "type": "string" }, - "spPurchased": { - "type": "boolean", - "title": "Control access to purchased savings plans on Wave" + "unit": { + "type": "string" }, - "invoice": { - "type": "boolean", - "title": "Control access to the invoice on Wave" + "usageAmount": { + "type": "number", + "format": "double" }, - "invoiceDownloadCsvDiscount": { - "type": "boolean", - "title": "Control download-access to the discounted invoice CSV on Wave" + "usageType": { + "type": "string" + } + } + }, + "DiscountPlansRIOption": { + "type": "object", + "properties": { + "ec2Details": { + "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" }, - "invoiceDownloadCsvMerged": { - "type": "boolean", - "title": "Control download-access to the merged invoice CSV on Wave" + "rdsDetails": { + "$ref": "#/definitions/awsAWSResourceDetailsRDSDetails" }, - "openApi": { - "type": "boolean", - "title": "Control access to API tokens on Wave" + "elasticacheDetails": { + "$ref": "#/definitions/AWSResourceDetailsElastiCacheDetails" }, - "usersManagement": { - "type": "boolean", - "title": "Control access to sub-user management on Wave" + "redshiftDetails": { + "$ref": "#/definitions/awsAWSResourceDetailsRedshiftDetails" }, - "aqCoverageRatio": { - "type": "boolean", - "title": "Control access to the Coverage Ratio pane on Aqua" + "opensearchDetails": { + "$ref": "#/definitions/AWSResourceDetailsOpensearchDetails" }, - "aqRiManagement": { - "type": "boolean", - "title": "Control access to the RI management pane on Aqua" + "memoryDBDetails": { + "$ref": "#/definitions/awsAWSResourceDetailsMemoryDBDetails" }, - "aqSpManagement": { - "type": "boolean", - "title": "Control access to the savings plan management pane on Aqua" + "recommendedNormalizedUnits": { + "type": "number", + "format": "double" }, - "aqRiSpInstances": { - "type": "boolean", - "title": "Control access to RI and savings plan recommendations on Aqua" + "recommendedNumberOfInstanceToPurchase": { + "type": "number", + "format": "double" }, - "aqRightSizing": { - "type": "boolean", - "title": "Control access to right-sizing on Aqua" + "estOutcomeFromPurchaseRI": { + "$ref": "#/definitions/RIOptionEstOutcomeFromPurchaseRI" }, - "aqScheduling": { - "type": "boolean", - "title": "Control access to scheduling on Aqua" + "region": { + "type": "string" }, - "reportFilters": { - "type": "boolean", - "title": "Control access to the report filters pane in Wave Pro" + "sizeFlexEligible": { + "type": "boolean" }, - "aquaLink": { - "type": "boolean", - "title": "Control access to Aqua from Wave Pro" + "tenancy": { + "type": "string" }, - "budgetalerts": { - "type": "boolean", - "title": "Control access to budget alerts from Wave Pro" + "currentGeneration": { + "type": "boolean" } - }, - "description": "Describes the features and whether or not they are enabled for a particular user." + } }, - "apiForecastData": { + "DiscountPlansSPOption": { "type": "object", "properties": { - "accountId": { + "type": { "type": "string" }, - "productCategory": { + "currencyCode": { "type": "string" }, - "productCode": { - "type": "string" + "hourlyCommitmentToPurchase": { + "type": "number", + "format": "double" }, - "frequency": { + "offeringId": { "type": "string" }, - "date": { + "currentUtilizationDetails": { + "$ref": "#/definitions/SPOptionCurrentUtilizationDetails" + }, + "estOutcomeFromPurchaseSP": { + "$ref": "#/definitions/SPOptionEstOutcomeFromPurchaseSP" + } + } + }, + "EBSDetailsVolumeDetails": { + "type": "object", + "properties": { + "attachmentState": { "type": "string" }, - "historicalCost": { + "iops": { "type": "number", "format": "double" }, - "forecastedCost": { + "throughput": { "type": "number", "format": "double" }, - "upperBound": { + "sizeInGb": { "type": "number", "format": "double" }, - "lowerBound": { - "type": "number", - "format": "double" + "type": { + "type": "string" + }, + "id": { + "type": "string" } } }, - "apiGroupCustomDetails": { + "EC2AutoScalingGroupDetailsInstanceConfigurationDetails": { "type": "object", "properties": { - "name": { + "type": { + "type": "string" + } + } + }, + "EC2DetailsRISpecsDetails": { + "type": "object", + "properties": { + "offeringClass": { + "type": "string" + } + } + }, + "ECSDetailsServiceDetails": { + "type": "object", + "properties": { + "architecture": { "type": "string" }, - "currency": { + "memorySizeInMB": { + "type": "string", + "format": "int64" + }, + "platform": { "type": "string" }, - "amount": { + "vCpu": { "type": "number", "format": "double" } - }, - "description": "GroupCustomDetails resource definition." + } }, - "apiGroupDetails": { + "ELBDetailsLoadBalancer": { "type": "object", "properties": { "name": { "type": "string" + } + } + }, + "GcpOptionsBillingOption": { + "type": "object", + "properties": { + "accountName": { + "type": "string" }, - "currency": { + "projectId": { "type": "string" }, - "amount": { - "type": "number", - "format": "double" + "datasetId": { + "type": "string" + }, + "datasetRegion": { + "type": "string" + }, + "bigQueryStatus": { + "type": "boolean" } }, - "description": "GroupDetails resource definition." + "title": "V2" }, - "apiGroupRootUser": { + "GcpOptionsProjectOption": { "type": "object", "properties": { - "email": { - "type": "string", - "description": "The email address associated with the user. If there is no email\r\naddress provided then this field will contain \"Not Set\"." - }, - "password": { - "type": "string", - "description": "The password associated with the user. This field will only be\r\npopulated when the reseller is first created." - }, - "groupId": { - "type": "string", - "description": "The ID of the group to which the user belongs. This will either\r\nbe a billing group ID or an access group ID." - }, - "groupName": { - "type": "string", - "description": "The name of the group to which the user belongs. This will either\r\nbe the name of a billing group or an access group." - }, - "groupType": { - "type": "string", - "description": "This field describes what type of group to which the user belongs.\r\nThis field will contain either a value of \"billing_group\" or \"access_group\"." - }, - "meta": { - "$ref": "#/definitions/apiFeatureFlags", - "description": "A collection of feature flags and whether or not they should be enabled. \r\nFor a full list of such flags, see https://alphauslabs.github.io/blueapi/apis/groups.html." - }, - "passwordUpdateTime": { - "type": "string", - "description": "The time when the password was last updated. This value will be null if \r\nthe password has never been updated." - }, - "updateTime": { - "type": "string", - "description": "The time when the user was last updated. This value will be null if the\r\nuser has never been updated." - }, - "userAccessId": { - "type": "string", - "description": "An ID that uniquely identifies the user in the context of its access group.\r\nIf the user does not belong to an access group then this value field will\r\ncontain the same value as the user ID." - }, - "userId": { - "type": "string", - "description": "An ID that unqiuely identifies the user." + "apiAccess": { + "type": "boolean" }, - "waveAvailabilityDays": { - "type": "integer", - "format": "int32", - "description": "How many days of Wave use remain. This value is only used for trial accounts.\r\nThis field cannot be updated." + "projectName": { + "type": "string" }, - "waveRegistered": { - "type": "string", - "description": "When the user registered on Wave." + "projectNumber": { + "type": "string" }, - "waveStatus": { + "billingAccountId": { + "type": "string" + } + } + }, + "IamCreatePartnerTokenBody": { + "type": "object", + "description": "Request message for the Iam.CreatePartnerToken rpc." + }, + "IamRefreshPartnerTokenBody": { + "type": "object", + "properties": { + "token": { "type": "string", - "description": "The plan associated with the user. Possible values include \"trial\",\r\n\"limited3\" and \"limited4\"." + "description": "Required. The previous (old) token to be refreshed." } }, - "description": "Describes the fields on an Alphaus root user for a billing group or access group." + "description": "Request message for the Iam.RefreshPartnerToken rpc." }, - "apiInvoice": { + "IamUpdateFeatureFlagsBody": { "type": "object", "properties": { - "aws": { - "$ref": "#/definitions/apiVendorDetail", - "title": "Invoice vendor detail by 'aws'" - }, - "gcp": { - "$ref": "#/definitions/apiVendorDetail", - "title": "Invoice vendor detail by 'gcp'" - }, - "azure": { - "$ref": "#/definitions/apiVendorDetail", - "title": "Invoice vendor detail by 'azure'" + "featureFlags": { + "$ref": "#/definitions/apiFeatureFlags" } }, - "description": "Invoice resource definition." + "description": "Request message for the Iam.UpdateFeatureFlags rpc." }, - "apiInvoiceMessage": { + "IamUpdateRoleBody": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "invoice generate request id" - }, - "status": { + "newName": { "type": "string", - "description": "done: Invoicing is complete.\nrunning: Invoicing in progress.\nfailed: Invoicing is failure.", - "title": "invoice generate request status" + "description": "Optional. If set, update the current name to this." }, - "timestamp": { - "type": "string", - "description": "status timestamp in UTC, RFC3339." + "permissions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. The list of permissions to attach to this role." } }, - "description": "InvoiceMessage resource definition." + "description": "Request message for the Iam.UpdateRole rpc." }, - "apiInvoiceSettings": { + "IdentityProvidersamlInfo": { "type": "object", "properties": { - "address": { - "type": "string" - }, - "groupId": { - "type": "string" - }, - "groupName": { + "metadata": { "type": "string" + } + } + }, + "InstanceDetailsEC2Metrics": { + "type": "object", + "properties": { + "cpuUtilizationMetrics": { + "$ref": "#/definitions/awsMetricData" }, - "contact": { - "type": "string" + "diskUtilizationMetrics": { + "$ref": "#/definitions/awsMetricData" }, - "currency": { - "type": "string" + "networkUtilizationMetrics": { + "$ref": "#/definitions/awsMetricData" }, - "dueDate": { + "memoryUtilizationMetrics": { + "$ref": "#/definitions/awsMetricData" + } + } + }, + "InstanceDetailsEIPDetails": { + "type": "object", + "properties": { + "ipAddress": { "type": "string" - }, - "dueDateCustomDay": { - "type": "number", - "format": "double" - }, - "dueDateDay": { + } + } + }, + "InstanceDetailsNatGatewayDetails": { + "type": "object", + "properties": { + "id": { "type": "string" }, - "dueDateMonth": { + "subnetId": { "type": "string" }, - "exchangeRate": { - "type": "number", - "format": "double" - }, - "invoiceNo": { + "vpcId": { "type": "string" }, - "language": { + "metrics": { + "$ref": "#/definitions/NatGatewayDetailsNatGatewayMetrics" + } + } + }, + "LambdaDetailsFunctionDetails": { + "type": "object", + "properties": { + "architecture": { "type": "string" }, - "phone": { - "type": "string" + "memorySizeInMB": { + "type": "string", + "format": "int64" }, - "postal": { + "arn": { "type": "string" }, - "title": { + "status": { "type": "string" } - }, - "description": "InvoiceSettings resource definition." + } }, - "apiInvoiceTotal": { + "ListCalculatorRunningAccountsResponseAwsRunningAccount": { "type": "object", "properties": { - "name": { + "month": { "type": "string", - "description": "supportFee: \n Total amount of Support Fee costs\n\nsubstitution: \n Total amount of agency fee costs\n\nchargeOnly: \n Total amount of vendor usage fee only costs\n\nmarketplace: \n Total amount of vendor marketplace usage costs\n\nmarketplaceFees: \n Total amount of vendor marketplace fee costs\n\ncharge: \n Total amount of vendor usage fee costs\n\ndiscount: \n Total amount after discounts. Inculuded Support fee costs\n\ndiscountWithSubstitution: \n Total Discounts plus agency fee costs\n\nchargeTaxFree: \n Amounts not included in consumption tax\n\nadditionalItem: \n Total amount of additional item costs \n\ncustomService: \n Total amount of custom service item costs \n\nsumOfBeforeTax: \n Total amount before consumption tax\n\ntax: \n Consumption tax amount on the total amount\n\ntotal: \n Total billing amount including tax", - "title": "Key names related to the total. Each key is described in the following detail" + "description": "The queried month. Format is yyyy-mm." }, - "currency": { - "type": "string" + "account": { + "type": "string", + "description": "The AWS account that is actively processing." }, - "amount": { - "type": "number", - "format": "double" + "date": { + "type": "string", + "description": "The target date the account is processing for." + }, + "started": { + "type": "string", + "description": "The timestamp when the calculation has started." } - }, - "description": "InvoiceTotal resource definition." + } }, - "apiKeyValue": { + "ListIdentityProvidersResponseIdentityProvider": { "type": "object", "properties": { - "key": { + "id": { "type": "string" }, - "value": { + "name": { + "type": "string" + }, + "type": { "type": "string" + }, + "saml": { + "$ref": "#/definitions/IdentityProvidersamlInfo" } } }, - "apiKeyValueMap": { + "ListRecommendationResponsePurchaseOption": { "type": "object", "properties": { - "key": { + "spType": { "type": "string" }, - "stringValue": { + "offeringClass": { "type": "string" }, - "boolValue": { + "commitment": { + "type": "number", + "format": "double" + }, + "numberToPurchase": { + "type": "string", + "format": "int64" + }, + "paymentOption": { + "type": "string" + }, + "term": { + "type": "string" + }, + "currentGeneration": { "type": "boolean" + }, + "serviceType": { + "type": "string" + }, + "upfrontCost": { + "type": "number", + "format": "double" } - }, - "description": "KeyValueMap resource definition." + } }, - "apiMSTeamsChannel": { + "ListRecommendationV2RequestRateSettings": { "type": "object", "properties": { - "webhookUrl": { + "spType": { + "type": "string" + }, + "rateModel": { + "type": "string" + }, + "paymentOption": { + "type": "string" + }, + "term": { + "type": "string" + }, + "service": { + "type": "string" + }, + "offeringClass": { + "type": "string" + }, + "vendor": { "type": "string" } } }, - "apiManagementAccount": { + "MethodConfigChargingMethod": { + "type": "string", + "enum": [ + "FIXED_FEE", + "PERCENTAGE", + "FIXED_FEE_OR_PERCENTAGE", + "TIERED_PRICE", + "TIERED_PERCENTAGE" + ], + "default": "FIXED_FEE" + }, + "MethodConfigCurrency": { + "type": "string", + "enum": [ + "JPY", + "USD", + "IDR", + "MYR", + "SGD", + "INR" + ], + "default": "JPY", + "description": "supported currency." + }, + "MetricDataMetrics": { "type": "object", "properties": { - "managementAccountId": { + "date": { + "type": "string" + }, + "value": { + "type": "number", + "format": "double" + } + } + }, + "NatGatewayDetailsNatGatewayMetrics": { + "type": "object", + "properties": { + "bytesInFromDest": { + "$ref": "#/definitions/awsMetricData" + }, + "bytesInFromSrc": { + "$ref": "#/definitions/awsMetricData" + }, + "bytesOutToDest": { + "$ref": "#/definitions/awsMetricData" + }, + "bytesOutToSrc": { + "$ref": "#/definitions/awsMetricData" + } + } + }, + "OperationsCancelOperationBody": { + "type": "object", + "description": "Request message for the Operations.CancelOperation rpc." + }, + "PricingGetPricingBody": { + "type": "object", + "properties": { + "service": { "type": "string", - "title": "Vendor-managed organization account Id" + "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." }, - "config": { + "region": { + "type": "string", + "description": "Required. Region code.\nSupported regions can be listed using `/{vendor}/services` endpoint. For usage information visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices.\nView all available AWS services by region at https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/.\nView 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.\nSupported 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": { - "$ref": "#/definitions/apiConfigFilters" + "type": "string" }, - "description": "A list of filtering options. See [ConfigFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "description": "Optional. Only specified columns will be returned, if provided.\nAll columns will be returned if this array is empty.\nSupported columns can be listed using `/{vendor}/services` endpoint. For usage information visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices." } }, - "description": "ManagementAccount resource definition." + "description": "Request message for Pricing.GetPricing rpc." }, - "apiMonthOnMonthCostForecast": { + "RDSDetailsDBInstanceDetails": { "type": "object", "properties": { - "category": { + "storage": { + "$ref": "#/definitions/DBInstanceDetailsStorage" + }, + "name": { "type": "string" }, - "costCurrent": { - "type": "number", - "format": "double" + "instanceClass": { + "type": "string" }, - "costPrev": { - "type": "number", - "format": "double" + "dbEdition": { + "type": "string" }, - "costForecast": { - "type": "number", - "format": "double" + "dbEngine": { + "type": "string" + }, + "deploymentOptions": { + "type": "string" + }, + "family": { + "type": "string" + }, + "multiAZ": { + "type": "string" + }, + "licenseModel": { + "type": "string" + }, + "metrics": { + "$ref": "#/definitions/DBInstanceDetailsRDSMetrics" } } }, - "apiMonthToDateCostForecast": { + "RIOptionEstOutcomeFromPurchaseRI": { "type": "object", "properties": { - "date": { - "type": "string" - }, - "costPrev": { + "aveUtilization": { "type": "number", "format": "double" }, - "costAccumulated": { + "aveNormalizesUnitsUsedPerHour": { "type": "number", "format": "double" }, - "costForecast": { + "aveNumberOfInstanceUsedPerHour": { "type": "number", "format": "double" }, - "upperBound": { + "breakEvenInMonths": { "type": "number", "format": "double" }, - "lowerBound": { + "monthlyOnDemandCost": { "type": "number", "format": "double" - } - } - }, - "apiMonthlyBudget": { - "type": "object", - "properties": { - "yearMonth": { - "type": "string", - "title": "Format: yyyymm" }, - "amount": { + "monthlyRICost": { "type": "number", "format": "double" - } - } - }, - "apiMonthlyBudgetAlert": { - "type": "object", - "properties": { - "value": { - "type": "number", - "format": "double", - "title": "Required. threshold in budget alerts" }, - "enabled": { - "type": "boolean", - "description": "Required. notification enable/disable \nIf disabled, no alert is sent." - } - }, - "description": "MonthlyBudgetAlert resource definition." - }, - "apiMonthlyCostForecast": { - "type": "object", - "properties": { - "date": { - "type": "string" + "monthlySavings": { + "type": "number", + "format": "double" }, - "costActual": { + "monthlySavingsPercentage": { "type": "number", "format": "double" }, - "costForecast": { + "maxNormalizedUnitsUsedPerHour": { "type": "number", "format": "double" }, - "budget": { + "minNormalizedUnitsUsedPerHour": { "type": "number", "format": "double" }, - "upperBound": { + "minNumberOfInstanceUsedPerHour": { "type": "number", "format": "double" }, - "lowerBound": { + "maxNumberOfInstanceUsedPerHour": { "type": "number", "format": "double" } } }, - "apiNotificationChannel": { + "RecommendationHubRecommendationsInsights": { "type": "object", "properties": { - "id": { + "type": { "type": "string" }, - "enabled": { - "type": "boolean" - }, - "name": { + "description": { "type": "string" - }, + } + } + }, + "RedshiftDetailsClusterDetails": { + "type": "object", + "properties": { "type": { "type": "string" }, - "email": { - "$ref": "#/definitions/apiEmailChannel" - }, - "slack": { - "$ref": "#/definitions/apiSlackChannel" - }, - "msteams": { - "$ref": "#/definitions/apiMSTeamsChannel" + "clusterId": { + "type": "string" }, - "product": { + "status": { "type": "string" } } }, - "apiNotificationSettings": { + "ReservedInstanceRIMetrics": { "type": "object", "properties": { - "enabled": { - "type": "boolean", - "description": "Indicates whether notification is enabled for this account globally." - }, - "defaultChannel": { - "type": "string", - "description": "The id of the default notification channel." + "utilization": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/MetricDataMetrics" + } } } }, - "apiOndemandChart": { + "RoundingRoundingMethod": { + "type": "string", + "enum": [ + "ROUND", + "ROUNDUP", + "ROUNDDOWN" + ], + "default": "ROUND", + "description": "- ROUND: round\n - ROUNDUP: round up\n - ROUNDDOWN: round down", + "title": "RoundingMethod" + }, + "S3DetailsBucketDetails": { "type": "object", "properties": { - "date": { + "arn": { "type": "string" }, - "service": { + "name": { "type": "string" + } + } + }, + "SPOptionCurrentUtilizationDetails": { + "type": "object", + "properties": { + "aveCoverage": { + "type": "number", + "format": "double" }, - "normalizedUsage": { + "aveHourOnDemandSpend": { "type": "number", "format": "double" }, - "ondemandCost": { + "maxHourlyOnDemandSpend": { "type": "number", "format": "double" }, - "usage": { + "minHourlyOnDemandSpend": { "type": "number", "format": "double" - } - } - }, - "apiOndemandData": { - "type": "object", - "properties": { - "id": { - "type": "string" }, - "ondemandChart": { - "type": "array", - "items": { - "$ref": "#/definitions/apiOndemandChart" - } + "existingHourlyCommitment": { + "type": "number", + "format": "double" + }, + "estOnDemandCostWithHourlyCommitment": { + "type": "number", + "format": "double" } } }, - "apiOptionsChart": { + "SPOptionEstOutcomeFromPurchaseSP": { "type": "object", "properties": { - "date": { - "type": "string" + "aveCoverage": { + "type": "number", + "format": "double" }, - "cost": { + "aveUtilization": { "type": "number", "format": "double" }, - "coverage": { + "monthlySavingsAmount": { "type": "number", "format": "double" }, - "usage": { + "onDemandCost": { "type": "number", "format": "double" }, - "usageCoverage": { + "roi": { + "type": "number", + "format": "double" + }, + "savingsPlanCost": { + "type": "number", + "format": "double" + }, + "savingsPercentage": { "type": "number", "format": "double" } } }, - "apiOptionsData": { + "SetCustomizedBillingServiceBillingGroupRequestCustomizedBillingServiceBillingSetting": { "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "title": "Required. [blueapi.api.ripple.CustomizedBillingService.id]" }, - "optionsChart": { + "chargingTarget": { + "$ref": "#/definitions/rippleChargingTarget", + "title": "Required. [blueapi.api.ripple.ChargingTarget]" + }, + "accounts": { "type": "array", "items": { - "$ref": "#/definitions/apiOptionsChart" - } + "type": "string" + }, + "description": "Optional. if chargingTarget is BILLINGGROUP, `accounts` is set emptty.\n\nSpecify the accountIds. For example: [`accountId1`,`accountId2`,`accountId3`]" } - } + }, + "title": "CustomizedBillingServiceBillingSetting", + "required": [ + "id", + "chargingTarget" + ] }, - "apiPermission": { + "TrustedAdvisorRecommendationsAWSWellArchitectedHighRiskIssues": { "type": "object", "properties": { - "namespace": { + "workloadArn": { "type": "string" }, - "permissions": { - "type": "array", - "items": { - "type": "string" - } + "workloadName": { + "type": "string" }, - "policies": { - "type": "array", - "items": { - "$ref": "#/definitions/apiPolicy" - } - } - } - }, - "apiPolicy": { - "type": "object", - "properties": { - "action": { + "reviewerName": { "type": "string" }, - "effect": { + "workloadType": { "type": "string" }, - "key": { + "workloadStartedDate": { "type": "string" }, - "values": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "apiRole": { - "type": "object", - "properties": { - "name": { + "workloadLastModifiedDate": { "type": "string" }, - "namespace": { + "numberOfIDHRI": { "type": "string" }, - "permissions": { - "type": "array", - "items": { - "type": "string" - } + "numberOfHRIResolved": { + "type": "string" }, - "policies": { - "type": "array", - "items": { - "$ref": "#/definitions/apiPolicy" - } + "numberOfQuestionsAnswered": { + "type": "string" + }, + "totalNumberOfQuestions": { + "type": "string" } } }, - "apiSlackChannel": { + "TrustedAdvisorRecommendationsAmazonEC2InstanceStopped": { "type": "object", "properties": { - "webhookUrl": { - "type": "string" - }, - "channelId": { - "type": "string" - }, - "channel": { - "type": "string" + "ec2Details": { + "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" }, - "configurationUrl": { + "awsConfigRule": { "type": "string" }, - "code": { + "inputParameters": { "type": "string" }, - "redirectUri": { + "resource": { "type": "string" } } }, - "apiUsageDetails": { + "TrustedAdvisorRecommendationsCommonDetails": { "type": "object", "properties": { - "name": { + "awsConfigRule": { "type": "string" }, - "currency": { + "inputParameters": { "type": "string" }, - "amount": { - "type": "number", - "format": "double" + "resource": { + "type": "string" } - }, - "description": "UsageDetails resource definition." + } }, - "apiUser": { + "TrustedAdvisorRecommendationsComprehendUnderutilizedEndpoints": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "User's unique id." - }, - "parent": { - "type": "string", - "description": "The user's parent. If empty or non-existent, it means this user is a root user;\notherwise, it's a subuser." + "endpoint": { + "$ref": "#/definitions/AWSResourceDetailsComprehendDetailsEndpoint" }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The attributes (key/value pair) of the user. If hierarchy is supported, it will be\nseparated by '/', such as 'key/subkey=value'. See https://alphauslabs.github.io/blueapi/\nfor the list of supported attributes." + "reason": { + "type": "string" } } }, - "apiUserRoleMapping": { + "TrustedAdvisorRecommendationsEC2ConsolidationForMSSqlServer": { "type": "object", "properties": { - "rootUser": { - "type": "string" + "ec2Details": { + "$ref": "#/definitions/AWSResourceDetailsEC2DetailsInstanceDetails" }, - "subUser": { + "minVCpu": { "type": "string" }, - "namespace": { + "sqlServerEdition": { "type": "string" + } + } + }, + "TrustedAdvisorRecommendationsEC2OverProvisionedForMSSqlServer": { + "type": "object", + "properties": { + "ec2Details": { + "$ref": "#/definitions/AWSResourceDetailsEC2DetailsInstanceDetails" }, - "role": { + "maxVCpu": { "type": "string" }, - "filter": { + "recommendedInstanceType": { "type": "string" } } }, - "apiVendorDetail": { + "TrustedAdvisorRecommendationsEC2RILeaseExpiration": { "type": "object", "properties": { - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/apiAccountDetails" - }, - "title": "details: Includes account-by-account details" - }, - "groupDetails": { - "type": "array", - "items": { - "$ref": "#/definitions/apiGroupDetails" - }, - "description": "groupDetails: Includes account-by-account details(fee item data)." + "currentMonthlyCost": { + "type": "number", + "format": "double" }, - "groupCustomDetails": { - "type": "array", - "items": { - "$ref": "#/definitions/apiGroupCustomDetails" - }, - "description": "groupCustomDetails: Includes account-by-account details(custom service and additional item data)." + "estMonthlySavings": { + "type": "number", + "format": "double" }, - "total": { - "type": "array", - "items": { - "$ref": "#/definitions/apiInvoiceTotal" - }, - "title": "total: Includes data on billing totals" + "reason": { + "type": "string" }, - "settings": { - "$ref": "#/definitions/apiInvoiceSettings", - "title": "settings: Includes settings related to billing" + "riDetails": { + "$ref": "#/definitions/AWSResourceDetailsReservedInstance" } - }, - "description": "VendorDetail resource definition." + } }, - "apiawsChartData": { + "TrustedAdvisorRecommendationsIdleLoadBalancer": { "type": "object", "properties": { - "date": { + "elbDetails": { + "$ref": "#/definitions/AWSResourceDetailsELBDetails" + }, + "reason": { "type": "string" + } + } + }, + "TrustedAdvisorRecommendationsInactiveAWSNetworkFirewall": { + "type": "object", + "properties": { + "firewallDetails": { + "$ref": "#/definitions/AWSResourceDetailsNetworkFirewallDetails" }, - "actualOndemand": { + "totalBytesProcessed": { "type": "number", "format": "double" + } + } + }, + "TrustedAdvisorRecommendationsInactiveNATGateways": { + "type": "object", + "properties": { + "natGatewayDetails": { + "$ref": "#/definitions/InstanceDetailsNatGatewayDetails" }, - "actualCost": { + "totalBytesFromDest": { "type": "number", "format": "double" }, - "utilization": { + "totalBytesFromSrc": { + "type": "number", + "format": "double" + }, + "totalBytes": { "type": "number", "format": "double" } } }, - "apiawsCost": { + "TrustedAdvisorRecommendationsLambdaHighErrorRates": { "type": "object", "properties": { - "account": { - "type": "string", - "description": "The account being queried." - }, - "groupId": { - "type": "string", - "description": "The group id the account is associated with during the query." - }, - "type": { - "type": "string" - }, - "date": { - "type": "string", - "description": "For daily data, format is `yyyy-mm-dd`; for monthly, `yyyy-mm`." - }, - "productCode": { - "type": "string", - "description": "The product code for an AWS service, such as `AmazonEC2`, `AmazonRDS`, etc. This can also be an Alphaus-specified custom value." - }, - "serviceCode": { - "type": "string", - "description": "The CUR service code of the lineitem, if applicable. Sometimes, this is the same as `productCode`, a subset of `productCode`, an Alphaus-specified custom value, or empty." - }, - "region": { - "type": "string", - "description": "The region of the lineitem, if applicable." - }, - "zone": { - "type": "string", - "description": "The zone of the lineitem, if applicable." - }, - "usageType": { - "type": "string", - "description": "The CUR usage type of the lineitem, if applicable." - }, - "instanceType": { - "type": "string", - "description": "The CUR instance type of the lineitem, if applicable." - }, - "operation": { - "type": "string", - "description": "The CUR operation of the lineitem, if applicable." - }, - "invoiceId": { - "type": "string", - "description": "The AWS invoice ID of the lineitem, if applicable." - }, - "description": { - "type": "string", - "description": "The description of the lineitem, if applicable." - }, - "resourceId": { - "type": "string", - "description": "The resource id of the lineitem, if applicable. At the moment, this is not yet fully supported." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "costCategories": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "avgDailyErrorRates": { + "type": "number", + "format": "double" }, - "usage": { + "avgDailyInvokes": { "type": "number", - "format": "double", - "description": "Only set when `description` and/or `resourceId` attributes are specified." + "format": "double" }, - "cost": { + "currentDayErrorRates": { "type": "number", - "format": "double", - "description": "The true cost (calculated) for this lineitem." + "format": "double" }, - "unblendedCost": { + "currentDayInvokes": { "type": "number", - "format": "double", - "description": "The unblended cost as reflected in the CUR for this lineitem." + "format": "double" }, - "baseCurrency": { - "type": "string", - "description": "The base currency for `cost`, `unblendedCost`, `effectiveCost`, `amortizedCost`. Always set to `USD`, CUR's default currency." + "dateForMaxErrorRates": { + "type": "string" }, - "exchangeRate": { + "lostDailyComputeCost": { "type": "number", - "format": "double", - "description": "The exchange rate used to convert `baseCurrency` to `targetCurrency`." + "format": "double" }, - "targetCost": { + "maxDailyErrorRates": { "type": "number", - "format": "double", - "description": "Converted `cost`." + "format": "double" }, - "targetUnblendedCost": { + "lambdaDetails": { + "$ref": "#/definitions/AWSResourceDetailsLambdaDetails" + } + } + }, + "TrustedAdvisorRecommendationsLambdaWithExcessiveTimeouts": { + "type": "object", + "properties": { + "maxDailyTimeoutRate": { "type": "number", - "format": "double", - "description": "Converted `unblendedCost`." + "format": "double" }, - "targetCurrency": { - "type": "string", - "description": "The currency set by `toCurrency`." + "dateOfDailyTimeoutRate": { + "type": "string" }, - "effectiveCost": { + "aveDailyTimeoutRate": { "type": "number", "format": "double" }, - "targetEffectiveCost": { + "functionTimeoutSettings": { "type": "number", - "format": "double", - "description": "Converted `effectiveCost`." + "format": "double" }, - "amortizedCost": { + "lostDailyComputeCost": { "type": "number", "format": "double" }, - "targetAmortizedCost": { + "aveDailyInvokes": { "type": "number", - "format": "double", - "description": "Converted `amortizedCost`." + "format": "double" }, - "tagId": { - "type": "string" + "currentDayInvokes": { + "type": "number", + "format": "double" }, - "timestamp": { - "type": "string", - "description": "Get last update in UNIX time format." + "currentDayTimeoutRate": { + "type": "number", + "format": "double" }, - "metadata": { - "type": "array", - "items": { - "$ref": "#/definitions/apiKeyValue" - }, - "description": "Various metadata associated with this lineitem." + "function": { + "$ref": "#/definitions/LambdaDetailsFunctionDetails" } } }, - "apiawsCostAttribute": { + "TrustedAdvisorRecommendationsLowUtilizationEC2Instances": { "type": "object", "properties": { - "account": { - "type": "string" - }, - "groupId": { - "type": "string" - }, - "productCode": { - "type": "string" - }, - "serviceCode": { - "type": "string" - }, - "region": { - "type": "string" + "ec2Instance": { + "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" }, - "zone": { - "type": "string" + "aveCpuUtilizationBy14Day": { + "type": "number", + "format": "double" }, - "usageType": { - "type": "string" + "aveNetworkIOBy14Day": { + "type": "number", + "format": "double" + } + } + }, + "TrustedAdvisorRecommendationsNetworkFirewallEndpointAZIndependence": { + "type": "object", + "properties": { + "endpoint": { + "$ref": "#/definitions/AWSResourceDetailsNetworkFirewallDetailsEndpoint" }, - "instanceType": { + "crossAZSubnetsList": { "type": "string" + } + } + }, + "TrustedAdvisorRecommendationsRDSIdleDBInstances": { + "type": "object", + "properties": { + "rdsDetails": { + "$ref": "#/definitions/awsAWSResourceDetailsRDSDetails" }, - "operation": { + "daysLastConnection": { "type": "string" + } + } + }, + "TrustedAdvisorRecommendationsRoute53LatencyResourceRecordsSets": { + "type": "object", + "properties": { + "route53Details": { + "$ref": "#/definitions/AWSResourceDetailsRoute53Details" + } + } + }, + "TrustedAdvisorRecommendationsS3IncompleteMPU": { + "type": "object", + "properties": { + "s3Details": { + "$ref": "#/definitions/AWSResourceDetailsS3Details" }, - "invoiceId": { + "lifecycleRuleForDeletingIMPU": { "type": "string" }, - "description": { + "daysAfterInitiation": { "type": "string" - }, - "resourceId": { - "type": "string" - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "costCategories": { - "type": "object", - "additionalProperties": { - "type": "string" - } } } }, - "apiazureCost": { + "TrustedAdvisorRecommendationsUnassociatedEIP": { "type": "object", "properties": { - "account": { - "type": "string", - "description": "The account being queried." - }, - "groupId": { - "type": "string", - "description": "The group id the account is associated with during the query." - }, - "date": { - "type": "string", - "description": "For daily data, format is `yyyy-mm-dd`; for monthly, `yyyy-mm`." + "eipDetails": { + "$ref": "#/definitions/InstanceDetailsEIPDetails" + } + } + }, + "TrustedAdvisorRecommendationsUnderutilizedEBSVolume": { + "type": "object", + "properties": { + "ebsDetails": { + "$ref": "#/definitions/awsAWSResourceDetailsEBSDetails" }, - "serviceName": { - "type": "string", - "description": "The service name, such as `Software License`, `Cognosys`, `SendGrid`, `New-Commerce ERP Software License`, etc." + "monthlyStorageCost": { + "type": "number", + "format": "double" + } + } + }, + "TrustedAdvisorRecommendationsUnderutilizedRedshiftCluster": { + "type": "object", + "properties": { + "cluster": { + "$ref": "#/definitions/RedshiftDetailsClusterDetails" }, - "productName": { - "type": "string", - "description": "The product code for an Azure service, such as `Dsv4 Series Windows VM`, `CentOS 7.6`, etc." + "reason": { + "type": "string" }, - "region": { + "estimatedMonthlySavings": { + "type": "number", + "format": "double" + } + } + }, + "adminv1NotificationAccount": { + "type": "object", + "properties": { + "vendor": { "type": "string", - "description": "The region of lineitem, if applicable." + "description": "Required." }, - "chargeType": { + "accountId": { "type": "string", - "description": "The charge type of lineitem, if applicable. Such as `New`, `CycleCharge`, `Prorate fees when cancel`, etc." - }, - "description": { + "description": "Required." + } + } + }, + "apiAccountDetails": { + "type": "object", + "properties": { + "id": { "type": "string", - "description": "The description of lineitem, if applicable." - }, - "billableQuantity": { - "type": "number", - "format": "double", - "description": "The billable quantity of lineitem, if applicable." - }, - "effectiveUnitPrice": { - "type": "number", - "format": "double", - "description": "The effective unit price of lineitem, if applicable." - }, - "cost": { - "type": "number", - "format": "double", - "description": "The true cost (calculated) for this lineitem." + "description": "Resource Id. \n\nif account, customer id.\n\nif tag, tag resource id." }, - "baseCurrency": { + "name": { "type": "string", - "description": "The base currency for `cost`." - }, - "exchangeRate": { - "type": "number", - "format": "double", - "description": "The exchange rate used to convert `baseCurrency` to `targetCurrency`." + "description": "Resource Name. \n\nif account, customer name.\n\nif tag, tag resources." }, - "targetCost": { - "type": "number", - "format": "double", - "description": "Converted `cost`." + "details": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiUsageDetails" + }, + "title": "details: Vendor service fees included" }, - "targetCurrency": { - "type": "string", - "description": "The currency set by `toCurrency`." + "customDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiCustomDetails" + }, + "title": "customDetails: Includes details of custom service and additional item data" }, - "timeInterval": { - "type": "string", - "description": "The time interval of lineitem, if applicable. Format is `yyyy-MM-ddThh:MM:ssZ/yyyy-mm-ddTHH:mm:ssZ` (for example 2020-09-16T00:00:00Z/2021-09-24T00:00:00Z)." + "feeDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/blueapiapiFeeDetails" + }, + "title": "feeDetails: Includes details of re-caluclated fee data" }, - "billingType": { + "total": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiAccountTotal" + }, + "description": "substitution:\n Total amount of agency fee costs\n\nsupportFee:\n Total amount of Support Fee costs\n\nusageOnlyTotal:\n Total amount of vendor usage fee only costs\n\nusageTotal:\n Total amount of vendor usage fee costs\n\nmarketplace:\n Total amount of vendor marketplace usage costs\n\nmarketplaceFees:\n Total amount of vendor marketplace fee costs", + "title": "The keys included in the account total column have the following values" + } + }, + "description": "AccountDetails resource definition." + }, + "apiAccountGroup": { + "type": "object", + "properties": { + "id": { "type": "string", - "description": "The billing type of lineitem, if applicable. Such as `MARKETPLACE`, `UPFRONT`, `Refund`, `Credit` and `OTHERS`." + "description": "The AccountGroup id." }, - "alternateId": { + "name": { "type": "string", - "description": "The alternate ID of lineitem, if applicable." + "description": "The AccountGroup name." }, - "domainName": { - "type": "string", - "description": "The domain name of lineitem, if applicable." + "metadata": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiKeyValue" + }, + "description": "The attributes (key/value pair) of the AccountGroup." }, - "operation": { + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/blueapiapiAccount" + } + } + } + }, + "apiAccountOriginalResource": { + "type": "object", + "properties": { + "id": { "type": "string", - "description": "The operation of lineitem, if applicable. Such as `Cool LRS Write Operations`, `Cool LRS Data Write`, `Standard Data Transfer Out`, etc." + "title": "The id is associated with CostUsage or BillingReport.\nVendor positioning is\nAWS: `lineItem/UsageAccountId`\nGoogleCloud: `projectId`\nAzure: `azure customer id`" }, - "usageType": { + "name": { "type": "string", - "description": "The usage type of lineitem, if applicable. Such as `Standard HDD Managed Disks`, `Tables`, `Blob Storage`, etc." + "description": "The name is associated with CostUsage or BillingReport.\nBasically the same as id." }, - "instanceType": { + "payerId": { "type": "string", - "description": "The instance type of lineitem, if applicable. Such as `Gateway`, `Standard_B2s`, `Standard_D4s_v3`, etc." + "description": "The payerId associated with CostUsage or BillingReport.\nIt will be the organization Id associated with the id." }, - "category": { + "vendor": { "type": "string", - "description": "The category of lineitem, if applicable. Such as `Software License`, `Marketplace`, `RI`, `Other`, etc." + "title": "The vendor. supported by `aws`,`gcp`,`azure`" }, - "subscriptionId": { - "type": "string", - "description": "The subscription id." + "productRegistered": { + "type": "boolean", + "description": "The ProductRegistered indicates whether it is linked to a product(Ripple or Wave(Pro))." }, - "entitlementId": { - "type": "string", - "description": "The entitlement id." + "metadata": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiKeyValueMap" + }, + "description": "The attributes (key/value pair) of the account original resource." } - } + }, + "description": "AccountOriginalResource resource definition." }, - "apiazureCostAttribute": { + "apiAccountTotal": { "type": "object", "properties": { - "customerId": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "entitlementId": { - "type": "string" - }, - "groupId": { - "type": "string" - }, - "productId": { - "type": "string" - }, - "productName": { - "type": "string" - }, - "skuId": { - "type": "string" - }, - "skuName": { - "type": "string" - }, - "description": { + "name": { "type": "string" }, - "category": { + "currency": { "type": "string" }, - "domainName": { - "type": "string" + "amount": { + "type": "number", + "format": "double" } - } + }, + "description": "AccountTotal resource definition." }, - "apicoverAWSRecommendations": { + "apiAdditionalItems": { "type": "object", "properties": { - "id": { + "label": { "type": "string" }, - "accountId": { - "type": "string" - }, - "accountName": { - "type": "string" - }, - "instanceId": { - "type": "string" - }, - "instanceName": { - "type": "string" - }, - "service": { - "type": "string" - }, - "source": { - "type": "string" - }, - "costGroup": { - "type": "string" - }, - "recommendation": { - "type": "string" - }, - "region": { - "type": "string" - }, - "estsavings": { + "unitCost": { "type": "number", "format": "double" }, - "estcost": { + "total": { "type": "number", "format": "double" }, - "estsavingsPercentage": { + "quantity": { "type": "number", "format": "double" - }, - "resourceArn": { - "type": "string" - }, - "restartNeeded": { - "type": "boolean" - }, - "rollbackPossible": { - "type": "boolean" - }, - "lastUpdatedAt": { - "type": "string" - }, - "recommendationGroup": { - "type": "string" - }, - "category": { - "type": "string" - }, - "purchaseRIRecommendationDetails": { - "$ref": "#/definitions/coverPurchaseRIRecommendationDetails" - }, - "savingsPlanRecommendationDetails": { - "$ref": "#/definitions/coverSavingsPlanRecommendationDetails" - }, - "rightSizingRecommendationDetails": { - "$ref": "#/definitions/coverRightSizingRecommendationDetails" - }, - "upgradeRecommendationDetails": { - "$ref": "#/definitions/coverUpgradeRecommendationDetails" - }, - "migrateRecommendationDetails": { - "$ref": "#/definitions/coverMigrateRecommendationDetails" - }, - "stopInstanceRecommendationDetails": { - "$ref": "#/definitions/coverStopInstanceRecommendationDetails" - }, - "deleteRecommendationDetails": { - "$ref": "#/definitions/coverDeleteRecommendationDetails" - }, - "otherRecommendationDetails": { - "$ref": "#/definitions/coverOtherRecommendationDetails" } - } + }, + "description": "AdditionalItems resource definition." }, - "apicoverAccount": { + "apiAdjustmentConfig": { "type": "object", "properties": { - "accountId": { - "type": "string" + "config": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiConfigFilters" + }, + "title": "User configuration" }, - "name": { - "type": "string" + "vendor": { + "type": "string", + "title": "Vendor" }, - "type": { - "type": "string" + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiManagementAccount" + }, + "title": "Management account configuration" } - } + }, + "description": "AdjustmentConfig resource definition." }, - "apicoverAwsOptions": { + "apiApiClient": { "type": "object", "properties": { - "AccountName": { - "type": "string" - }, - "PayerId": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "ExternalId": { - "type": "string" - }, - "StackId": { - "type": "string" - }, - "StackRegion": { - "type": "string" - }, - "TemplateUrl": { - "type": "string" + "clientId": { + "type": "string", + "description": "API client id." }, - "BucketName": { - "type": "string" + "clientSecret": { + "type": "string", + "description": "API client secret. Only available during creation; otherwise, redacted." }, - "Prefix": { - "type": "string" + "name": { + "type": "string", + "description": "API client name." }, - "ReportName": { - "type": "string" + "grantType": { + "type": "string", + "description": "Grant type. Always set to `client_credentials`." }, - "registrationStatus": { - "$ref": "#/definitions/coverRegistrationStatus" + "parent": { + "type": "string", + "description": "The client's parent resource." }, - "Status": { + "createTime": { "type": "string" - }, - "RegistrationMethod": { - "type": "string", - "title": "Valid values for now are: 'console', 'terraform'. default would be 'console'" } } }, - "apicoverAzureOptions": { + "apiAuditExport": { "type": "object", "properties": { - "accountName": { - "type": "string" - }, - "azureCustomerId": { - "type": "string" - }, - "azurePlanId": { - "type": "string" - }, - "serviceAcct": { - "type": "string" - }, - "partnerAcct": { - "type": "string" - }, - "companyId": { - "type": "string" - }, - "payerId": { - "type": "string" + "data": { + "$ref": "#/definitions/apiAuditExportData" } - } + }, + "description": "AuditExport resource definition." }, - "apicoverBudgetAlert": { + "apiAuditExportData": { "type": "object", "properties": { - "threshold": { - "type": "array", - "items": { - "$ref": "#/definitions/coverThreshold" - } + "content": { + "type": "string", + "description": "Base64 encoded value\nFor example, content :`dGltZSx1c2VySWQsc3ViVXNlcklkLHVzZXJOYW1lLGlzQWRtaW4sZXZlbnROYW1lLHBhdGgsdXNlclBhc3MsY2F0ZU5hbWUNCg==`\nDecoding this value, get `time,userId,subUserId,userName,isAdmin,eventName,path,userPass,cateName`." }, - "channels": { - "$ref": "#/definitions/coverAlertChannels" + "downloadedRows": { + "type": "string", + "format": "int64", + "description": "Downloaded content lines." + }, + "totalRows": { + "type": "string", + "format": "int64", + "description": "Total of content lines." } - } + }, + "description": "AuditExportData resource definition." }, - "apicoverCostCalculation": { + "apiBillingGroupForecast": { "type": "object", "properties": { - "estCostAfterDiscount": { - "type": "number", - "format": "double" - }, - "estCostBeforeDiscount": { - "type": "number", - "format": "double" - }, - "otherDiscount": { - "type": "number", - "format": "double" - }, - "savingsPlanDiscount": { - "type": "number", - "format": "double" - }, - "estNetUnusedAmortizedCommitments": { - "type": "number", - "format": "double" - }, - "reservedInstanceDiscount": { - "type": "number", - "format": "double" + "billingInternalId": { + "type": "string" }, - "usageTypes": { + "data": { "type": "array", "items": { - "$ref": "#/definitions/apicoverUsageTypes" + "type": "object", + "$ref": "#/definitions/apiForecastData" } } } }, - "apicoverEBSDetails": { + "apiBudgetAlertNotification": { "type": "object", "properties": { - "currentEBSDetails": { - "$ref": "#/definitions/coverCurrentEBSDetails" + "channels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. List of channelId. For example, you set to [\"channelId1\",\"channelId2\",\"channelId3\"]." }, - "upgradeEBSDetails": { - "$ref": "#/definitions/coverEBSRecommendationDetails" + "enabled": { + "type": "boolean", + "description": "Required. notification enable/disable \nIf disabled, no alert is sent." } - } + }, + "description": "BudgetAlertNotification resource definition." }, - "apicoverEC2Details": { + "apiBudgetAlertNotificationDetail": { "type": "object", "properties": { - "instanceType": { - "type": "string" - }, - "tenancy": { - "type": "string" - }, - "family": { - "type": "string" + "channels": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiNotificationChannel" + }, + "description": "List of channel info." }, - "platform": { - "type": "string" + "enabled": { + "type": "boolean", + "description": "Notification enable/disable \nIf disabled, no alert is sent." } - } + }, + "description": "BudgetAlertNotificationDetail resource definition." }, - "apicoverMemoryDBDetails": { + "apiConfigFilters": { "type": "object", "properties": { - "family": { - "type": "string" - }, - "nodeType": { - "type": "string" + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } } - } + }, + "description": "ConfigFilters resource definition.\nA map of \"key:value\" config filters. The key indicates the adjustment key while the value is the filter adjustment value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the adjustment `productCode:AmazonEC2`, set to `{\"productCode\":\"AmazonEC2\"}`. You can also use regular expressions for adjustment values, such as `{\"description\":\"re:[A-Za-z0-9]*\"}`.\nList of available adjustment keys: productCode, type, description\nFor example value on productCode: AmazonEC2, AmazonRDS, AWSLambda, etc.\nFor example value on type: Fee, Refund, SppDiscount, etc." }, - "apicoverRDSDetails": { + "apiCostTag": { "type": "object", "properties": { - "dbEdition": { - "type": "string" - }, - "dbEngine": { - "type": "string" - }, - "deploymentOptions": { - "type": "string" + "id": { + "type": "string", + "description": "The costtag id." }, - "family": { - "type": "string" + "orgId": { + "type": "string", + "description": "The parent organization id." }, - "instanceType": { - "type": "string" + "billingInternalId": { + "type": "string", + "description": "The parent billing internal id." }, - "licenseModel": { - "type": "string" - } - } - }, - "apicoverRedshiftDetails": { - "type": "object", - "properties": { - "currentGeneration": { - "type": "boolean" + "vendor": { + "type": "string", + "description": "The vendor." }, - "nodeType": { - "type": "string" + "accountId": { + "type": "string", + "description": "The account id." }, - "family": { - "type": "string" - } - } - }, - "apicoverTagData": { - "type": "object", - "properties": { - "tagKey": { - "type": "string" + "logic": { + "type": "string", + "title": "The logic.(and/or)" }, - "tagValue": { + "tags": { "type": "array", "items": { - "type": "string" - } + "type": "object", + "$ref": "#/definitions/apiKeyValue" + }, + "description": "The attributes (key/value pair) of the costtag." } } }, - "apicoverUsageTypes": { + "apiCustomDetails": { "type": "object", "properties": { - "operation": { - "type": "string" - }, - "productCode": { + "name": { "type": "string" }, - "unit": { + "currency": { "type": "string" }, - "usageAmount": { + "amount": { "type": "number", "format": "double" - }, - "usageType": { - "type": "string" } - } + }, + "description": "CustomDetails resource definition." }, - "apicoverUtilizationData": { + "apiDailyBudgetAlert": { "type": "object", "properties": { - "date": { - "type": "string" - }, "value": { "type": "number", - "format": "float" + "format": "double", + "title": "Required. threshold in budget alerts" + }, + "enabled": { + "type": "boolean", + "description": "Required. notification enable/disable \nIf disabled, no alert is sent." } - } + }, + "description": "DailyBudgetAlert resource definition." }, - "apigcpCost": { + "apiDailyRateIncreaseBudgetAlert": { "type": "object", "properties": { - "account": { - "type": "string", - "title": "account data" - }, - "groupId": { - "type": "string", - "description": "The group id the account is associated with during the query." - }, - "date": { - "type": "string", - "description": "For daily data, format is `yyyy-mm-dd`; for monthly, `yyyy-mm`." - }, - "invoiceMonth": { - "type": "string", - "description": "The invoice.month of the lineitem, if applicable." - }, - "service": { - "type": "string", - "description": "The service.Description of the lineitem, if applicable." - }, - "sku": { - "type": "string", - "description": "The sku.Description of the lineitem, if applicable." - }, - "region": { - "type": "string", - "description": "The location.region of the lineitem, if applicable." - }, - "zone": { - "type": "string", - "description": "The location.zone of the lineitem, if applicable." - }, - "creditsType": { - "type": "string", - "description": "The credits.type of the lineitem, if applicable." - }, - "creditsName": { - "type": "string", - "description": "The credits.name of the lineitem, if applicable." - }, - "usageUnit": { - "type": "string", - "description": "The usage.pricing_unit of the lineitem, if applicable." - }, - "usageAmount": { + "value": { "type": "number", "format": "double", - "description": "The usage.amount_in_pricing_units of the lineitem, if applicable." - }, - "baseCurrency": { - "type": "string", - "description": "The currency of the lineitem, if applicable." + "title": "Required. threshold in budget alerts" }, - "cost": { - "type": "number", - "format": "double", - "description": "The cost of the lineitem, if applicable." + "enabled": { + "type": "boolean", + "description": "Required. notification enable/disable \nIf disabled, no alert is sent." } }, - "description": "see gcp billing data schema details:[https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables]", - "title": "Cost for Api Response" + "description": "DailyRateIncreaseBudgetAlert resource definition." }, - "apirippleAccessGroup": { + "apiEmailChannel": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { + "format": { "type": "string" }, - "billingGroups": { + "recipients": { "type": "array", "items": { "type": "string" } } - }, - "description": "AccessGroup resource definition." + } }, - "apiripplev1InvoiceServiceDiscounts": { + "apiFeatureFlags": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "The invoice service discounts id." + "dashboardGraph": { + "type": "boolean", + "title": "Control view-access to the Wave dashboard graph" }, - "name": { - "type": "string", - "description": "The invoice service discount name.\nmust be 1-60 characters long." + "usageAccount": { + "type": "boolean", + "title": "Control access to the Accounts pane under usage reports on Wave" }, - "description": { - "type": "string", - "description": "The invoice service discount description.\nMaximum 150 characters long." + "usageAccountGraph": { + "type": "boolean", + "title": "Control view-access to the Account-level graph under usage reports on Wave" }, - "setting": { - "$ref": "#/definitions/v1InvoiceServiceDiscountsSetting", - "description": "The invoice service discount setting." + "usageAccountMenuAccountEdit": { + "type": "boolean", + "title": "Control edit-access to Accounts under usage reports on Wave" }, - "created": { - "type": "string", - "description": "Timestamp associated with the created.", - "readOnly": true + "usageAccountMenuBudget": { + "type": "boolean", + "title": "Control view-access to budget settings for an Account under usage reports on Wave" }, - "updated": { - "type": "string", - "description": "Timestamp associated with the updated.", - "readOnly": true - } - }, - "description": "InvoiceServiceDiscounts resource definition." - }, - "apiwaveBudget": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "budget id\n`previousDay` / `daily` / `monthly`" + "usageAccountMenuBudgetEdit": { + "type": "boolean", + "title": "Control edit-access to budget settings for an Account under usage reports on Wave" }, - "value": { - "type": "number", - "format": "double", - "title": "budget value" + "usageAccountMenuFeesFee": { + "type": "boolean", + "title": "Control view-access to the fees menu for an Account under usage reports on Wave" }, - "enabled": { + "usageAccountMenuFeesCredit": { "type": "boolean", - "title": "budget setting enable/disable" - } - }, - "description": "Budget resource definition." - }, - "apiwaveBudgetAlert": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "account id.", - "readOnly": true + "title": "Control view-access to credits for an Account under usage reports on Wave" }, - "notification": { - "type": "array", - "items": { - "$ref": "#/definitions/apiwaveNotification" - }, - "description": "notification setting." + "usageAccountMenuFeesRefund": { + "type": "boolean", + "title": "Control view-access to refunds for an Account under usage reports on Wave" }, - "budget": { - "type": "array", - "items": { - "$ref": "#/definitions/apiwaveBudget" - }, - "description": "budget setting." - } - }, - "description": "Budget resource definition." - }, - "apiwaveNotification": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "notification id\n`email` / `slack`" + "usageAccountMenuFeesOtherFees": { + "type": "boolean", + "title": "Control view-access to other fees for an Account under usage reports on Wave" }, - "destination": { - "type": "string", - "title": "destination email address /slack webhook url" + "usageReportDownload": { + "type": "boolean", + "title": "Control download-access to usage report on Wave" }, - "enabled": { + "usageGroup": { "type": "boolean", - "title": "notification enable/disable" - } - }, - "description": "Notification resource definition." - }, - "awsAWSResourceDetailsEBSDetails": { - "type": "object", - "properties": { - "volumeDetails": { - "$ref": "#/definitions/EBSDetailsVolumeDetails" - } - } - }, - "awsAWSResourceDetailsEC2Details": { - "type": "object", - "properties": { - "instance": { - "$ref": "#/definitions/AWSResourceDetailsEC2DetailsInstanceDetails" + "title": "Control access to the Groups pane under usage reports on Wave" }, - "riSpecsDetails": { - "$ref": "#/definitions/EC2DetailsRISpecsDetails" - } - } - }, - "awsAWSResourceDetailsMemoryDBDetails": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/AWSResourceDetailsMemoryDBDetailsNodeDetails" - } - } - }, - "awsAWSResourceDetailsRDSDetails": { - "type": "object", - "properties": { - "dbInstance": { - "$ref": "#/definitions/RDSDetailsDBInstanceDetails" - } - } - }, - "awsAWSResourceDetailsRedshiftDetails": { - "type": "object", - "properties": { - "cluster": { - "$ref": "#/definitions/RedshiftDetailsClusterDetails" + "usageGroupGraph": { + "type": "boolean", + "title": "Control view-access to the Group-level graph under usage reports on Wave" }, - "node": { - "$ref": "#/definitions/AWSResourceDetailsRedshiftDetailsNodeDetails" - } - } - }, - "awsAdjustmentsTypeList": { - "type": "object", - "properties": { - "types": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "awsAwsCostBreakeven": { - "type": "object", - "properties": { - "arn": { - "type": "string" + "usageTag": { + "type": "boolean", + "title": "Control view-access to the Tags pane under usage reports on Wave" }, - "startDate": { - "type": "string" + "usageTagGraph": { + "type": "boolean", + "title": "Control view-access to the Tag-level graph under usage reports on Wave" }, - "endDate": { - "type": "string" + "usageCrosstag": { + "type": "boolean", + "title": "Control view-access to the Tags pane for crosstag groups under usage reports on Wave" }, - "breakEvenPoint": { - "type": "string" + "usageCrosstagGraph": { + "type": "boolean", + "title": "Control view-access to the Tag-level graph for crosstag groups under usage reports on Wave" }, - "upperRatio": { - "type": "number", - "format": "double" + "riPurchased": { + "type": "boolean", + "title": "Control view-access to purchased reservations under reserved instances on Wave" }, - "lowerRatio": { - "type": "number", - "format": "double" + "riUtilization": { + "type": "boolean", + "title": "Control access to RI utilization under reserved instances on Wave" }, - "chartData": { - "type": "array", - "items": { - "$ref": "#/definitions/apiawsChartData" - } - } - } - }, - "awsAwsCostReductions": { - "type": "object", - "properties": { - "summary": { - "$ref": "#/definitions/awsCostReductionSummary" + "riRecommendation": { + "type": "boolean", + "title": "Control access to RI recommendations on Wave" }, - "riCostReductions": { - "type": "array", - "items": { - "$ref": "#/definitions/awsRiCostReduction" - } + "spPurchased": { + "type": "boolean", + "title": "Control access to purchased savings plans on Wave" }, - "spCostReductions": { - "type": "array", - "items": { - "$ref": "#/definitions/awsSpCostReduction" - } - } - } - }, - "awsAwsRecommendations": { - "type": "object", - "properties": { - "summary": { - "$ref": "#/definitions/awsReservationRecommendationSummary" + "invoice": { + "type": "boolean", + "title": "Control access to the invoice on Wave" }, - "riRecommendations": { - "type": "array", - "items": { - "$ref": "#/definitions/awsRiRecommendation" - } + "invoiceDownloadCsvDiscount": { + "type": "boolean", + "title": "Control download-access to the discounted invoice CSV on Wave" }, - "spRecommendations": { - "type": "array", - "items": { - "$ref": "#/definitions/awsSpRecommendation" - } + "invoiceDownloadCsvMerged": { + "type": "boolean", + "title": "Control download-access to the merged invoice CSV on Wave" }, - "estimatedCoverage": { - "type": "array", - "items": { - "$ref": "#/definitions/awsReservationEstimatedCoverage" - } - } - } - }, - "awsCalculatorConfig": { - "type": "object", - "properties": { - "adjustmentsTypeList": { - "$ref": "#/definitions/awsAdjustmentsTypeList", - "description": "CUR lineitem types included in Ripple's 'Adjusting Entries'." + "openApi": { + "type": "boolean", + "title": "Control access to API tokens on Wave" }, - "excludedServicesFromUsage": { - "type": "array", - "items": { - "$ref": "#/definitions/awsExcludedServiceFromUsage" - }, - "description": "List of services that are of type 'Usage' in CUR that are excluded,\noptionally converted to Adjustments." - } - }, - "description": "AWS's calculation engine configuration(s)." - }, - "awsCostExplorerRecommendations": { - "type": "object", - "properties": { - "ec2Rightsize": { - "$ref": "#/definitions/CostExplorerRecommendationsEC2Rightsize" + "usersManagement": { + "type": "boolean", + "title": "Control access to sub-user management on Wave" }, - "discountPlans": { - "$ref": "#/definitions/CostExplorerRecommendationsDiscountPlans" + "aqCoverageRatio": { + "type": "boolean", + "title": "Control access to the Coverage Ratio pane on Aqua" }, - "terminateEc2": { - "$ref": "#/definitions/CostExplorerRecommendationsTerminateEC2" - } - } - }, - "awsCostOptimizationHubRecommendations": { - "type": "object", - "properties": { - "currentDetails": { - "$ref": "#/definitions/awsCostOptimizationHubRecommendationsDetails" + "aqRiManagement": { + "type": "boolean", + "title": "Control access to the RI management pane on Aqua" }, - "recommendationDetails": { - "$ref": "#/definitions/awsCostOptimizationHubRecommendationsDetails" - } - } - }, - "awsCostOptimizationHubRecommendationsDetails": { - "type": "object", - "properties": { - "costCalculation": { - "$ref": "#/definitions/CostOptimizationHubRecommendationsDetailsCostCalculation" + "aqSpManagement": { + "type": "boolean", + "title": "Control access to the savings plan management pane on Aqua" }, - "ec2Details": { - "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" + "aqRiSpInstances": { + "type": "boolean", + "title": "Control access to RI and savings plan recommendations on Aqua" }, - "rdsDetails": { - "$ref": "#/definitions/awsAWSResourceDetailsRDSDetails" + "aqRightSizing": { + "type": "boolean", + "title": "Control access to right-sizing on Aqua" }, - "ebsDetails": { - "$ref": "#/definitions/awsAWSResourceDetailsEBSDetails" + "aqScheduling": { + "type": "boolean", + "title": "Control access to scheduling on Aqua" }, - "ec2AutoScalingGroupDetails": { - "$ref": "#/definitions/AWSResourceDetailsEC2AutoScalingGroupDetails" + "reportFilters": { + "type": "boolean", + "title": "Control access to the report filters pane in Wave Pro" }, - "ecsDetails": { - "$ref": "#/definitions/AWSResourceDetailsECSDetails" + "aquaLink": { + "type": "boolean", + "title": "Control access to Aqua from Wave Pro" }, - "lambdaDetails": { - "$ref": "#/definitions/AWSResourceDetailsLambdaDetails" + "budgetalerts": { + "type": "boolean", + "title": "Control access to budget alerts from Wave Pro" } - } + }, + "description": "Describes the features and whether or not they are enabled for a particular user." }, - "awsCostReductionSummary": { + "apiForecastData": { "type": "object", "properties": { - "totalOnDemandCost": { - "type": "number", - "format": "double" + "accountId": { + "type": "string" }, - "totalEffectiveCost": { - "type": "number", - "format": "double" + "productCategory": { + "type": "string" }, - "totalSavings": { - "type": "number", - "format": "double" + "productCode": { + "type": "string" }, - "totalRiOnDemandCost": { - "type": "number", - "format": "double" + "frequency": { + "type": "string", + "title": "daily, monthly" }, - "totalRiEffectiveCost": { - "type": "number", - "format": "double" + "date": { + "type": "string" }, - "totalRiSavings": { + "historicalCost": { "type": "number", "format": "double" }, - "totalSpOnDemandCost": { + "forecastedCost": { "type": "number", "format": "double" }, - "totalSpEffectiveCost": { + "upperBound": { "type": "number", "format": "double" }, - "totalSpSavings": { + "lowerBound": { "type": "number", "format": "double" } } }, - "awsExcludedServiceFromUsage": { + "apiGroupCustomDetails": { "type": "object", "properties": { - "managementAccount": { - "type": "string", - "description": "The management account (formerly master account) the `productCode` belongs to." - }, - "productCode": { - "type": "string", - "description": "The excluded product code." + "name": { + "type": "string" }, - "convertedToAdjustments": { - "type": "boolean", - "description": "If the product code is converted to Adjustments or not." - } - } - }, - "awsMetricData": { - "type": "object", - "properties": { - "metrics": { - "type": "array", - "items": { - "$ref": "#/definitions/MetricDataMetrics" - } + "currency": { + "type": "string" }, - "maxMetricInPercentage": { + "amount": { "type": "number", "format": "double" - }, - "metricCapacity": { - "type": "string" } - } + }, + "description": "GroupCustomDetails resource definition." }, - "awsReservationEstimatedCoverage": { + "apiGroupDetails": { "type": "object", "properties": { - "accountId": { - "type": "string" - }, - "productCode": { + "name": { "type": "string" }, - "instanceFamily": { + "currency": { "type": "string" }, - "riUsageCoverage": { - "type": "number", - "format": "double" - }, - "ec2SpUsageCoverage": { - "type": "number", - "format": "double" - }, - "computeSpOnDemandCost": { - "type": "number", - "format": "double" - }, - "computeSpDiscountedCost": { + "amount": { "type": "number", "format": "double" } - } + }, + "description": "GroupDetails resource definition." }, - "awsReservationRecommendationSummary": { + "apiGroupRootUser": { "type": "object", "properties": { - "totalMonthlyOnDemandCost": { - "type": "number", - "format": "double" + "email": { + "type": "string", + "description": "The email address associated with the user. If there is no email\r\naddress provided then this field will contain \"Not Set\"." }, - "totalEstimatedMonthlySavings": { - "type": "number", - "format": "double" + "password": { + "type": "string", + "description": "The password associated with the user. This field will only be\r\npopulated when the reseller is first created." }, - "totalMonthlyDiscountedCost": { - "type": "number", - "format": "double" + "groupId": { + "type": "string", + "description": "The ID of the group to which the user belongs. This will either\r\nbe a billing group ID or an access group ID." }, - "reductionRate": { - "type": "number", - "format": "double" + "groupName": { + "type": "string", + "description": "The name of the group to which the user belongs. This will either\r\nbe the name of a billing group or an access group." }, - "totalUpfrontCost": { - "type": "number", - "format": "double" + "groupType": { + "type": "string", + "description": "This field describes what type of group to which the user belongs.\r\nThis field will contain either a value of \"billing_group\" or \"access_group\"." }, - "totalRecurringMonthlyCost": { - "type": "number", - "format": "double" - } - } - }, - "awsRiCostReduction": { - "type": "object", - "properties": { - "id": { - "type": "string" + "meta": { + "$ref": "#/definitions/apiFeatureFlags", + "description": "A collection of feature flags and whether or not they should be enabled. \r\nFor a full list of such flags, see https://alphauslabs.github.io/blueapi/apis/groups.html." }, - "arn": { - "type": "string" + "passwordUpdateTime": { + "type": "string", + "description": "The time when the password was last updated. This value will be null if \r\nthe password has never been updated." }, - "customerId": { - "type": "string" + "updateTime": { + "type": "string", + "description": "The time when the user was last updated. This value will be null if the\r\nuser has never been updated." }, - "customerName": { - "type": "string" + "userAccessId": { + "type": "string", + "description": "An ID that uniquely identifies the user in the context of its access group.\r\nIf the user does not belong to an access group then this value field will\r\ncontain the same value as the user ID." }, - "billingInternalId": { - "type": "string" + "userId": { + "type": "string", + "description": "An ID that unqiuely identifies the user." }, - "billingGroupId": { - "type": "string" + "waveAvailabilityDays": { + "type": "integer", + "format": "int32", + "description": "How many days of Wave use remain. This value is only used for trial accounts.\r\nThis field cannot be updated." }, - "billingGroupName": { - "type": "string" + "waveRegistered": { + "type": "string", + "description": "When the user registered on Wave." }, - "destCustomerId": { - "type": "string" + "waveStatus": { + "type": "string", + "description": "The plan associated with the user. Possible values include \"trial\",\r\n\"limited3\" and \"limited4\"." + } + }, + "description": "Describes the fields on an Alphaus root user for a billing group or access group." + }, + "apiInvoice": { + "type": "object", + "properties": { + "aws": { + "$ref": "#/definitions/apiVendorDetail", + "title": "Invoice vendor detail by 'aws'" }, - "start": { - "type": "string" + "gcp": { + "$ref": "#/definitions/apiVendorDetail", + "title": "Invoice vendor detail by 'gcp'" }, - "end": { - "type": "string" + "azure": { + "$ref": "#/definitions/apiVendorDetail", + "title": "Invoice vendor detail by 'azure'" + } + }, + "description": "Invoice resource definition." + }, + "apiInvoiceMessage": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "invoice generate request id" }, - "service": { + "status": { + "type": "string", + "description": "done: Invoicing is complete.\nrunning: Invoicing in progress.\nfailed: Invoicing is failure.", + "title": "invoice generate request status" + }, + "timestamp": { + "type": "string", + "description": "status timestamp in UTC, RFC3339." + } + }, + "description": "InvoiceMessage resource definition." + }, + "apiInvoiceSettings": { + "type": "object", + "properties": { + "address": { "type": "string" }, - "instanceType": { + "groupId": { "type": "string" }, - "modificationStatus": { + "groupName": { "type": "string" }, - "number": { - "type": "string", - "format": "int64" - }, - "offerClass": { + "contact": { "type": "string" }, - "deploymentOption": { + "currency": { "type": "string" }, - "paidBy": { + "dueDate": { "type": "string" }, - "paymentOption": { - "type": "string" + "dueDateCustomDay": { + "type": "number", + "format": "double" }, - "platform": { + "dueDateDay": { "type": "string" }, - "region": { + "dueDateMonth": { "type": "string" }, - "remove": { - "type": "boolean" + "exchangeRate": { + "type": "number", + "format": "double" }, - "scope": { + "invoiceNo": { "type": "string" }, - "tenancy": { + "language": { "type": "string" }, - "termLength": { + "phone": { "type": "string" }, - "usageType": { + "postal": { "type": "string" }, - "vendor": { + "title": { "type": "string" + } + }, + "description": "InvoiceSettings resource definition." + }, + "apiInvoiceTotal": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "supportFee: \n Total amount of Support Fee costs\n\nsubstitution: \n Total amount of agency fee costs\n\nchargeOnly: \n Total amount of vendor usage fee only costs\n\nmarketplace: \n Total amount of vendor marketplace usage costs\n\nmarketplaceFees: \n Total amount of vendor marketplace fee costs\n\ncharge: \n Total amount of vendor usage fee costs\n\ndiscount: \n Total amount after discounts. Inculuded Support fee costs\n\ndiscountWithSubstitution: \n Total Discounts plus agency fee costs\n\nchargeTaxFree: \n Amounts not included in consumption tax\n\nadditionalItem: \n Total amount of additional item costs \n\ncustomService: \n Total amount of custom service item costs \n\nsumOfBeforeTax: \n Total amount before consumption tax\n\ntax: \n Consumption tax amount on the total amount\n\ntotal: \n Total billing amount including tax", + "title": "Key names related to the total. Each key is described in the following detail" }, - "zone": { + "currency": { "type": "string" }, - "disabled": { - "type": "boolean" - }, - "normalizationFactor": { - "type": "number", - "format": "double" - }, - "unblendedRate": { - "type": "number", - "format": "double" - }, - "upfrontValue": { - "type": "number", - "format": "double" - }, - "ondemandCost": { - "type": "number", - "format": "double" - }, - "effectiveCost": { - "type": "number", - "format": "double" - }, - "savings": { + "amount": { "type": "number", "format": "double" - }, - "breakEven": { - "type": "string", - "title": "for break even point date" } - } + }, + "description": "InvoiceTotal resource definition." }, - "awsRiRecommendation": { + "apiKeyValue": { "type": "object", "properties": { - "accountId": { - "type": "string" - }, - "productCode": { + "key": { "type": "string" }, - "location": { + "value": { "type": "string" - }, - "instanceType": { + } + } + }, + "apiKeyValueMap": { + "type": "object", + "properties": { + "key": { "type": "string" }, - "quantity": { - "type": "string", - "format": "int64" - }, - "normalizedUnit": { - "type": "number", - "format": "double" - }, - "operatingSystem": { - "type": "string", - "title": "for amazon ec2 only" - }, - "preInstalledSW": { + "stringValue": { "type": "string" }, - "tenancy": { + "boolValue": { + "type": "boolean" + } + }, + "description": "KeyValueMap resource definition." + }, + "apiMSTeamsChannel": { + "type": "object", + "properties": { + "webhookUrl": { "type": "string" - }, - "dbEngine": { + } + } + }, + "apiManagementAccount": { + "type": "object", + "properties": { + "managementAccountId": { "type": "string", - "title": "for amazon rds only" + "title": "Vendor-managed organization account Id" }, - "deploymentOption": { + "config": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiConfigFilters" + }, + "description": "A list of filtering options. See [ConfigFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + } + }, + "description": "ManagementAccount resource definition." + }, + "apiMonthOnMonthCostForecast": { + "type": "object", + "properties": { + "category": { "type": "string" }, - "ondemandCost": { - "type": "number", - "format": "double" - }, - "ondemandrate": { - "type": "number", - "format": "double" - }, - "riRate": { + "costCurrent": { "type": "number", "format": "double" }, - "upfrontCost": { + "costPrev": { "type": "number", "format": "double" }, - "discountedCost": { + "costForecast": { "type": "number", "format": "double" + } + } + }, + "apiMonthToDateCostForecast": { + "type": "object", + "properties": { + "date": { + "type": "string" }, - "monthlyAmortizedCost": { + "costPrev": { "type": "number", "format": "double" }, - "monthlyRecurringCost": { + "costAccumulated": { "type": "number", "format": "double" }, - "yearlyDiscountedCost": { + "costForecast": { "type": "number", "format": "double" }, - "reductionRate": { + "upperBound": { "type": "number", "format": "double" }, - "estimatedMonthlySavings": { + "lowerBound": { "type": "number", "format": "double" + } + } + }, + "apiMonthlyBudget": { + "type": "object", + "properties": { + "yearMonth": { + "type": "string", + "title": "Format: yyyymm" }, - "daysBeforeBreakEven": { + "amount": { "type": "number", "format": "double" } } }, - "awsSpCostReduction": { + "apiMonthlyBudgetAlert": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "arn": { - "type": "string" - }, - "customerId": { - "type": "string" - }, - "customerName": { - "type": "string" - }, - "billingGroupId": { - "type": "string" - }, - "billingGroupName": { - "type": "string" - }, - "currency": { - "type": "string" - }, - "service": { - "type": "string" - }, - "savingsPlan": { - "type": "string" - }, - "start": { - "type": "string" - }, - "end": { - "type": "string" - }, - "region": { - "type": "string" - }, - "instanceFamily": { - "type": "string" - }, - "termLength": { - "type": "string" + "value": { + "type": "number", + "format": "double", + "title": "Required. threshold in budget alerts" }, - "paymentOption": { + "enabled": { + "type": "boolean", + "description": "Required. notification enable/disable \nIf disabled, no alert is sent." + } + }, + "description": "MonthlyBudgetAlert resource definition." + }, + "apiMonthlyCostForecast": { + "type": "object", + "properties": { + "date": { "type": "string" }, - "commitment": { - "type": "number", - "format": "double" - }, - "upfrontFee": { + "costActual": { "type": "number", "format": "double" }, - "recurringFee": { + "costForecast": { "type": "number", "format": "double" }, - "ondemandCost": { + "budget": { "type": "number", "format": "double" }, - "effectiveCost": { + "upperBound": { "type": "number", "format": "double" }, - "savings": { + "lowerBound": { "type": "number", "format": "double" - }, - "breakEven": { - "type": "string", - "title": "for break even point date" } } }, - "awsSpRecommendation": { + "apiNotificationChannel": { "type": "object", "properties": { - "accountId": { + "id": { "type": "string" }, - "spProductFamily": { - "type": "string" + "enabled": { + "type": "boolean" }, - "location": { + "name": { "type": "string" }, - "instanceFamily": { + "type": { "type": "string" }, - "ondemandCost": { - "type": "number", - "format": "double" + "email": { + "$ref": "#/definitions/apiEmailChannel" }, - "commitment": { - "type": "number", - "format": "double" + "slack": { + "$ref": "#/definitions/apiSlackChannel" }, - "normalizedUnit": { - "type": "number", - "format": "double" + "msteams": { + "$ref": "#/definitions/apiMSTeamsChannel" }, - "discountedCost": { - "type": "number", - "format": "double" + "product": { + "type": "string" + } + } + }, + "apiNotificationSettings": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Indicates whether notification is enabled for this account globally." }, - "monthlyDiscountedCost": { - "type": "number", - "format": "double" + "defaultChannel": { + "type": "string", + "description": "The id of the default notification channel." + } + } + }, + "apiOndemandChart": { + "type": "object", + "properties": { + "date": { + "type": "string" }, - "yearlyDiscountedCost": { - "type": "number", - "format": "double" + "service": { + "type": "string" }, - "estimatedMonthlySavings": { + "normalizedUsage": { "type": "number", "format": "double" }, - "reductionRate": { + "ondemandCost": { "type": "number", "format": "double" }, - "daysBeforeBreakEven": { + "usage": { "type": "number", "format": "double" } } }, - "awsTrustedAdvisorRecommendations": { + "apiOndemandData": { "type": "object", "properties": { - "severityStatus": { - "type": "string" - }, - "recommendationArn": { - "type": "string" - }, - "exclusionStatus": { + "id": { "type": "string" }, - "lowUtilizationEc2Instances": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsLowUtilizationEC2Instances" - }, - "rdsIdleDbInstances": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsRDSIdleDBInstances" - }, - "s3IncompleteMPU": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsS3IncompleteMPU" - }, - "lambdaHighErrorRates": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsLambdaHighErrorRates" - }, - "underutilizedEBSVolume": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsUnderutilizedEBSVolume" - }, - "unassociatedEIP": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsUnassociatedEIP" - }, - "idleLoadBalancer": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsIdleLoadBalancer" - }, - "ec2InstancesStopped": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsAmazonEC2InstanceStopped" - }, - "ec2RILeaseExpiration": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsEC2RILeaseExpiration" - }, - "comprehendUnderutilizedEndpoints": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsComprehendUnderutilizedEndpoints" - }, - "underutilizedRedshiftCluster": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsUnderutilizedRedshiftCluster" - }, - "lambdaWithExcessiveTimeouts": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsLambdaWithExcessiveTimeouts" - }, - "awsWellArchitectedHighRiskIssues": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsAWSWellArchitectedHighRiskIssues" - }, - "commonDetails": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsCommonDetails" - }, - "inactiveNatGateways": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsInactiveNATGateways" - }, - "networkFirewallEndpointAZIndependence": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsNetworkFirewallEndpointAZIndependence" - }, - "inactiveNetworkFirewall": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsInactiveAWSNetworkFirewall" - }, - "ec2OverprovisionedMSSqlServer": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsEC2OverProvisionedForMSSqlServer" - }, - "ec2ConsolidationMSSqlServer": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsEC2ConsolidationForMSSqlServer" - }, - "route53LatencyResourceRecordSets": { - "$ref": "#/definitions/TrustedAdvisorRecommendationsRoute53LatencyResourceRecordsSets" + "ondemandChart": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiOndemandChart" + } } } }, - "azurecspAzureCSPRecommendations": { - "type": "object" - }, - "billingv1AccessGroup": { + "apiOptionsChart": { "type": "object", "properties": { - "accessGroupId": { - "type": "string", - "description": "The ID of the access group." + "date": { + "type": "string" }, - "accessGroupName": { - "type": "string", - "description": "The name of the access group." + "cost": { + "type": "number", + "format": "double" }, - "accessGroupDescription": { - "type": "string", - "description": "A description of the access group." + "coverage": { + "type": "number", + "format": "double" }, - "billingGroups": { - "type": "array", - "items": { - "$ref": "#/definitions/v1BillingGroup" - }, - "description": "A list of billing groups contained in the access group." + "usage": { + "type": "number", + "format": "double" + }, + "usageCoverage": { + "type": "number", + "format": "double" } - }, - "description": "Defines the fields associated with a Wave access group." + } }, - "billingv1AwsOptions": { + "apiOptionsData": { "type": "object", "properties": { - "useProFormaCur": { - "type": "boolean" + "id": { + "type": "string" }, - "payerId": { - "type": "string", - "description": "Must not be empty if useProFormaCur is true." + "optionsChart": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiOptionsChart" + } } } }, - "billingv1TagData": { + "apiPermission": { "type": "object", "properties": { - "customerId": { - "type": "string" - }, - "accountId": { + "namespace": { "type": "string" }, - "customerName": { - "type": "string" + "permissions": { + "type": "array", + "items": { + "type": "string" + } }, - "tags": { + "policies": { "type": "array", "items": { - "$ref": "#/definitions/v1Tags" + "type": "object", + "$ref": "#/definitions/apiPolicy" } } - }, - "title": "Response for tag request" + } }, - "blueapiapiAccount": { + "apiPolicy": { "type": "object", "properties": { - "vendor": { - "type": "string", - "title": "The vendor" - }, - "id": { - "type": "string", - "description": "The account id." - }, - "name": { - "type": "string", - "description": "The account name." + "action": { + "type": "string" }, - "orgId": { - "type": "string", - "description": "The parent organization id." + "effect": { + "type": "string" }, - "billingInternalId": { - "type": "string", - "description": "The parent billing internal id." + "key": { + "type": "string" }, - "metadata": { + "values": { "type": "array", "items": { - "$ref": "#/definitions/apiKeyValue" - }, - "description": "The attributes (key/value pair) of the account." + "type": "string" + } } } }, - "blueapiapiBudget": { + "apiRole": { "type": "object", "properties": { - "id": { + "name": { "type": "string" }, - "fiscalYear": { - "type": "string", - "title": "Format: yyyy" + "namespace": { + "type": "string" }, - "monthlyBudget": { + "permissions": { "type": "array", "items": { - "$ref": "#/definitions/apiMonthlyBudget" + "type": "string" + } + }, + "policies": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiPolicy" } } } }, - "blueapiapiChartData": { + "apiSlackChannel": { "type": "object", "properties": { - "date": { + "webhookUrl": { "type": "string" }, - "service": { + "channelId": { "type": "string" }, - "cost": { - "type": "number", - "format": "double" + "channel": { + "type": "string" }, - "profit": { - "type": "number", - "format": "double" + "configurationUrl": { + "type": "string" }, - "utilization": { - "type": "number", - "format": "double" + "code": { + "type": "string" }, - "commitment": { - "type": "number", - "format": "double" + "redirectUri": { + "type": "string" } } }, - "blueapiapiFeeDetails": { + "apiUsageDetails": { "type": "object", "properties": { "name": { @@ -18114,900 +18095,773 @@ "format": "double" } }, - "description": "FeeDetails resource definition." + "description": "UsageDetails resource definition." }, - "blueapiapiNotification": { + "apiUser": { "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "description": "User's unique id." }, - "notificationType": { - "type": "string" + "parent": { + "type": "string", + "description": "The user's parent. If empty or non-existent, it means this user is a root user;\notherwise, it's a subuser." }, - "channels": { - "type": "array", - "items": { + "metadata": { + "type": "object", + "additionalProperties": { "type": "string" - } - }, - "enabled": { - "type": "boolean" - }, - "account": { - "$ref": "#/definitions/blueapiapiNotificationAccount" + }, + "description": "The attributes (key/value pair) of the user. If hierarchy is supported, it will be\nseparated by '/', such as 'key/subkey=value'. See https://alphauslabs.github.io/blueapi/\nfor the list of supported attributes." } } }, - "blueapiapiNotificationAccount": { + "apiUserRoleMapping": { "type": "object", "properties": { - "vendor": { + "rootUser": { "type": "string" }, - "accountId": { + "subUser": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "role": { + "type": "string" + }, + "filter": { "type": "string" } } }, - "blueapiapiUtilizationData": { + "apiVendorDetail": { "type": "object", "properties": { - "id": { - "type": "string" + "details": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiAccountDetails" + }, + "title": "details: Includes account-by-account details" }, - "chartData": { + "groupDetails": { "type": "array", "items": { - "$ref": "#/definitions/blueapiapiChartData" - } + "type": "object", + "$ref": "#/definitions/apiGroupDetails" + }, + "description": "groupDetails: Includes account-by-account details(fee item data)." + }, + "groupCustomDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiGroupCustomDetails" + }, + "description": "groupCustomDetails: Includes account-by-account details(custom service and additional item data)." + }, + "total": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiInvoiceTotal" + }, + "title": "total: Includes data on billing totals" + }, + "settings": { + "$ref": "#/definitions/apiInvoiceSettings", + "title": "settings: Includes settings related to billing" + } + }, + "description": "VendorDetail resource definition." + }, + "apiawsChartData": { + "type": "object", + "properties": { + "date": { + "type": "string" + }, + "actualOndemand": { + "type": "number", + "format": "double" + }, + "actualCost": { + "type": "number", + "format": "double" + }, + "utilization": { + "type": "number", + "format": "double" } } }, - "blueapibillingv1InvoiceServiceDiscounts": { + "apiawsCost": { "type": "object", "properties": { - "id": { + "account": { "type": "string", - "description": "Service discount id." + "description": "The account being queried." }, - "name": { + "groupId": { "type": "string", - "description": "Service discount name." + "description": "The group id the account is associated with during the query." }, - "description": { + "type": { + "type": "string" + }, + "date": { "type": "string", - "description": "Service discount description." + "description": "For daily data, format is `yyyy-mm-dd`; for monthly, `yyyy-mm`." }, - "created": { + "productCode": { "type": "string", - "description": "create timestamp." + "description": "The product code for an AWS service, such as `AmazonEC2`, `AmazonRDS`, etc. This can also be an Alphaus-specified custom value." }, - "updated": { + "serviceCode": { "type": "string", - "description": "update timestamp." - } - }, - "description": "Streaming response message for the InvoiceServiceDiscounts rpc." - }, - "blueapibillingv1ListExchangeRatesResponse": { - "type": "object", - "properties": { - "month": { + "description": "The CUR service code of the lineitem, if applicable. Sometimes, this is the same as `productCode`, a subset of `productCode`, an Alphaus-specified custom value, or empty." + }, + "region": { "type": "string", - "description": "The Month." + "description": "The region of the lineitem, if applicable." }, - "common": { - "$ref": "#/definitions/rippleCommonExchangeRate", - "description": "The common exchange rate." + "zone": { + "type": "string", + "description": "The zone of the lineitem, if applicable." }, - "billingGroup": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleBillingGroupExchangeRate" - }, - "description": "The billing group exchange rate." + "usageType": { + "type": "string", + "description": "The CUR usage type of the lineitem, if applicable." }, - "payer": { - "$ref": "#/definitions/rippleVendorPayerExchangeRate", - "description": "The payer exchange rate." - } - }, - "description": "Response message for the ListExchangeRates rpc." - }, - "blueapicostv1CostItem": { - "type": "object", - "properties": { - "aws": { - "$ref": "#/definitions/apiawsCost" + "instanceType": { + "type": "string", + "description": "The CUR instance type of the lineitem, if applicable." }, - "gcp": { - "$ref": "#/definitions/apigcpCost" + "operation": { + "type": "string", + "description": "The CUR operation of the lineitem, if applicable." }, - "azure": { - "$ref": "#/definitions/apiazureCost" - } - }, - "description": "Response message wrapper for cloud costs." - }, - "blueapicoverv1CostItem": { - "type": "object", - "properties": { - "vendor": { + "invoiceId": { "type": "string", - "title": "`aws`, `azure`, `azureea` or `gcp`" + "description": "The AWS invoice ID of the lineitem, if applicable." }, - "date": { - "type": "string" + "description": { + "type": "string", + "description": "The description of the lineitem, if applicable." }, - "product": { - "type": "string" + "resourceId": { + "type": "string", + "description": "The resource id of the lineitem, if applicable. At the moment, this is not yet fully supported." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "costCategories": { + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "account": { - "type": "string", - "title": "AWS account, GCP projectId, AzureCSP accountId" + "usage": { + "type": "number", + "format": "double", + "description": "Only set when `description` and/or `resourceId` attributes are specified." }, "cost": { "type": "number", - "format": "double" + "format": "double", + "description": "The true cost (calculated) for this lineitem." }, - "details": { + "unblendedCost": { + "type": "number", + "format": "double", + "description": "The unblended cost as reflected in the CUR for this lineitem." + }, + "baseCurrency": { "type": "string", - "title": "Could be AWS, Azure or GCP Cost" + "description": "The base currency for `cost`, `unblendedCost`, `effectiveCost`, `amortizedCost`. Always set to `USD`, CUR's default currency." }, - "forecast": { - "$ref": "#/definitions/coverAwsCostForecast", - "title": "Cost Forecast" + "exchangeRate": { + "type": "number", + "format": "double", + "description": "The exchange rate used to convert `baseCurrency` to `targetCurrency`." }, - "region": { - "type": "string" + "targetCost": { + "type": "number", + "format": "double", + "description": "Converted `cost`." }, - "billingAccount": { - "type": "string", - "title": "AWS payer acount, GCP billing account, Azure Payer account" + "targetUnblendedCost": { + "type": "number", + "format": "double", + "description": "Converted `unblendedCost`." }, - "tagValue": { + "targetCurrency": { "type": "string", - "title": "Tag Value. Contains tag value of the input tag key. Only used if groupBy is set to tag" + "description": "The currency set by `toCurrency`." }, - "lastUpdate": { - "type": "string" + "effectiveCost": { + "type": "number", + "format": "double" }, - "unit": { - "type": "string", - "description": "Contains the list of unit items. Used only when groupBy is set to the selected unit type (e.g., \"Product\", \"Environment\", \"Customer\").\nExample: If groupBy is set to \"Environment\", this field might include values like \"dev\", \"next\", or \"prod\"." + "targetEffectiveCost": { + "type": "number", + "format": "double", + "description": "Converted `effectiveCost`." }, - "category": { - "type": "string", - "description": "Category. Contains the category to which a service belongs. Only used if groupBy is set to category." + "amortizedCost": { + "type": "number", + "format": "double" }, - "tagged": { - "type": "boolean", - "description": "Indicates whether the item is tagged (true) or not (false)." - } - }, - "description": "Response message wrapper for cloud costs." - }, - "blueapicoverv1ListExchangeRatesResponse": { - "type": "object", - "properties": { - "orgId": { - "type": "string" + "targetAmortizedCost": { + "type": "number", + "format": "double", + "description": "Converted `amortizedCost`." }, - "exchangeRates": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ExchangeRates" - } - } - }, - "title": "Response message for ListExchangeRates" - }, - "costv1CostAttribute": { - "type": "object", - "properties": { - "vendor": { + "tagId": { "type": "string" }, - "category": { - "type": "string" + "timestamp": { + "type": "string", + "description": "Get last update in UNIX time format." }, - "data": { + "metadata": { "type": "array", "items": { - "type": "string" - } + "type": "object", + "$ref": "#/definitions/apiKeyValue" + }, + "description": "Various metadata associated with this lineitem." } } }, - "coverAlertChannel": { + "apiawsCostAttribute": { "type": "object", "properties": { - "id": { + "account": { "type": "string" }, - "name": { + "groupId": { "type": "string" - } - } - }, - "coverAlertChannels": { - "type": "object", - "properties": { - "email": { - "type": "array", - "items": { - "$ref": "#/definitions/coverAlertChannel" - } - }, - "slack": { - "type": "array", - "items": { - "$ref": "#/definitions/coverAlertChannel" - } }, - "msteams": { - "type": "array", - "items": { - "$ref": "#/definitions/coverAlertChannel" - } - } - } - }, - "coverAlertCostGroup": { - "type": "object", - "properties": { - "id": { + "productCode": { "type": "string" }, - "name": { + "serviceCode": { "type": "string" - } - } - }, - "coverAlertData": { - "type": "object", - "properties": { - "id": { + }, + "region": { "type": "string" }, - "name": { + "zone": { "type": "string" }, - "granularity": { + "usageType": { "type": "string" }, - "costGroups": { - "type": "array", - "items": { - "$ref": "#/definitions/coverAlertCostGroup" - } + "instanceType": { + "type": "string" }, - "channels": { - "$ref": "#/definitions/coverAlertChannels" + "operation": { + "type": "string" }, - "createdBy": { + "invoiceId": { "type": "string" }, - "createdAt": { + "description": { "type": "string" }, - "updatedAt": { + "resourceId": { "type": "string" }, - "fixedAmount": { - "type": "number", - "format": "float" + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "percentage": { - "type": "number", - "format": "float" + "costCategories": { + "type": "object", + "additionalProperties": { + "type": "string" + } } } }, - "coverAnomalyOptions": { + "apiazureCost": { "type": "object", "properties": { - "threshold": { - "type": "number", - "format": "float" - }, - "isPercentage": { - "type": "boolean" + "account": { + "type": "string", + "description": "The account being queried." }, - "pastDataInMonths": { + "groupId": { "type": "string", - "format": "int64" - } - } - }, - "coverAwsCostForecast": { - "type": "object", - "properties": { + "description": "The group id the account is associated with during the query." + }, "date": { "type": "string", "description": "For daily data, format is `yyyy-mm-dd`; for monthly, `yyyy-mm`." }, - "account": { + "serviceName": { "type": "string", - "description": "The account being queried." + "description": "The service name, such as `Software License`, `Cognosys`, `SendGrid`, `New-Commerce ERP Software License`, etc." }, - "productCode": { + "productName": { "type": "string", - "title": "The product code for an AWS service" + "description": "The product code for an Azure service, such as `Dsv4 Series Windows VM`, `CentOS 7.6`, etc." }, - "cost": { + "region": { + "type": "string", + "description": "The region of lineitem, if applicable." + }, + "chargeType": { + "type": "string", + "description": "The charge type of lineitem, if applicable. Such as `New`, `CycleCharge`, `Prorate fees when cancel`, etc." + }, + "description": { + "type": "string", + "description": "The description of lineitem, if applicable." + }, + "billableQuantity": { "type": "number", "format": "double", - "title": "Forcasted cost based on true cost (calculated)" + "description": "The billable quantity of lineitem, if applicable." }, - "lowerBound": { + "effectiveUnitPrice": { "type": "number", - "format": "double" + "format": "double", + "description": "The effective unit price of lineitem, if applicable." }, - "upperBound": { + "cost": { "type": "number", - "format": "double" + "format": "double", + "description": "The true cost (calculated) for this lineitem." + }, + "baseCurrency": { + "type": "string", + "description": "The base currency for `cost`." + }, + "exchangeRate": { + "type": "number", + "format": "double", + "description": "The exchange rate used to convert `baseCurrency` to `targetCurrency`." }, - "unblendedCost": { + "targetCost": { "type": "number", "format": "double", - "title": "Forcasted cost based on unblended cost" + "description": "Converted `cost`." }, - "unblendedLowerBound": { - "type": "number", - "format": "double" + "targetCurrency": { + "type": "string", + "description": "The currency set by `toCurrency`." }, - "unblendedUpperBound": { - "type": "number", - "format": "double" - } - } - }, - "coverAwsDiscountRecommendations": { - "type": "object", - "properties": { - "riRecommendations": { - "type": "array", - "items": { - "$ref": "#/definitions/coverRiRecommendationResults" - } + "timeInterval": { + "type": "string", + "description": "The time interval of lineitem, if applicable. Format is `yyyy-MM-ddThh:MM:ssZ/yyyy-mm-ddTHH:mm:ssZ` (for example 2020-09-16T00:00:00Z/2021-09-24T00:00:00Z)." }, - "spRecommendations": { - "type": "array", - "items": { - "$ref": "#/definitions/coverSpRecommendationResults" - } - } - } - }, - "coverAwsInputs": { - "type": "object", - "properties": { - "offeringClass": { + "billingType": { "type": "string", - "title": "Supported values are the following: ('STANDARD', 'CONVERTIBLE') -\u003e for RI only" + "description": "The billing type of lineitem, if applicable. Such as `MARKETPLACE`, `UPFRONT`, `Refund`, `Credit` and `OTHERS`." }, - "paymentOption": { + "alternateId": { "type": "string", - "title": "Supported values are the following: ('ALL_UPFRONT', 'PARTIAL_UPFRONT', 'NO_UPFRONT')" + "description": "The alternate ID of lineitem, if applicable." }, - "termInYears": { + "domainName": { "type": "string", - "title": "Supported values are the following:('ONE_YEAR', 'THREE_YEARS')" + "description": "The domain name of lineitem, if applicable." }, - "basedOnThePast": { + "operation": { "type": "string", - "title": "Supported values are the following:('SEVEN_DAYS', 'THIRTY_DAYS', 'SIXTY_DAYS')" + "description": "The operation of lineitem, if applicable. Such as `Cool LRS Write Operations`, `Cool LRS Data Write`, `Standard Data Transfer Out`, etc." + }, + "usageType": { + "type": "string", + "description": "The usage type of lineitem, if applicable. Such as `Standard HDD Managed Disks`, `Tables`, `Blob Storage`, etc." + }, + "instanceType": { + "type": "string", + "description": "The instance type of lineitem, if applicable. Such as `Gateway`, `Standard_B2s`, `Standard_D4s_v3`, etc." + }, + "category": { + "type": "string", + "description": "The category of lineitem, if applicable. Such as `Software License`, `Marketplace`, `RI`, `Other`, etc." + }, + "subscriptionId": { + "type": "string", + "description": "The subscription id." + }, + "entitlementId": { + "type": "string", + "description": "The entitlement id." } } }, - "coverAzureDiscountRecommendations": { - "type": "object" - }, - "coverAzureInputs": { - "type": "object" - }, - "coverBudgetData": { + "apiazureCostAttribute": { "type": "object", "properties": { - "id": { + "customerId": { "type": "string" }, - "startDate": { + "subscriptionId": { "type": "string" }, - "endDate": { + "entitlementId": { "type": "string" }, - "totalBudget": { - "type": "number", - "format": "float" - }, - "period": { - "type": "string", - "format": "int64" - }, - "granularBudget": { - "type": "array", - "items": { - "$ref": "#/definitions/coverGranularBudgetData" - } - }, - "costGroup": { - "$ref": "#/definitions/coverAlertCostGroup" - }, - "alerts": { - "type": "array", - "items": { - "$ref": "#/definitions/apicoverBudgetAlert" - } - }, - "forecastedData": { - "type": "array", - "items": { - "$ref": "#/definitions/coverGranularForecastData" - } - }, - "spendingData": { - "type": "array", - "items": { - "$ref": "#/definitions/coverGranularSpendingData" - } - }, - "expired": { - "type": "boolean" + "groupId": { + "type": "string" }, - "draft": { - "type": "boolean" + "productId": { + "type": "string" }, - "createdBy": { + "productName": { "type": "string" }, - "createdAt": { + "skuId": { "type": "string" }, - "updatedBy": { + "skuName": { "type": "string" }, - "updatedAt": { + "description": { "type": "string" }, - "totalSpend": { - "type": "number", - "format": "float" - } - } - }, - "coverCategory": { - "type": "object", - "properties": { - "display": { + "category": { "type": "string" }, - "query": { + "domainName": { "type": "string" } } }, - "coverChannelData": { + "apicoverAWSRecommendations": { "type": "object", "properties": { "id": { "type": "string" }, - "name": { + "accountId": { "type": "string" }, - "type": { + "accountName": { "type": "string" }, - "webhookUrl": { + "instanceId": { "type": "string" - } - } - }, - "coverCombinations": { - "type": "object", - "properties": { - "awsOptions": { - "$ref": "#/definitions/coverCostGroupAwsOptions", - "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." }, - "azureOptions": { - "$ref": "#/definitions/coverCostGroupAzureOptions", - "description": "Optional. Valid only for the `azure` vendor. Azure-specific options." + "instanceName": { + "type": "string" }, - "gcpOptions": { - "$ref": "#/definitions/coverCostGroupGcpOptions", - "description": "Optional. Valid only for the `gcp` vendor. GCP-specific options." + "service": { + "type": "string" }, - "azurecspOptions": { - "$ref": "#/definitions/coverCostGroupAzureCspOptions", - "description": "Optional. Valid only for the `azurecsp` vendor. AzureCSP-specific options." + "source": { + "type": "string" }, - "customOptions": { - "$ref": "#/definitions/coverCostGroupCustomOptions", - "description": "Optional. For custom selection when creating cost groups.\nThis field allows custom options for specifying criteria for cost group creation." - } - } - }, - "coverCostGroupAwsOptions": { - "type": "object", - "properties": { - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" column filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." + "costGroup": { + "type": "string" }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." - } - }, - "description": "AWS-specific options for CreateCostGroupRequest." - }, - "coverCostGroupAzureCspOptions": { - "type": "object", - "properties": { - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" column filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." + "recommendation": { + "type": "string" + }, + "region": { + "type": "string" + }, + "estsavings": { + "type": "number", + "format": "double" + }, + "estcost": { + "type": "number", + "format": "double" + }, + "estsavingsPercentage": { + "type": "number", + "format": "double" + }, + "resourceArn": { + "type": "string" + }, + "restartNeeded": { + "type": "boolean" + }, + "rollbackPossible": { + "type": "boolean" + }, + "lastUpdatedAt": { + "type": "string" + }, + "recommendationGroup": { + "type": "string" + }, + "category": { + "type": "string" + }, + "purchaseRIRecommendationDetails": { + "$ref": "#/definitions/coverPurchaseRIRecommendationDetails" }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." - } - }, - "description": "AzureCsp-specific options for CreateCostGroupRequest." - }, - "coverCostGroupAzureOptions": { - "type": "object", - "properties": { - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" column filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." + "savingsPlanRecommendationDetails": { + "$ref": "#/definitions/coverSavingsPlanRecommendationDetails" }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + "rightSizingRecommendationDetails": { + "$ref": "#/definitions/coverRightSizingRecommendationDetails" + }, + "upgradeRecommendationDetails": { + "$ref": "#/definitions/coverUpgradeRecommendationDetails" + }, + "migrateRecommendationDetails": { + "$ref": "#/definitions/coverMigrateRecommendationDetails" + }, + "stopInstanceRecommendationDetails": { + "$ref": "#/definitions/coverStopInstanceRecommendationDetails" + }, + "deleteRecommendationDetails": { + "$ref": "#/definitions/coverDeleteRecommendationDetails" + }, + "otherRecommendationDetails": { + "$ref": "#/definitions/coverOtherRecommendationDetails" } - }, - "description": "Azure-specific options for CreateCostGroupRequest." + } }, - "coverCostGroupCustomOptions": { + "apicoverAccount": { "type": "object", "properties": { - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." - }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + "accountId": { + "type": "string" }, - "labelFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Labels on gcp help you organize resources and manage your costs at scale, with the granularity you need.\nFor example, on Compute Engine, you can use labels to group VMs in categories such as production, staging, or development so that you can search for resources that belong to each development stage.\nIf you want to query lineitems with the label `vm-prod: prod`, set to `{\"vm-prod\":\"prod\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + "name": { + "type": "string" }, - "projectLabelFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Project Labels refers to labels that have been assigned to GCP projects. \nFor example, projectId \"mobingi-main\" assigned as \"env:prod\"\nIf you want to query lineitems with the label `env: prod`, set to `{\"env\":\"prod\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + "type": { + "type": "string", + "title": "account, subscription, project" } - }, - "description": "Custom-specific options for CreateCostGroupRequest." + } }, - "coverCostGroupData": { + "apicoverAwsOptions": { "type": "object", "properties": { - "id": { + "AccountName": { "type": "string" }, - "name": { + "PayerId": { "type": "string" }, - "description": { + "RoleArn": { "type": "string" }, - "image": { + "ExternalId": { "type": "string" }, - "icon": { + "StackId": { "type": "string" }, - "colorTheme": { + "StackRegion": { "type": "string" }, - "createdAt": { + "TemplateUrl": { "type": "string" }, - "updatedAt": { + "BucketName": { "type": "string" }, - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/coverMemberUserData" - } + "Prefix": { + "type": "string" }, - "combinations": { - "$ref": "#/definitions/coverCombinations" + "ReportName": { + "type": "string" }, - "createdBy": { - "$ref": "#/definitions/coverMemberUserData" + "registrationStatus": { + "$ref": "#/definitions/coverRegistrationStatus" }, - "eventIndicator": { - "$ref": "#/definitions/coverEventIndicator" + "Status": { + "type": "string" }, - "anomalyOptions": { - "$ref": "#/definitions/coverAnomalyOptions" + "RegistrationMethod": { + "type": "string", + "title": "Valid values for now are: 'console', 'terraform'. default would be 'console'" } } }, - "coverCostGroupGcpOptions": { + "apicoverAzureOptions": { "type": "object", "properties": { - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" column filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `serviceDescriptinon` to return only `Cloud Spanner`, set to `{\"serviceDescription\":\"eq:Cloud Spanner\"}` or `{\"serviceDescription\":\"Cloud Spanner\"}`. You can also use a regular expression like `{\"serviceDescription\":\"re:Cloud Spanner|BigQuery\"}`, which means return all Cloud Spanner or BigQuery lineitems. Or reverse regexp, such as `{\"serviceDescription\":\"!re:^Cloud Spanner$\"}`, which means return all items except `Cloud Spanner`." + "accountName": { + "type": "string" }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Tags on gcp used to conditionally allow or deny policies based on whether a supported resource has a specific tag.\nSuppose you have a set of virtual machines (VMs) running various applications, and you want to distinguish between them based on their roles. You could assign tags like \"app:webserver\" and \"app:database\" to identify which VMs serve as web servers and which ones are database servers.\nIf you want to query lineitems with the tag `app:database`, set to `{\"app\":\"database\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + "azureCustomerId": { + "type": "string" }, - "labelFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Labels on gcp help you organize resources and manage your costs at scale, with the granularity you need.\nFor example, on Compute Engine, you can use labels to group VMs in categories such as production, staging, or development so that you can search for resources that belong to each development stage.\nIf you want to query lineitems with the label `vm-prod: prod`, set to `{\"vm-prod\":\"prod\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + "azurePlanId": { + "type": "string" }, - "projectLabelFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCostGroupOptionsFilters" - }, - "description": "Project Labels refers to labels that have been assigned to GCP projects. \nFor example, projectId \"mobingi-main\" assigned as \"env:prod\"\nIf you want to query lineitems with the label `env: prod`, set to `{\"env\":\"prod\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + "serviceAcct": { + "type": "string" + }, + "partnerAcct": { + "type": "string" + }, + "companyId": { + "type": "string" + }, + "payerId": { + "type": "string" } - }, - "description": "GCP-specific options for CreateCostGroupRequest." + } }, - "coverCostGroupOptionsFilters": { + "apicoverBudgetAlert": { "type": "object", "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" + "threshold": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverThreshold" } + }, + "channels": { + "$ref": "#/definitions/coverAlertChannels" } } }, - "coverCurrentEBSDetails": { + "apicoverCostCalculation": { "type": "object", "properties": { - "attachmentState": { - "type": "string" - }, - "iops": { - "type": "number", - "format": "double" - }, - "throughput": { + "estCostAfterDiscount": { "type": "number", "format": "double" }, - "sizeInGb": { + "estCostBeforeDiscount": { "type": "number", "format": "double" }, - "costCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" - } - } - }, - "coverCurrentEC2Details": { - "type": "object", - "properties": { - "instanceType": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "cpuUtilization": { + "otherDiscount": { "type": "number", "format": "double" }, - "memoryUtilization": { + "savingsPlanDiscount": { "type": "number", "format": "double" }, - "diskUtilization": { + "estNetUnusedAmortizedCommitments": { "type": "number", "format": "double" }, - "networkCapacity": { - "type": "string" - }, - "monthlyCost": { + "reservedInstanceDiscount": { "type": "number", "format": "double" }, - "eC2CpuUtilization": { - "type": "array", - "items": { - "$ref": "#/definitions/apicoverUtilizationData" - } - }, - "eC2DiskUtilization": { - "type": "array", - "items": { - "$ref": "#/definitions/apicoverUtilizationData" - } - }, - "eC2MemoryUtilization": { - "type": "array", - "items": { - "$ref": "#/definitions/apicoverUtilizationData" - } - }, - "networkTrafficData": { + "usageTypes": { "type": "array", - "items": { - "$ref": "#/definitions/apicoverUtilizationData" - } - }, - "otherDetails": { - "$ref": "#/definitions/CurrentEC2DetailsOtherDetails" - }, - "costCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" + "items": { + "type": "object", + "$ref": "#/definitions/apicoverUsageTypes" + } } } }, - "coverDeleteRecommendationDetails": { + "apicoverEBSDetails": { "type": "object", "properties": { - "ec2Details": { - "$ref": "#/definitions/coverCurrentEC2Details" - }, - "ebsVolumeDetails": { - "$ref": "#/definitions/coverEbsVolumeDetails" - }, - "elasticIpAddressDetails": { - "$ref": "#/definitions/coverElasticIpAddressDetails" + "currentEBSDetails": { + "$ref": "#/definitions/coverCurrentEBSDetails" }, - "idleRdsDetails": { - "$ref": "#/definitions/coverIdleRdsDetails" + "upgradeEBSDetails": { + "$ref": "#/definitions/coverEBSRecommendationDetails" + } + } + }, + "apicoverEC2Details": { + "type": "object", + "properties": { + "instanceType": { + "type": "string" }, - "idleLoadBalancerDetails": { - "$ref": "#/definitions/coverIdleLoadBalancerDetails" + "tenancy": { + "type": "string" }, - "exclusionStatus": { + "family": { "type": "string" }, - "status": { + "platform": { "type": "string" } } }, - "coverEBSRecommendationDetails": { + "apicoverMemoryDBDetails": { "type": "object", "properties": { - "attachmentState": { + "family": { "type": "string" }, - "iops": { - "type": "number", - "format": "double" - }, - "throughput": { - "type": "number", - "format": "double" - }, - "sizeInGb": { - "type": "number", - "format": "double" - }, - "EstcostCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" + "nodeType": { + "type": "string" } } }, - "coverEC2ModifyRecommendationDetails": { + "apicoverRDSDetails": { "type": "object", "properties": { - "instanceType": { + "dbEdition": { "type": "string" }, - "os": { + "dbEngine": { "type": "string" }, - "region": { + "deploymentOptions": { "type": "string" }, - "cpuUtilization": { - "type": "number", - "format": "double" - }, - "memoryUtilization": { - "type": "number", - "format": "double" - }, - "diskUtilization": { - "type": "number", - "format": "double" + "family": { + "type": "string" }, - "networkCapacity": { + "instanceType": { "type": "string" }, - "costCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" + "licenseModel": { + "type": "string" } } }, - "coverEC2Options": { + "apicoverRedshiftDetails": { "type": "object", "properties": { - "instanceType": { - "type": "string" + "currentGeneration": { + "type": "boolean" }, - "tenancy": { + "nodeType": { "type": "string" }, "family": { "type": "string" - }, - "platform": { - "type": "string" } } }, - "coverEC2UpgadeDetails": { + "apicoverTagData": { "type": "object", "properties": { - "instanceType": { + "tagKey": { "type": "string" }, + "tagValue": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "apicoverUsageTypes": { + "type": "object", + "properties": { "operation": { "type": "string" }, @@ -19026,1508 +18880,1793 @@ } } }, - "coverEC2rightSizingDetails": { + "apicoverUtilizationData": { "type": "object", "properties": { - "currentEC2Details": { - "$ref": "#/definitions/coverCurrentEC2Details" + "date": { + "type": "string" }, - "eC2ModifyRecommendationDetails": { - "$ref": "#/definitions/coverEC2ModifyRecommendationDetails" + "value": { + "type": "number", + "format": "float" } } }, - "coverESDetails": { + "apigcpCost": { "type": "object", "properties": { - "currentGeneration": { - "type": "boolean" + "account": { + "type": "string", + "title": "account data" }, - "instanceClass": { - "type": "string" + "groupId": { + "type": "string", + "description": "The group id the account is associated with during the query." }, - "instanceSize": { - "type": "string" + "date": { + "type": "string", + "description": "For daily data, format is `yyyy-mm-dd`; for monthly, `yyyy-mm`." + }, + "invoiceMonth": { + "type": "string", + "description": "The invoice.month of the lineitem, if applicable." + }, + "service": { + "type": "string", + "description": "The service.Description of the lineitem, if applicable." + }, + "sku": { + "type": "string", + "description": "The sku.Description of the lineitem, if applicable." + }, + "region": { + "type": "string", + "description": "The location.region of the lineitem, if applicable." + }, + "zone": { + "type": "string", + "description": "The location.zone of the lineitem, if applicable." + }, + "creditsType": { + "type": "string", + "description": "The credits.type of the lineitem, if applicable." + }, + "creditsName": { + "type": "string", + "description": "The credits.name of the lineitem, if applicable." + }, + "usageUnit": { + "type": "string", + "description": "The usage.pricing_unit of the lineitem, if applicable." + }, + "usageAmount": { + "type": "number", + "format": "double", + "description": "The usage.amount_in_pricing_units of the lineitem, if applicable." + }, + "baseCurrency": { + "type": "string", + "description": "The currency of the lineitem, if applicable." + }, + "cost": { + "type": "number", + "format": "double", + "description": "The cost of the lineitem, if applicable." } - } + }, + "description": "see gcp billing data schema details:[https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables]", + "title": "Cost for Api Response" }, - "coverESOptions": { + "apirippleAccessGroup": { "type": "object", "properties": { - "instanceClass": { + "id": { "type": "string" }, - "instanceSize": { + "name": { "type": "string" + }, + "description": { + "type": "string" + }, + "billingGroups": { + "type": "array", + "items": { + "type": "string" + } } - } + }, + "description": "AccessGroup resource definition." }, - "coverEbsVolumeDetails": { + "apiripplev1InvoiceServiceDiscounts": { "type": "object", "properties": { - "volumeId": { - "type": "string" + "id": { + "type": "string", + "description": "The invoice service discounts id." }, - "volumeSize": { + "name": { "type": "string", - "format": "int64" + "description": "The invoice service discount name.\nmust be 1-60 characters long." }, - "volumeType": { - "type": "string" + "description": { + "type": "string", + "description": "The invoice service discount description.\nMaximum 150 characters long." }, - "monthlyStorageCost": { - "type": "number", - "format": "double" + "setting": { + "$ref": "#/definitions/v1InvoiceServiceDiscountsSetting", + "description": "The invoice service discount setting." + }, + "created": { + "type": "string", + "description": "Timestamp associated with the created.", + "readOnly": true + }, + "updated": { + "type": "string", + "description": "Timestamp associated with the updated.", + "readOnly": true } - } + }, + "description": "InvoiceServiceDiscounts resource definition." }, - "coverEcsRightSizingRecommendationDetails": { + "apiwaveBudget": { "type": "object", "properties": { - "EcsCurrentConfiguration": { - "$ref": "#/definitions/coverResourceDetails" + "id": { + "type": "string", + "title": "budget id\n`previousDay` / `daily` / `monthly`" }, - "EcsRecommendedConfiguration": { - "$ref": "#/definitions/coverResourceDetails" + "value": { + "type": "number", + "format": "double", + "title": "budget value" + }, + "enabled": { + "type": "boolean", + "title": "budget setting enable/disable" } - } + }, + "description": "Budget resource definition." }, - "coverElasticCacheDetails": { + "apiwaveBudgetAlert": { "type": "object", "properties": { - "currentGeneration": { - "type": "boolean" + "id": { + "type": "string", + "description": "account id.", + "readOnly": true }, - "nodeType": { - "type": "string" + "notification": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiwaveNotification" + }, + "description": "notification setting." }, - "family": { - "type": "string" + "budget": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiwaveBudget" + }, + "description": "budget setting." } - } + }, + "description": "Budget resource definition." }, - "coverElasticCacheOptions": { + "apiwaveNotification": { "type": "object", "properties": { - "family": { - "type": "string" + "id": { + "type": "string", + "title": "notification id\n`email` / `slack`" }, - "nodeType": { - "type": "string" + "destination": { + "type": "string", + "title": "destination email address /slack webhook url" }, - "productDescription": { - "type": "string" + "enabled": { + "type": "boolean", + "title": "notification enable/disable" } - } + }, + "description": "Notification resource definition." }, - "coverElasticIpAddressDetails": { + "awsAWSResourceDetailsEBSDetails": { "type": "object", "properties": { - "ipAddress": { - "type": "string" - }, - "service": { - "type": "string" + "volumeDetails": { + "$ref": "#/definitions/EBSDetailsVolumeDetails" } } }, - "coverEstOutcomeFromPurchaseRIRecommendation": { + "awsAWSResourceDetailsEC2Details": { "type": "object", "properties": { - "aveUtilization": { - "type": "number", - "format": "double" - }, - "aveNormalizedUnitsUsedPerHour": { - "type": "number", - "format": "double" - }, - "aveNumberofInstanceUsedPerHour": { - "type": "number", - "format": "double" - }, - "breakEvenInMonths": { - "type": "number", - "format": "double" - }, - "monthlyOnDemandCost": { - "type": "number", - "format": "double" - }, - "monthlyRICost": { - "type": "number", - "format": "double" - }, - "monthlySavings": { - "type": "number", - "format": "double" - }, - "monthlySavingsPercentage": { - "type": "number", - "format": "double" - }, - "maxNormalizedUnitsUsedPerHour": { - "type": "number", - "format": "double" - }, - "maxNumberOfInstanceUsedPerHour": { - "type": "number", - "format": "double" - }, - "minNormalizedUnitsUsedPerHour": { - "type": "number", - "format": "double" + "instance": { + "$ref": "#/definitions/AWSResourceDetailsEC2DetailsInstanceDetails" }, - "minNumberOfInstanceUsedPerHour": { - "type": "number", - "format": "double" + "riSpecsDetails": { + "$ref": "#/definitions/EC2DetailsRISpecsDetails" } } }, - "coverEstOutcomeFromSPRecommendation": { + "awsAWSResourceDetailsMemoryDBDetails": { "type": "object", "properties": { - "aveCoverage": { - "type": "number", - "format": "double" - }, - "aveUtilization": { - "type": "number", - "format": "double" - }, - "monthlySavingsAmount": { - "type": "number", - "format": "double" - }, - "onDemandCost": { - "type": "number", - "format": "double" - }, - "roi": { - "type": "number", - "format": "double" - }, - "savingsPlanCost": { - "type": "number", - "format": "double" - }, - "savingsPercentage": { - "type": "number", - "format": "double" + "node": { + "$ref": "#/definitions/AWSResourceDetailsMemoryDBDetailsNodeDetails" } } }, - "coverEventIndicator": { + "awsAWSResourceDetailsRDSDetails": { "type": "object", "properties": { - "anomaly": { - "type": "boolean", - "title": "Anomaly is supported for now" - }, - "visualBuilder": { - "type": "boolean", - "title": "Temporary indicator if cost group was created via new visual builder" + "dbInstance": { + "$ref": "#/definitions/RDSDetailsDBInstanceDetails" } } }, - "coverExecutedRecommendationDetails": { + "awsAWSResourceDetailsRedshiftDetails": { "type": "object", "properties": { - "recommendationId": { - "type": "string" - }, - "recommendaton": { - "type": "string" - }, - "target": { - "type": "string" - }, - "accountName": { - "type": "string" - }, - "service": { - "type": "string" - }, - "completedDate": { - "type": "string" - }, - "estSavings": { - "type": "number", - "format": "double" - }, - "estCost": { - "type": "number", - "format": "double" - }, - "vendor": { - "type": "string" - }, - "category": { - "type": "string" - }, - "dateAdded": { - "type": "string" - }, - "personInCharge": { - "type": "string" + "cluster": { + "$ref": "#/definitions/RedshiftDetailsClusterDetails" }, - "optimizationStatus": { - "type": "string" + "node": { + "$ref": "#/definitions/AWSResourceDetailsRedshiftDetailsNodeDetails" } } }, - "coverExecutiveSummary": { + "awsAdjustmentsTypeList": { "type": "object", "properties": { - "costUsage": { - "type": "number", - "format": "double", - "title": "The total cost usage of the current period" - }, - "previousPeriodCostUsage": { - "type": "number", - "format": "double", - "title": "The total cost usage of the previous period" - }, - "status": { - "type": "string", - "title": "The status of the cost usage compared to the previous period. \"increased\", \"decreased\"" - }, - "percentageChanged": { - "type": "number", - "format": "double", - "title": "The percentage changed compared to the previous period" - }, - "averageMonthlyChanged": { - "type": "number", - "format": "double", - "title": "The average monthly changed" - }, - "differenceFromPreviousPeriod": { - "type": "number", - "format": "double" + "types": { + "type": "array", + "items": { + "type": "string" + } } } }, - "coverFavorites": { + "awsAwsCostBreakeven": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "icon": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "updatedAt": { + "arn": { "type": "string" }, - "colorTheme": { + "startDate": { "type": "string" }, - "reportType": { + "endDate": { "type": "string" }, - "reportPeriod": { + "breakEvenPoint": { "type": "string" + }, + "upperRatio": { + "type": "number", + "format": "double" + }, + "lowerRatio": { + "type": "number", + "format": "double" + }, + "chartData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiawsChartData" + } } } }, - "coverGcpDiscountRecommendations": { - "type": "object" - }, - "coverGcpInputs": { - "type": "object" - }, - "coverGcpOptions": { + "awsAwsCostReductions": { "type": "object", "properties": { - "billingOption": { - "$ref": "#/definitions/GcpOptionsBillingOption" + "summary": { + "$ref": "#/definitions/awsCostReductionSummary" }, - "projectOption": { - "$ref": "#/definitions/GcpOptionsProjectOption" + "riCostReductions": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/awsRiCostReduction" + } }, - "accountName": { - "type": "string", - "title": "We'll keep this to avoid crash in production. \nWe will remove this after this changes released to prod" + "spCostReductions": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/awsSpCostReduction" + } + } + } + }, + "awsAwsRecommendations": { + "type": "object", + "properties": { + "summary": { + "$ref": "#/definitions/awsReservationRecommendationSummary" }, - "projectId": { - "type": "string", - "title": "where dataset is stored" + "riRecommendations": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/awsRiRecommendation" + } }, - "datasetId": { - "type": "string" + "spRecommendations": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/awsSpRecommendation" + } }, - "datasetRegion": { - "type": "string" + "estimatedCoverage": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/awsReservationEstimatedCoverage" + } } } }, - "coverGranularBudgetData": { + "awsCalculatorConfig": { "type": "object", "properties": { - "date": { - "type": "string" + "adjustmentsTypeList": { + "$ref": "#/definitions/awsAdjustmentsTypeList", + "description": "CUR lineitem types included in Ripple's 'Adjusting Entries'." }, - "budget": { - "type": "number", - "format": "float" + "excludedServicesFromUsage": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/awsExcludedServiceFromUsage" + }, + "description": "List of services that are of type 'Usage' in CUR that are excluded,\noptionally converted to Adjustments." } - } + }, + "description": "AWS's calculation engine configuration(s)." }, - "coverGranularForecastData": { + "awsCostExplorerRecommendations": { "type": "object", "properties": { - "date": { - "type": "string" + "ec2Rightsize": { + "$ref": "#/definitions/CostExplorerRecommendationsEC2Rightsize" }, - "mid": { - "type": "number", - "format": "float" + "discountPlans": { + "$ref": "#/definitions/CostExplorerRecommendationsDiscountPlans" }, - "upperBound": { - "type": "number", - "format": "float" + "terminateEc2": { + "$ref": "#/definitions/CostExplorerRecommendationsTerminateEC2" + } + } + }, + "awsCostOptimizationHubRecommendations": { + "type": "object", + "properties": { + "currentDetails": { + "$ref": "#/definitions/awsCostOptimizationHubRecommendationsDetails" }, - "lowerBound": { - "type": "number", - "format": "float" + "recommendationDetails": { + "$ref": "#/definitions/awsCostOptimizationHubRecommendationsDetails" } } }, - "coverGranularSpendingData": { + "awsCostOptimizationHubRecommendationsDetails": { "type": "object", "properties": { - "date": { - "type": "string" + "costCalculation": { + "$ref": "#/definitions/CostOptimizationHubRecommendationsDetailsCostCalculation" }, - "value": { - "type": "number", - "format": "float" + "ec2Details": { + "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" + }, + "rdsDetails": { + "$ref": "#/definitions/awsAWSResourceDetailsRDSDetails" + }, + "ebsDetails": { + "$ref": "#/definitions/awsAWSResourceDetailsEBSDetails" + }, + "ec2AutoScalingGroupDetails": { + "$ref": "#/definitions/AWSResourceDetailsEC2AutoScalingGroupDetails" + }, + "ecsDetails": { + "$ref": "#/definitions/AWSResourceDetailsECSDetails" + }, + "lambdaDetails": { + "$ref": "#/definitions/AWSResourceDetailsLambdaDetails" } } }, - "coverHighErrorRatesLambda": { + "awsCostReductionSummary": { "type": "object", "properties": { - "avgDailyErrorRates": { + "totalOnDemandCost": { "type": "number", "format": "double" }, - "avgDailyInvokes": { + "totalEffectiveCost": { "type": "number", "format": "double" }, - "currentDayErrorRates": { + "totalSavings": { "type": "number", "format": "double" }, - "currentDayInvokes": { + "totalRiOnDemandCost": { "type": "number", "format": "double" }, - "dateForMaxErrorRates": { - "type": "string" + "totalRiEffectiveCost": { + "type": "number", + "format": "double" }, - "functionArn": { - "type": "string" + "totalRiSavings": { + "type": "number", + "format": "double" }, - "lostDailyComputeCost": { + "totalSpOnDemandCost": { "type": "number", "format": "double" }, - "maxDailyErrorRates": { + "totalSpEffectiveCost": { + "type": "number", + "format": "double" + }, + "totalSpSavings": { "type": "number", "format": "double" } } }, - "coverIdleLoadBalancerDetails": { + "awsExcludedServiceFromUsage": { "type": "object", "properties": { - "loadBalancerName": { - "type": "string" + "managementAccount": { + "type": "string", + "description": "The management account (formerly master account) the `productCode` belongs to." }, - "reason": { - "type": "string" + "productCode": { + "type": "string", + "description": "The excluded product code." }, - "service": { + "convertedToAdjustments": { + "type": "boolean", + "description": "If the product code is converted to Adjustments or not." + } + } + }, + "awsMetricData": { + "type": "object", + "properties": { + "metrics": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/MetricDataMetrics" + } + }, + "maxMetricInPercentage": { + "type": "number", + "format": "double" + }, + "metricCapacity": { "type": "string" } } }, - "coverIdleRdsDetails": { + "awsReservationEstimatedCoverage": { "type": "object", "properties": { - "dbInstanceName": { + "accountId": { "type": "string" }, - "daysSinceLastConnection": { + "productCode": { "type": "string" }, - "instanceType": { + "instanceFamily": { "type": "string" }, - "multiAZ": { - "type": "string" + "riUsageCoverage": { + "type": "number", + "format": "double" + }, + "ec2SpUsageCoverage": { + "type": "number", + "format": "double" + }, + "computeSpOnDemandCost": { + "type": "number", + "format": "double" + }, + "computeSpDiscountedCost": { + "type": "number", + "format": "double" + } + } + }, + "awsReservationRecommendationSummary": { + "type": "object", + "properties": { + "totalMonthlyOnDemandCost": { + "type": "number", + "format": "double" + }, + "totalEstimatedMonthlySavings": { + "type": "number", + "format": "double" + }, + "totalMonthlyDiscountedCost": { + "type": "number", + "format": "double" + }, + "reductionRate": { + "type": "number", + "format": "double" }, - "storageProvisioned": { + "totalUpfrontCost": { "type": "number", "format": "double" - } - } - }, - "coverLambdaRightSizingRecommendationDetails": { - "type": "object", - "properties": { - "lambdaCurrentConfiguration": { - "$ref": "#/definitions/coverResourceDetails" }, - "lambdaRecommendedConfiguration": { - "$ref": "#/definitions/coverResourceDetails" + "totalRecurringMonthlyCost": { + "type": "number", + "format": "double" } } }, - "coverLayoutRequests": { + "awsRiCostReduction": { "type": "object", "properties": { "id": { "type": "string" }, - "name": { + "arn": { "type": "string" }, - "url": { + "customerId": { "type": "string" }, - "params": { - "type": "object" - }, - "hash": { + "customerName": { "type": "string" - } - } - }, - "coverMemberCostGroup": { - "type": "object", - "properties": { - "id": { + }, + "billingInternalId": { "type": "string" }, - "name": { + "billingGroupId": { "type": "string" }, - "description": { + "billingGroupName": { "type": "string" }, - "image": { + "destCustomerId": { "type": "string" }, - "icon": { + "start": { "type": "string" }, - "colorTheme": { + "end": { "type": "string" }, - "createdAt": { + "service": { "type": "string" }, - "updatedAt": { + "instanceType": { "type": "string" - } - } - }, - "coverMemberUserData": { - "type": "object", - "properties": { - "id": { + }, + "modificationStatus": { "type": "string" }, - "name": { + "number": { + "type": "string", + "format": "int64" + }, + "offerClass": { "type": "string" }, - "email": { + "deploymentOption": { "type": "string" }, - "avatar": { + "paidBy": { "type": "string" }, - "icon": { + "paymentOption": { "type": "string" }, - "colorTheme": { + "platform": { "type": "string" }, - "initial": { + "region": { "type": "string" }, - "activated": { + "remove": { "type": "boolean" }, - "isAdmin": { - "type": "boolean" + "scope": { + "type": "string" }, - "attributes": { - "type": "array", - "items": { - "type": "string" - } + "tenancy": { + "type": "string" }, - "locale": { + "termLength": { "type": "string" }, - "timeZone": { + "usageType": { "type": "string" }, - "registered": { + "vendor": { "type": "string" }, - "ssoEnabled": { - "type": "boolean" + "zone": { + "type": "string" }, - "mfaEnabled": { + "disabled": { "type": "boolean" }, - "appTheme": { - "type": "string" + "normalizationFactor": { + "type": "number", + "format": "double" }, - "mainView": { - "type": "string" + "unblendedRate": { + "type": "number", + "format": "double" }, - "costGroups": { - "type": "array", - "items": { - "$ref": "#/definitions/coverMemberCostGroup" - } + "upfrontValue": { + "type": "number", + "format": "double" }, - "updatedAt": { - "type": "string" - } - } - }, - "coverMigrateEC2Details": { - "type": "object", - "properties": { - "eC2CurrentDetails": { - "$ref": "#/definitions/coverEC2UpgadeDetails" + "ondemandCost": { + "type": "number", + "format": "double" }, - "ugradeEC2RecommendationDetails": { - "$ref": "#/definitions/coverEC2UpgadeDetails" + "effectiveCost": { + "type": "number", + "format": "double" }, - "currentCostCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" + "savings": { + "type": "number", + "format": "double" }, - "estCostCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" - } - } - }, - "coverMigrateRDSDetails": { - "type": "object", - "properties": { - "rdsDbInstance": { - "$ref": "#/definitions/coverRDSDBInstance" + "breakEven": { + "type": "string", + "title": "for break even point date" } } }, - "coverMigrateRecommendationDetails": { + "awsRiRecommendation": { "type": "object", "properties": { - "migrateEC2Details": { - "$ref": "#/definitions/coverMigrateEC2Details" + "accountId": { + "type": "string" }, - "migrateRDSDetails": { - "$ref": "#/definitions/coverMigrateRDSDetails" + "productCode": { + "type": "string" }, - "estimatedMonthlyCost": { + "location": { + "type": "string" + }, + "instanceType": { + "type": "string" + }, + "quantity": { + "type": "string", + "format": "int64" + }, + "normalizedUnit": { "type": "number", "format": "double" }, - "estimatedMonthlySavings": { + "operatingSystem": { + "type": "string", + "title": "for amazon ec2 only" + }, + "preInstalledSW": { + "type": "string" + }, + "tenancy": { + "type": "string" + }, + "dbEngine": { + "type": "string", + "title": "for amazon rds only" + }, + "deploymentOption": { + "type": "string" + }, + "ondemandCost": { "type": "number", "format": "double" - } - } - }, - "coverOptimizationRecommendationSummary": { - "type": "object", - "properties": { - "potentialSavings": { - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "title": "Potential savings per month" }, - "action": { - "type": "array", - "items": { - "type": "string" - }, - "title": "The recommended action to perform to achieve potential savings" - } - } - }, - "coverOtherRecommendationDetails": { - "type": "object", - "properties": { - "highErrorRatesLambda": { - "$ref": "#/definitions/coverHighErrorRatesLambda" + "ondemandrate": { + "type": "number", + "format": "double" }, - "s3IncompleteMultiPartUploadAbortConfiguration": { - "$ref": "#/definitions/coverS3IncompleteMultiPartUploadAbortConfiguration" + "riRate": { + "type": "number", + "format": "double" + }, + "upfrontCost": { + "type": "number", + "format": "double" + }, + "discountedCost": { + "type": "number", + "format": "double" + }, + "monthlyAmortizedCost": { + "type": "number", + "format": "double" + }, + "monthlyRecurringCost": { + "type": "number", + "format": "double" + }, + "yearlyDiscountedCost": { + "type": "number", + "format": "double" + }, + "reductionRate": { + "type": "number", + "format": "double" + }, + "estimatedMonthlySavings": { + "type": "number", + "format": "double" }, - "status": { - "type": "string" + "daysBeforeBreakEven": { + "type": "number", + "format": "double" } } }, - "coverPurchaseRIRecommendationDetails": { + "awsSpCostReduction": { "type": "object", "properties": { - "ec2Options": { - "$ref": "#/definitions/apicoverEC2Details" + "id": { + "type": "string" }, - "elasticCacheOptions": { - "$ref": "#/definitions/coverElasticCacheDetails" + "arn": { + "type": "string" }, - "esOptions": { - "$ref": "#/definitions/coverESDetails" + "customerId": { + "type": "string" }, - "rdsOptions": { - "$ref": "#/definitions/apicoverRDSDetails" + "customerName": { + "type": "string" }, - "redshiftOptions": { - "$ref": "#/definitions/apicoverRedshiftDetails" + "billingGroupId": { + "type": "string" }, - "memoryDbOptions": { - "$ref": "#/definitions/apicoverMemoryDBDetails" + "billingGroupName": { + "type": "string" }, - "recommendedNormalizedUnits": { - "type": "integer", - "format": "int32" + "currency": { + "type": "string" }, - "recommendedNumberOfInstanceToPurchase": { - "type": "integer", - "format": "int32" + "service": { + "type": "string" }, - "paymentOption": { + "savingsPlan": { "type": "string" }, - "offeringClass": { + "start": { "type": "string" }, - "term": { + "end": { "type": "string" }, - "upfrontCost": { - "type": "number", - "format": "double" + "region": { + "type": "string" }, - "instanceType": { + "instanceFamily": { "type": "string" }, - "platform": { + "termLength": { "type": "string" }, - "region": { + "paymentOption": { "type": "string" }, - "sizeFlexEligible": { - "type": "boolean" + "commitment": { + "type": "number", + "format": "double" }, - "tenancy": { - "type": "string" + "upfrontFee": { + "type": "number", + "format": "double" }, - "currentGeneration": { - "type": "boolean" + "recurringFee": { + "type": "number", + "format": "double" }, - "estOutcomeFromPurchaseRIRecommendation": { - "$ref": "#/definitions/coverEstOutcomeFromPurchaseRIRecommendation" - } - } - }, - "coverRDSDBInstance": { - "type": "object", - "properties": { - "currentDetails": { - "$ref": "#/definitions/coverRDSDBInstanceDetails" + "ondemandCost": { + "type": "number", + "format": "double" }, - "recommendationDetails": { - "$ref": "#/definitions/coverRDSDBInstanceDetails" + "effectiveCost": { + "type": "number", + "format": "double" }, - "cpuUtilization": { - "type": "array", - "items": { - "$ref": "#/definitions/apicoverUtilizationData" - } + "savings": { + "type": "number", + "format": "double" + }, + "breakEven": { + "type": "string", + "title": "for break even point date" } } }, - "coverRDSDBInstanceDetails": { + "awsSpRecommendation": { "type": "object", "properties": { - "instanceClass": { + "accountId": { "type": "string" }, - "costCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" - } - } - }, - "coverRDSDBInstanceStorage": { - "type": "object", - "properties": { - "currentDetails": { - "$ref": "#/definitions/coverRDSDBInstanceStorageDetails" + "spProductFamily": { + "type": "string" }, - "recommendationDetails": { - "$ref": "#/definitions/coverRDSDBInstanceStorageDetails" - } - } - }, - "coverRDSDBInstanceStorageDetails": { - "type": "object", - "properties": { - "allocatedStorageInGb": { + "location": { + "type": "string" + }, + "instanceFamily": { + "type": "string" + }, + "ondemandCost": { "type": "number", "format": "double" }, - "iops": { + "commitment": { "type": "number", "format": "double" }, - "storageThroughput": { + "normalizedUnit": { "type": "number", "format": "double" }, - "storageType": { - "type": "string" + "discountedCost": { + "type": "number", + "format": "double" }, - "costCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" + "monthlyDiscountedCost": { + "type": "number", + "format": "double" + }, + "yearlyDiscountedCost": { + "type": "number", + "format": "double" + }, + "estimatedMonthlySavings": { + "type": "number", + "format": "double" + }, + "reductionRate": { + "type": "number", + "format": "double" + }, + "daysBeforeBreakEven": { + "type": "number", + "format": "double" } } }, - "coverRDSOptions": { + "awsTrustedAdvisorRecommendations": { "type": "object", "properties": { - "dbEdition": { + "severityStatus": { "type": "string" }, - "dbEngine": { + "recommendationArn": { "type": "string" }, - "deploymentOptions": { + "exclusionStatus": { "type": "string" }, - "family": { - "type": "string" + "lowUtilizationEc2Instances": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsLowUtilizationEC2Instances" }, - "instanceType": { - "type": "string" + "rdsIdleDbInstances": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsRDSIdleDBInstances" }, - "licenseModel": { - "type": "string" + "s3IncompleteMPU": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsS3IncompleteMPU" + }, + "lambdaHighErrorRates": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsLambdaHighErrorRates" + }, + "underutilizedEBSVolume": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsUnderutilizedEBSVolume" + }, + "unassociatedEIP": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsUnassociatedEIP" + }, + "idleLoadBalancer": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsIdleLoadBalancer" + }, + "ec2InstancesStopped": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsAmazonEC2InstanceStopped" + }, + "ec2RILeaseExpiration": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsEC2RILeaseExpiration" + }, + "comprehendUnderutilizedEndpoints": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsComprehendUnderutilizedEndpoints" + }, + "underutilizedRedshiftCluster": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsUnderutilizedRedshiftCluster" + }, + "lambdaWithExcessiveTimeouts": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsLambdaWithExcessiveTimeouts" + }, + "awsWellArchitectedHighRiskIssues": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsAWSWellArchitectedHighRiskIssues" + }, + "commonDetails": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsCommonDetails" + }, + "inactiveNatGateways": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsInactiveNATGateways" + }, + "networkFirewallEndpointAZIndependence": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsNetworkFirewallEndpointAZIndependence" + }, + "inactiveNetworkFirewall": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsInactiveAWSNetworkFirewall" + }, + "ec2OverprovisionedMSSqlServer": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsEC2OverProvisionedForMSSqlServer" + }, + "ec2ConsolidationMSSqlServer": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsEC2ConsolidationForMSSqlServer" + }, + "route53LatencyResourceRecordSets": { + "$ref": "#/definitions/TrustedAdvisorRecommendationsRoute53LatencyResourceRecordsSets" } } }, - "coverRDSRightsizingDetails": { + "azurecspAzureCSPRecommendations": { + "type": "object" + }, + "billingv1AccessGroup": { "type": "object", "properties": { - "rdsDbInstance": { - "$ref": "#/definitions/coverRDSDBInstance" + "accessGroupId": { + "type": "string", + "description": "The ID of the access group." }, - "rdsDbInstanceStorage": { - "$ref": "#/definitions/coverRDSDBInstanceStorage" + "accessGroupName": { + "type": "string", + "description": "The name of the access group." + }, + "accessGroupDescription": { + "type": "string", + "description": "A description of the access group." + }, + "billingGroups": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1BillingGroup" + }, + "description": "A list of billing groups contained in the access group." } - } + }, + "description": "Defines the fields associated with a Wave access group." }, - "coverRDSUpgradeDetails": { + "billingv1AwsOptions": { "type": "object", "properties": { - "rdsDbInstance": { - "$ref": "#/definitions/coverRDSDBInstance" + "useProFormaCur": { + "type": "boolean" }, - "rdsDbInstanceStorage": { - "$ref": "#/definitions/coverRDSDBInstanceStorage" + "payerId": { + "type": "string", + "description": "Must not be empty if useProFormaCur is true." } } }, - "coverRecommendationDetail": { + "billingv1TagData": { "type": "object", "properties": { - "recommendation": { + "customerId": { "type": "string" }, - "recommendedResourceType": { + "accountId": { "type": "string" }, - "estimatedCost": { - "type": "number", - "format": "double" - }, - "estimatedSavings": { - "type": "number", - "format": "double" - }, - "region": { - "type": "string" - } - } - }, - "coverRedshiftOptions": { - "type": "object", - "properties": { - "family": { + "customerName": { "type": "string" }, - "nodeType": { - "type": "string" + "tags": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Tags" + } } - } + }, + "title": "Response for tag request" }, - "coverRegistrationStatus": { + "blueapiapiAccount": { "type": "object", "properties": { - "apiAccess": { - "type": "boolean" - }, - "cloudwatchStreaming": { - "type": "boolean" + "vendor": { + "type": "string", + "title": "The vendor" }, - "curExport": { - "type": "boolean" + "id": { + "type": "string", + "description": "The account id." }, - "payer": { - "type": "boolean" + "name": { + "type": "string", + "description": "The account name." }, - "stackSet": { - "type": "boolean" + "orgId": { + "type": "string", + "description": "The parent organization id." }, - "transferAccount": { - "type": "boolean" + "billingInternalId": { + "type": "string", + "description": "The parent billing internal id." }, - "isDataAvailable": { - "type": "boolean" + "metadata": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiKeyValue" + }, + "description": "The attributes (key/value pair) of the account." } } }, - "coverResourceData": { + "blueapiapiBudget": { "type": "object", "properties": { - "vendor": { - "type": "string" - }, - "accountId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "region": { + "id": { "type": "string" }, - "resourceType": { - "type": "string" + "fiscalYear": { + "type": "string", + "title": "Format: yyyy" }, - "recommendationDetail": { + "monthlyBudget": { "type": "array", "items": { - "$ref": "#/definitions/coverRecommendationDetail" + "type": "object", + "$ref": "#/definitions/apiMonthlyBudget" } - }, - "currentCost": { - "type": "number", - "format": "double" - }, - "resourceName": { + } + } + }, + "blueapiapiChartData": { + "type": "object", + "properties": { + "date": { "type": "string" }, - "consumedService": { + "service": { "type": "string" }, - "maxCpuUtilization": { + "cost": { "type": "number", "format": "double" }, - "maxStorageUtilization": { + "profit": { "type": "number", "format": "double" }, - "maxMemoryUtilization": { + "utilization": { "type": "number", "format": "double" }, - "networkCapacity": { - "type": "string" - }, - "status": { - "type": "string" + "commitment": { + "type": "number", + "format": "double" } } }, - "coverResourceDetails": { + "blueapiapiFeeDetails": { "type": "object", "properties": { - "architecture": { + "name": { "type": "string" }, - "memorysizeInMB": { - "type": "number", - "format": "double" - }, - "platform": { + "currency": { "type": "string" }, - "vCpu": { - "type": "integer", - "format": "int32" - }, - "costCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" + "amount": { + "type": "number", + "format": "double" } - } + }, + "description": "FeeDetails resource definition." }, - "coverResourcesCombinations": { + "blueapiapiNotification": { "type": "object", "properties": { - "awsOptions": { - "$ref": "#/definitions/coverCostGroupAwsOptions", - "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + "id": { + "type": "string" }, - "azureOptions": { - "$ref": "#/definitions/coverCostGroupAzureOptions", - "description": "Optional. Valid only for the `azure` vendor. Azure-specific options." + "notificationType": { + "type": "string" }, - "gcpOptions": { - "$ref": "#/definitions/coverCostGroupGcpOptions", - "description": "Optional. Valid only for the `gcp` vendor. GCP-specific options." + "channels": { + "type": "array", + "items": { + "type": "string" + } }, - "azurecspOptions": { - "$ref": "#/definitions/coverCostGroupAzureCspOptions", - "description": "Optional. Valid only for the `azurecsp` vendor. AzureCSP-specific options." + "enabled": { + "type": "boolean" + }, + "account": { + "$ref": "#/definitions/blueapiapiNotificationAccount" } } }, - "coverResourcesFilter": { + "blueapiapiNotificationAccount": { "type": "object", "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "vendor": { + "type": "string" + }, + "accountId": { + "type": "string" } } }, - "coverResult": { + "blueapiapiUtilizationData": { "type": "object", "properties": { "id": { "type": "string" }, - "name": { - "type": "string" + "chartData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/blueapiapiChartData" + } } } }, - "coverRiRecommendationDetails": { + "blueapibillingv1InvoiceServiceDiscounts": { "type": "object", "properties": { - "accountId": { - "type": "string" - }, - "recommendedNumberOfInstanceToPurchase": { - "type": "string" - }, - "currencyCode": { - "type": "string" - }, - "ec2Options": { - "$ref": "#/definitions/coverEC2Options" - }, - "elasticCacheOptions": { - "$ref": "#/definitions/coverElasticCacheOptions" - }, - "esOptions": { - "$ref": "#/definitions/coverESOptions" - }, - "rdsOptions": { - "$ref": "#/definitions/coverRDSOptions" - }, - "redshiftOptions": { - "$ref": "#/definitions/coverRedshiftOptions" - }, - "region": { - "type": "string" + "id": { + "type": "string", + "description": "Service discount id." }, - "sizeFlexEligible": { - "type": "boolean" + "name": { + "type": "string", + "description": "Service discount name." }, - "currentGeneration": { - "type": "boolean" + "description": { + "type": "string", + "description": "Service discount description." }, - "upfrontCost": { - "type": "number", - "format": "double" + "created": { + "type": "string", + "description": "create timestamp." }, - "estimatedMonthlySavings": { - "type": "number", - "format": "double" + "updated": { + "type": "string", + "description": "update timestamp." } - } + }, + "description": "Streaming response message for the InvoiceServiceDiscounts rpc." }, - "coverRiRecommendationResults": { + "blueapibillingv1ListExchangeRatesResponse": { "type": "object", "properties": { - "riSummary": { - "$ref": "#/definitions/coverRiSummary" + "month": { + "type": "string", + "description": "The Month." }, - "riRecommendationDetails": { + "common": { + "$ref": "#/definitions/rippleCommonExchangeRate", + "description": "The common exchange rate." + }, + "billingGroup": { "type": "array", "items": { - "$ref": "#/definitions/coverRiRecommendationDetails" - } + "type": "object", + "$ref": "#/definitions/rippleBillingGroupExchangeRate" + }, + "description": "The billing group exchange rate." + }, + "payer": { + "$ref": "#/definitions/rippleVendorPayerExchangeRate", + "description": "The payer exchange rate." } - } + }, + "description": "Response message for the ListExchangeRates rpc." }, - "coverRiSummary": { + "blueapicostv1CostItem": { "type": "object", "properties": { - "totalPurchaseRecommendations": { - "type": "string", - "format": "int64" + "aws": { + "$ref": "#/definitions/apiawsCost" }, - "estimatedMonthlySavings": { - "type": "number", - "format": "double" + "gcp": { + "$ref": "#/definitions/apigcpCost" }, - "estimatedSavingsVSOnDemandRates": { - "type": "number", - "format": "double" + "azure": { + "$ref": "#/definitions/apiazureCost" } - } + }, + "description": "Response message wrapper for cloud costs." }, - "coverRightSizingRecommendationDetails": { + "blueapicoverv1CostItem": { "type": "object", "properties": { - "ec2RightSizingDetails": { - "$ref": "#/definitions/coverEC2rightSizingDetails" - }, - "lambdaRightSizingRecommendationDetails": { - "$ref": "#/definitions/coverLambdaRightSizingRecommendationDetails" + "vendor": { + "type": "string", + "title": "`aws`, `azure`, `azureea` or `gcp`" }, - "ebsRightSizingRecommendationDetails": { - "$ref": "#/definitions/apicoverEBSDetails" + "date": { + "type": "string" }, - "ecsRightSizingRecommendationDetails": { - "$ref": "#/definitions/coverEcsRightSizingRecommendationDetails" + "product": { + "type": "string" }, - "rdsRightSizingRecommendationDetails": { - "$ref": "#/definitions/coverRDSRightsizingDetails" + "account": { + "type": "string", + "title": "AWS account, GCP projectId, AzureCSP accountId" }, - "estimatedMonthlyCost": { + "cost": { "type": "number", "format": "double" }, - "estimatedMonthlySavings": { - "type": "number", - "format": "double" - } - } - }, - "coverS3IncompleteMultiPartUploadAbortConfiguration": { - "type": "object", - "properties": { - "bucketArn": { - "type": "string" + "details": { + "type": "string", + "title": "Could be AWS, Azure or GCP Cost" }, - "bucketName": { - "type": "string" + "forecast": { + "$ref": "#/definitions/coverAwsCostForecast", + "title": "Cost Forecast" }, - "lifeCycleRuleForDeletingIncompleteMCU": { + "region": { "type": "string" }, - "daysAfterInitiation": { - "type": "string" - } - } - }, - "coverSPCurrentUtilizationDetails": { - "type": "object", - "properties": { - "aveCoverage": { - "type": "number", - "format": "double" + "billingAccount": { + "type": "string", + "title": "AWS payer acount, GCP billing account, Azure Payer account" }, - "aveHourOnDemandSpend": { - "type": "number", - "format": "double" + "tagValue": { + "type": "string", + "title": "Tag Value. Contains tag value of the input tag key. Only used if groupBy is set to tag" }, - "maxHourlyOndemandSpend": { - "type": "number", - "format": "double" + "lastUpdate": { + "type": "string" }, - "minHourlyOndemandSpend": { - "type": "number", - "format": "double" + "unit": { + "type": "string", + "description": "Contains the list of unit items. Used only when groupBy is set to the selected unit type (e.g., \"Product\", \"Environment\", \"Customer\").\nExample: If groupBy is set to \"Environment\", this field might include values like \"dev\", \"next\", or \"prod\"." }, - "existingHourlyCommitment": { - "type": "number", - "format": "double" + "category": { + "type": "string", + "description": "Category. Contains the category to which a service belongs. Only used if groupBy is set to category." }, - "estOnDemandCostWithHourlyCommitment": { - "type": "number", - "format": "double" + "tagged": { + "type": "boolean", + "description": "Indicates whether the item is tagged (true) or not (false)." } - } + }, + "description": "Response message wrapper for cloud costs." }, - "coverSavingsPlanRecommendationDetails": { + "blueapicoverv1ListExchangeRatesResponse": { "type": "object", "properties": { - "currencyCode": { - "type": "string" - }, - "hourlyCommitmentToPurchase": { - "type": "number", - "format": "double" - }, - "offeringId": { - "type": "string" - }, - "paymentOption": { + "orgId": { "type": "string" }, - "savingsPlanType": { + "exchangeRates": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ExchangeRates" + } + } + }, + "title": "Response message for ListExchangeRates" + }, + "costv1CostAttribute": { + "type": "object", + "properties": { + "vendor": { "type": "string" }, - "term": { + "category": { "type": "string" }, - "upfrontCost": { - "type": "number", - "format": "double" - }, - "currentUtilizationDetails": { - "$ref": "#/definitions/coverSPCurrentUtilizationDetails" - }, - "estOutcomeFromSPRecommendation": { - "$ref": "#/definitions/coverEstOutcomeFromSPRecommendation" + "data": { + "type": "array", + "items": { + "type": "string" + } } } }, - "coverSavingsSummary": { + "costv1ListCostFilters": { "type": "object", "properties": { - "totalRecommendations": { + "filterId": { "type": "string", - "format": "int64", - "title": "Total number of detected recommendation for a given period" + "description": "Required. Filter Id." }, - "totalExecutedRecommendations": { + "filterName": { "type": "string", - "format": "int64", - "title": "Total number of executed recommendations for a given period" - }, - "totalEstimatedSavings": { - "type": "number", - "format": "double", - "title": "Total of estimated savings for a given period, as a result of executed recommendations" - }, - "totalEstimatedCost": { - "type": "number", - "format": "double", - "title": "Total of estimated cost for a given period, as a result of executed recommendations" - }, - "percentageSavings": { - "type": "number", - "format": "double", - "title": "Total of estimated percentage savings for a given period, as a result of executed recommendations" + "description": "Required. Filter Name." }, - "mostEffectiveRecommendation": { + "vendor": { "type": "string", - "title": "The most effective recommendation" + "description": "Required. Vendor." }, - "mostEffectiveRecommendationEstimatedSavings": { - "type": "number", - "format": "double", - "title": "The most effective recommendation savings" + "groupId": { + "type": "string", + "description": "Optional. If set, reads the usage-based cost details of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the usage-based cost details of the whole organization. Optional for AWS Wave(Pro)." }, - "mostEffectiveRecommendationEstimatedCost": { - "type": "number", - "format": "double", - "title": "The most effective recommendation cost" + "accountId": { + "type": "string", + "description": "Optional. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the usage-based cost details of the whole organization." }, - "mostEffectiveRecommendationPercentageSavings": { - "type": "number", - "format": "double", - "title": "The most effective recommendation percentage savings" + "awsOptions": { + "$ref": "#/definitions/v1ReadCostsRequestAwsOptions", + "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + } + }, + "description": "Response message for the ListCostFilters rpc." + }, + "coverAlertChannel": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" } } }, - "coverSideMenu": { + "coverAlertChannels": { "type": "object", "properties": { - "favorite": { + "email": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/coverAlertChannel" } }, - "isOpenedAdmin": { - "type": "boolean" - }, - "isOpenedFeatures": { - "type": "boolean" + "slack": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverAlertChannel" + } }, - "isOpenedCostGroups": { - "type": "boolean" + "msteams": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverAlertChannel" + } } } }, - "coverSideMenuState": { + "coverAlertCostGroup": { "type": "object", "properties": { - "key": { + "id": { "type": "string" }, - "value": { - "type": "boolean" + "name": { + "type": "string" } } }, - "coverSpRecommendationDetails": { + "coverAlertData": { "type": "object", "properties": { - "accountId": { + "id": { "type": "string" }, - "currencyCode": { + "name": { "type": "string" }, - "hourlyCommitmentToPurchase": { - "type": "number", - "format": "double" + "granularity": { + "type": "string" }, - "estimatedMonthlySavingsAmount": { - "type": "number", - "format": "double" + "costGroups": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverAlertCostGroup" + } }, - "estimatedSavingsPercentage": { - "type": "number", - "format": "double" + "channels": { + "$ref": "#/definitions/coverAlertChannels" }, - "estimatedAverageCoverage": { + "createdBy": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "fixedAmount": { "type": "number", - "format": "double" + "format": "float" }, - "estimatedAverageUtilization": { + "percentage": { "type": "number", - "format": "double" + "format": "float" } } }, - "coverSpRecommendationResults": { + "coverAnomalyOptions": { "type": "object", "properties": { - "spSummary": { - "$ref": "#/definitions/coverSpSummary" + "threshold": { + "type": "number", + "format": "float" }, - "spRecommendationDetails": { - "type": "array", - "items": { - "$ref": "#/definitions/coverSpRecommendationDetails" - } + "isPercentage": { + "type": "boolean" + }, + "pastDataInMonths": { + "type": "string", + "format": "int64" } } }, - "coverSpSummary": { + "coverAwsCostForecast": { "type": "object", "properties": { - "currentOnDemandSpend": { + "date": { + "type": "string", + "description": "For daily data, format is `yyyy-mm-dd`; for monthly, `yyyy-mm`." + }, + "account": { + "type": "string", + "description": "The account being queried." + }, + "productCode": { + "type": "string", + "title": "The product code for an AWS service" + }, + "cost": { "type": "number", - "format": "double" + "format": "double", + "title": "Forcasted cost based on true cost (calculated)" }, - "estimatedMonthlySpend": { + "lowerBound": { "type": "number", "format": "double" }, - "estimatedMonthlySavings": { + "upperBound": { "type": "number", "format": "double" }, - "totalRecommendationCount": { - "type": "string", - "format": "int64" - } - } - }, - "coverStopEC2InstanceRecommendationDetails": { - "type": "object", - "properties": { - "instanceId": { - "type": "string" - }, - "instanceType": { - "type": "string" + "unblendedCost": { + "type": "number", + "format": "double", + "title": "Forcasted cost based on unblended cost" }, - "AveCpuUtilizationBy14Day": { + "unblendedLowerBound": { "type": "number", "format": "double" }, - "AveNetworkIOBy14Day": { + "unblendedUpperBound": { "type": "number", "format": "double" - }, - "cpuUtilization": { + } + } + }, + "coverAwsDiscountRecommendations": { + "type": "object", + "properties": { + "riRecommendations": { "type": "array", "items": { - "$ref": "#/definitions/apicoverUtilizationData" + "type": "object", + "$ref": "#/definitions/coverRiRecommendationResults" } }, - "netWorkIO": { + "spRecommendations": { "type": "array", "items": { - "$ref": "#/definitions/apicoverUtilizationData" + "type": "object", + "$ref": "#/definitions/coverSpRecommendationResults" } } } }, - "coverStopInstanceRecommendationDetails": { + "coverAwsInputs": { "type": "object", "properties": { - "stopEC2InstanceRecommendationDetails": { - "$ref": "#/definitions/coverStopEC2InstanceRecommendationDetails" + "offeringClass": { + "type": "string", + "title": "Supported values are the following: ('STANDARD', 'CONVERTIBLE') -\u003e for RI only" }, - "stopRDSRecommendationDetails": { - "$ref": "#/definitions/coverStopRDSDetails" + "paymentOption": { + "type": "string", + "title": "Supported values are the following: ('ALL_UPFRONT', 'PARTIAL_UPFRONT', 'NO_UPFRONT')" + }, + "termInYears": { + "type": "string", + "title": "Supported values are the following:('ONE_YEAR', 'THREE_YEARS')" + }, + "basedOnThePast": { + "type": "string", + "title": "Supported values are the following:('SEVEN_DAYS', 'THIRTY_DAYS', 'SIXTY_DAYS')" } } }, - "coverStopRDSDetails": { + "coverAzureDiscountRecommendations": { + "type": "object" + }, + "coverAzureInputs": { + "type": "object" + }, + "coverBudgetData": { "type": "object", "properties": { - "rdsDBInstance": { - "$ref": "#/definitions/coverRDSDBInstance" + "id": { + "type": "string", + "title": "not required for creating budget" + }, + "startDate": { + "type": "string", + "title": "use yyyymmdd format" + }, + "endDate": { + "type": "string", + "title": "use yyyymmdd format" + }, + "totalBudget": { + "type": "number", + "format": "float" + }, + "period": { + "type": "string", + "format": "int64", + "title": "3, 6, 12 months" + }, + "granularBudget": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverGranularBudgetData" + }, + "title": "budget per month" + }, + "costGroup": { + "$ref": "#/definitions/coverAlertCostGroup" + }, + "alerts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apicoverBudgetAlert" + }, + "title": "threshold(s) and its respective channel(s) to alert" + }, + "forecastedData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverGranularForecastData" + }, + "title": "forecast for ongoing months of an active budget; if expired, archived forecast record" + }, + "spendingData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverGranularSpendingData" + }, + "title": "spending data" + }, + "expired": { + "type": "boolean", + "title": "true if budget has expired" + }, + "draft": { + "type": "boolean", + "title": "true if the current budget set is still a draft" + }, + "createdBy": { + "type": "string", + "title": "not required for creating budget" + }, + "createdAt": { + "type": "string", + "title": "not required for creating budget" + }, + "updatedBy": { + "type": "string", + "title": "not required for creating budget" + }, + "updatedAt": { + "type": "string", + "title": "not required for creating budget" + }, + "totalSpend": { + "type": "number", + "format": "float", + "title": "total accumulated spending within the budget period" } } }, - "coverThreshold": { + "coverCategory": { "type": "object", "properties": { - "type": { + "display": { + "type": "string" + }, + "query": { "type": "string" - }, - "value": { - "type": "number", - "format": "float" } } }, - "coverUnitCostData": { + "coverChannelData": { "type": "object", "properties": { "id": { "type": "string" }, - "unitName": { - "type": "string" + "name": { + "type": "string", + "title": "actual email value of channel name in slack or ms teams" }, - "description": { + "type": { + "type": "string", + "title": "email, slack, msteams" + }, + "webhookUrl": { "type": "string" + } + } + }, + "coverCombinations": { + "type": "object", + "properties": { + "awsOptions": { + "$ref": "#/definitions/coverCostGroupAwsOptions", + "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." }, - "unitItems": { - "type": "array", - "items": { - "$ref": "#/definitions/coverUnitItem" - } + "azureOptions": { + "$ref": "#/definitions/coverCostGroupAzureOptions", + "description": "Optional. Valid only for the `azure` vendor. Azure-specific options." }, - "createdBy": { - "type": "string" + "gcpOptions": { + "$ref": "#/definitions/coverCostGroupGcpOptions", + "description": "Optional. Valid only for the `gcp` vendor. GCP-specific options." }, - "createTime": { - "type": "string" + "azurecspOptions": { + "$ref": "#/definitions/coverCostGroupAzureCspOptions", + "description": "Optional. Valid only for the `azurecsp` vendor. AzureCSP-specific options." }, - "lastUpdatedAt": { - "type": "string" + "customOptions": { + "$ref": "#/definitions/coverCostGroupCustomOptions", + "description": "Optional. For custom selection when creating cost groups.\nThis field allows custom options for specifying criteria for cost group creation." } } }, - "coverUnitItem": { + "coverCostGroupAwsOptions": { "type": "object", "properties": { - "itemName": { - "type": "string" - }, - "distribution": { - "type": "number", - "format": "double" - }, - "dedicatedResourcesCombination": { + "filters": { "type": "array", "items": { - "$ref": "#/definitions/coverResourcesFilter" - } + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" column filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." }, - "dedicatedResourcesCombinations": { - "$ref": "#/definitions/coverResourcesCombinations" + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." } - } + }, + "description": "AWS-specific options for CreateCostGroupRequest." }, - "coverUpgradeEC2Details": { + "coverCostGroupAzureCspOptions": { "type": "object", "properties": { - "eC2CurrentDetails": { - "$ref": "#/definitions/coverEC2UpgadeDetails" - }, - "ugradeEC2RecommendationDetails": { - "$ref": "#/definitions/coverEC2UpgadeDetails" - }, - "currentCostCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" column filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." }, - "estimatedCostCalculation": { - "$ref": "#/definitions/apicoverCostCalculation" + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." } - } + }, + "description": "AzureCsp-specific options for CreateCostGroupRequest." }, - "coverUpgradeRecommendationDetails": { + "coverCostGroupAzureOptions": { "type": "object", "properties": { - "upgradeEC2Details": { - "$ref": "#/definitions/coverUpgradeEC2Details" + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" column filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." }, - "upgradeEBSDetails": { - "$ref": "#/definitions/apicoverEBSDetails" + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + } + }, + "description": "Azure-specific options for CreateCostGroupRequest." + }, + "coverCostGroupCustomOptions": { + "type": "object", + "properties": { + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." }, - "upgradeRDSDetails": { - "$ref": "#/definitions/coverRDSUpgradeDetails" + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." }, - "estimatedMonthlyCost": { - "type": "number", - "format": "double" + "labelFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Labels on gcp help you organize resources and manage your costs at scale, with the granularity you need.\nFor example, on Compute Engine, you can use labels to group VMs in categories such as production, staging, or development so that you can search for resources that belong to each development stage.\nIf you want to query lineitems with the label `vm-prod: prod`, set to `{\"vm-prod\":\"prod\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." }, - "estimatedMonthlySavings": { - "type": "number", - "format": "double" + "projectLabelFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Project Labels refers to labels that have been assigned to GCP projects. \nFor example, projectId \"mobingi-main\" assigned as \"env:prod\"\nIf you want to query lineitems with the label `env: prod`, set to `{\"env\":\"prod\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." } - } + }, + "description": "Custom-specific options for CreateCostGroupRequest." }, - "coverUserData": { + "coverCostGroupData": { "type": "object", "properties": { "id": { @@ -20536,10 +20675,10 @@ "name": { "type": "string" }, - "email": { + "description": { "type": "string" }, - "avatar": { + "image": { "type": "string" }, "icon": { @@ -20548,3680 +20687,3534 @@ "colorTheme": { "type": "string" }, - "initial": { + "createdAt": { "type": "string" }, - "activated": { - "type": "boolean" - }, - "isAdmin": { - "type": "boolean" + "updatedAt": { + "type": "string" }, - "attributes": { + "members": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/coverMemberUserData" } }, - "locale": { - "type": "string" - }, - "timeZone": { - "type": "string" - }, - "registered": { - "type": "string" - }, - "ssoEnabled": { - "type": "boolean" - }, - "mfaEnabled": { - "type": "boolean" + "combinations": { + "$ref": "#/definitions/coverCombinations" }, - "appTheme": { - "type": "string" + "createdBy": { + "$ref": "#/definitions/coverMemberUserData" }, - "mainView": { - "type": "string" + "eventIndicator": { + "$ref": "#/definitions/coverEventIndicator" }, - "costGroups": { + "anomalyOptions": { + "$ref": "#/definitions/coverAnomalyOptions" + } + } + }, + "coverCostGroupGcpOptions": { + "type": "object", + "properties": { + "filters": { "type": "array", "items": { - "$ref": "#/definitions/coverMemberCostGroup" - } - }, - "createdBy": { - "$ref": "#/definitions/coverMemberUserData" - }, - "updatedAt": { - "type": "string" + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Optional. A list of filtering options. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc.\nA map of \"key:value\" column filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `serviceDescriptinon` to return only `Cloud Spanner`, set to `{\"serviceDescription\":\"eq:Cloud Spanner\"}` or `{\"serviceDescription\":\"Cloud Spanner\"}`. You can also use a regular expression like `{\"serviceDescription\":\"re:Cloud Spanner|BigQuery\"}`, which means return all Cloud Spanner or BigQuery lineitems. Or reverse regexp, such as `{\"serviceDescription\":\"!re:^Cloud Spanner$\"}`, which means return all items except `Cloud Spanner`." }, - "orgId": { - "type": "string" + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Tags on gcp used to conditionally allow or deny policies based on whether a supported resource has a specific tag.\nSuppose you have a set of virtual machines (VMs) running various applications, and you want to distinguish between them based on their roles. You could assign tags like \"app:webserver\" and \"app:database\" to identify which VMs serve as web servers and which ones are database servers.\nIf you want to query lineitems with the tag `app:database`, set to `{\"app\":\"database\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." }, - "isProfilingDone": { - "type": "boolean" + "labelFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Labels on gcp help you organize resources and manage your costs at scale, with the granularity you need.\nFor example, on Compute Engine, you can use labels to group VMs in categories such as production, staging, or development so that you can search for resources that belong to each development stage.\nIf you want to query lineitems with the label `vm-prod: prod`, set to `{\"vm-prod\":\"prod\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." }, - "passwordLastRenewed": { + "projectLabelFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupOptionsFilters" + }, + "description": "Project Labels refers to labels that have been assigned to GCP projects. \nFor example, projectId \"mobingi-main\" assigned as \"env:prod\"\nIf you want to query lineitems with the label `env: prod`, set to `{\"env\":\"prod\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + } + }, + "description": "GCP-specific options for CreateCostGroupRequest." + }, + "coverCostGroupOptionsFilters": { + "type": "object", + "properties": { + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "coverCurrentEBSDetails": { + "type": "object", + "properties": { + "attachmentState": { "type": "string" }, - "isOwner": { - "type": "boolean" - }, - "isAuth0": { - "type": "boolean" + "iops": { + "type": "number", + "format": "double" }, - "readCostGroupCreationPopup": { - "type": "boolean" + "throughput": { + "type": "number", + "format": "double" }, - "useNewCostGroupCreationUI": { - "type": "boolean" + "sizeInGb": { + "type": "number", + "format": "double" }, - "autoTimeZone": { - "type": "boolean" + "costCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" } } }, - "coverViewData": { + "coverCurrentEC2Details": { "type": "object", "properties": { - "id": { + "instanceType": { "type": "string" }, - "name": { + "os": { "type": "string" }, - "description": { + "region": { "type": "string" }, - "isPrivate": { - "type": "boolean" - }, - "isEditable": { - "type": "boolean" + "cpuUtilization": { + "type": "number", + "format": "double" }, - "icon": { - "type": "string" + "memoryUtilization": { + "type": "number", + "format": "double" }, - "createdBy": { - "$ref": "#/definitions/coverMemberUserData" + "diskUtilization": { + "type": "number", + "format": "double" }, - "createdAt": { + "networkCapacity": { "type": "string" }, - "updatedBy": { - "$ref": "#/definitions/coverMemberUserData" - }, - "updatedAt": { - "type": "string" + "monthlyCost": { + "type": "number", + "format": "double" }, - "layout": { + "eC2CpuUtilization": { "type": "array", "items": { - "$ref": "#/definitions/coverWidgetData" + "type": "object", + "$ref": "#/definitions/apicoverUtilizationData" } }, - "sideMenu": { - "$ref": "#/definitions/coverSideMenu" - }, - "reportType": { - "type": "string" + "eC2DiskUtilization": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apicoverUtilizationData" + } }, - "colorTheme": { - "type": "string" + "eC2MemoryUtilization": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apicoverUtilizationData" + } }, - "currency": { - "type": "string" + "networkTrafficData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apicoverUtilizationData" + } }, - "reportPeriod": { - "type": "string" - } - } - }, - "coverViewLayout": { - "type": "object", - "properties": { - "widgetId": { - "type": "string" + "otherDetails": { + "$ref": "#/definitions/CurrentEC2DetailsOtherDetails" }, - "widgetData": { - "$ref": "#/definitions/coverWidgetData" + "costCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" } } }, - "coverViewList": { + "coverDeleteRecommendationDetails": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "isEditable": { - "type": "boolean" + "ec2Details": { + "$ref": "#/definitions/coverCurrentEC2Details" }, - "icon": { - "type": "string" + "ebsVolumeDetails": { + "$ref": "#/definitions/coverEbsVolumeDetails" }, - "createdAt": { - "type": "string" + "elasticIpAddressDetails": { + "$ref": "#/definitions/coverElasticIpAddressDetails" }, - "updatedAt": { - "type": "string" + "idleRdsDetails": { + "$ref": "#/definitions/coverIdleRdsDetails" }, - "colorTheme": { - "type": "string" + "idleLoadBalancerDetails": { + "$ref": "#/definitions/coverIdleLoadBalancerDetails" }, - "reportType": { + "exclusionStatus": { "type": "string" }, - "reportPeriod": { + "status": { "type": "string" } } }, - "coverWidgetData": { + "coverEBSRecommendationDetails": { "type": "object", "properties": { - "id": { + "attachmentState": { "type": "string" }, - "x": { + "iops": { "type": "number", "format": "double" }, - "y": { + "throughput": { "type": "number", "format": "double" }, - "componentId": { - "type": "string" - }, - "options": { - "type": "object" + "sizeInGb": { + "type": "number", + "format": "double" }, - "requests": { - "type": "array", - "items": { - "$ref": "#/definitions/coverLayoutRequests" - } + "EstcostCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" } } }, - "coverv1FeeDetails": { + "coverEC2ModifyRecommendationDetails": { "type": "object", "properties": { - "id": { + "instanceType": { "type": "string" }, - "orgId": { + "os": { "type": "string" }, - "vendor": { + "region": { "type": "string" }, - "account": { - "type": "string" + "cpuUtilization": { + "type": "number", + "format": "double" }, - "month": { - "type": "string" + "memoryUtilization": { + "type": "number", + "format": "double" }, - "lineType": { - "type": "string" + "diskUtilization": { + "type": "number", + "format": "double" }, - "feeType": { + "networkCapacity": { "type": "string" }, - "productCode": { + "costCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" + } + } + }, + "coverEC2Options": { + "type": "object", + "properties": { + "instanceType": { "type": "string" }, - "description": { + "tenancy": { "type": "string" }, - "started": { + "family": { "type": "string" }, - "timeInterval": { + "platform": { "type": "string" - }, - "productName": { + } + } + }, + "coverEC2UpgadeDetails": { + "type": "object", + "properties": { + "instanceType": { "type": "string" }, - "currency": { + "operation": { "type": "string" }, - "splitStatus": { + "productCode": { "type": "string" }, - "isAllocated": { - "type": "boolean" - }, - "isApplied": { - "type": "boolean" + "unit": { + "type": "string" }, - "unblendedCost": { + "usageAmount": { "type": "number", "format": "double" }, - "sourceFee": { - "type": "string" - }, - "lastUpdate": { - "type": "string" - } - }, - "description": "Response message for GetFeeDetails, CreateFeeReallocation rpc." - }, - "coverv1Status": { - "type": "string", - "enum": [ - "PENDING", - "IN_PROGRESS", - "SUCCESS", - "FAILED" - ], - "default": "PENDING", - "title": "Status of upload file" + "usageType": { + "type": "string" + } + } }, - "gcpGCPRecommendations": { + "coverEC2rightSizingDetails": { "type": "object", "properties": { - "recommendationHubRecommendations": { - "$ref": "#/definitions/gcpRecommendationHubRecommendations" + "currentEC2Details": { + "$ref": "#/definitions/coverCurrentEC2Details" + }, + "eC2ModifyRecommendationDetails": { + "$ref": "#/definitions/coverEC2ModifyRecommendationDetails" } } }, - "gcpRecommendationHubRecommendations": { + "coverESDetails": { "type": "object", "properties": { - "insights": { - "type": "array", - "items": { - "$ref": "#/definitions/RecommendationHubRecommendationsInsights" - } + "currentGeneration": { + "type": "boolean" }, - "recommendedAction": { + "instanceClass": { "type": "string" }, - "resource": { + "instanceSize": { + "type": "string" + } + } + }, + "coverESOptions": { + "type": "object", + "properties": { + "instanceClass": { "type": "string" }, - "priorityLevel": { + "instanceSize": { "type": "string" } } }, - "googlerpcStatus": { + "coverEbsVolumeDetails": { "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]." + "volumeId": { + "type": "string" }, - "message": { + "volumeSize": { "type": "string", - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client." + "format": "int64" }, - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufAny" - }, - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use." + "volumeType": { + "type": "string" + }, + "monthlyStorageCost": { + "type": "number", + "format": "double" } - }, - "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors)." + } }, - "octoawsOctoGeneratedAWSRecommendations": { + "coverEcsRightSizingRecommendationDetails": { "type": "object", "properties": { - "currentDetails": { - "$ref": "#/definitions/octoawsOctoGeneratedAWSRecommendationsDetails" + "EcsCurrentConfiguration": { + "$ref": "#/definitions/coverResourceDetails" }, - "recommendationDetails": { - "$ref": "#/definitions/octoawsOctoGeneratedAWSRecommendationsDetails" + "EcsRecommendedConfiguration": { + "$ref": "#/definitions/coverResourceDetails" } } }, - "octoawsOctoGeneratedAWSRecommendationsDetails": { + "coverElasticCacheDetails": { "type": "object", "properties": { - "ec2Details": { - "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" + "currentGeneration": { + "type": "boolean" + }, + "nodeType": { + "type": "string" + }, + "family": { + "type": "string" } } }, - "octoazurecspOctoGeneratedAzureCSPRecommendations": { - "type": "object" - }, - "octogcpOctoGeneratedGCPRecommendations": { - "type": "object" - }, - "pricingPricingData": { + "coverElasticCacheOptions": { "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.\nRefer 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." + "family": { + "type": "string" }, - "pricePerUnit": { - "type": "number", - "format": "double", - "description": "Price per unit." + "nodeType": { + "type": "string" }, - "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```" + "productDescription": { + "type": "string" } - }, - "title": "Pricing details" + } }, - "protobufAny": { + "coverElasticIpAddressDetails": { "type": "object", "properties": { - "typeUrl": { - "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." + "ipAddress": { + "type": "string" }, - "value": { - "type": "string", - "format": "byte", - "description": "Must be a valid serialized protocol buffer of the above specified type." + "service": { + "type": "string" } - }, - "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(\u0026foo)) {\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 := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.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\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\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 }" - }, - "protobufNullValue": { - "type": "string", - "enum": [ - "NULL_VALUE" - ], - "default": "NULL_VALUE", - "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." + } }, - "protosOperation": { + "coverEstOutcomeFromPurchaseRIRecommendation": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "The server-assigned name." + "aveUtilization": { + "type": "number", + "format": "double" }, - "metadata": { - "$ref": "#/definitions/protobufAny", - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any." + "aveNormalizedUnitsUsedPerHour": { + "type": "number", + "format": "double" }, - "done": { - "type": "boolean", - "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable." + "aveNumberofInstanceUsedPerHour": { + "type": "number", + "format": "double" }, - "error": { - "$ref": "#/definitions/googlerpcStatus", - "description": "The error result of the operation in case of failure or cancellation." + "breakEvenInMonths": { + "type": "number", + "format": "double" }, - "response": { - "$ref": "#/definitions/protobufAny", - "description": "The normal response of the operation in case of success. If the original method returns\nno data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the\noriginal method is standard `Get`/`Create`/`Update`, the response should be the\nresource. For other methods, the response should have the type `XxxResponse`, where\n`Xxx` is the original method name. For example, if the original method name is\n`TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`." - } - }, - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call." - }, - "recommendationOCTOGeneratedRecommendations": { - "type": "object", - "properties": { - "aws": { - "$ref": "#/definitions/octoawsOctoGeneratedAWSRecommendations" + "monthlyOnDemandCost": { + "type": "number", + "format": "double" }, - "gcp": { - "$ref": "#/definitions/octogcpOctoGeneratedGCPRecommendations" + "monthlyRICost": { + "type": "number", + "format": "double" }, - "azurecsp": { - "$ref": "#/definitions/octoazurecspOctoGeneratedAzureCSPRecommendations" + "monthlySavings": { + "type": "number", + "format": "double" + }, + "monthlySavingsPercentage": { + "type": "number", + "format": "double" + }, + "maxNormalizedUnitsUsedPerHour": { + "type": "number", + "format": "double" + }, + "maxNumberOfInstanceUsedPerHour": { + "type": "number", + "format": "double" + }, + "minNormalizedUnitsUsedPerHour": { + "type": "number", + "format": "double" + }, + "minNumberOfInstanceUsedPerHour": { + "type": "number", + "format": "double" } } }, - "recommendationRecommendationData": { + "coverEstOutcomeFromSPRecommendation": { "type": "object", "properties": { - "awsRecommendations": { - "$ref": "#/definitions/recommendationawsAWSRecommendations" - }, - "gcpRecommendations": { - "$ref": "#/definitions/gcpGCPRecommendations" - }, - "azureCspRecommendations": { - "$ref": "#/definitions/azurecspAzureCSPRecommendations" - }, - "octoGeneratedRecommendations": { - "$ref": "#/definitions/recommendationOCTOGeneratedRecommendations" + "aveCoverage": { + "type": "number", + "format": "double" }, - "target": { - "type": "string" + "aveUtilization": { + "type": "number", + "format": "double" }, - "targetName": { - "type": "string" + "monthlySavingsAmount": { + "type": "number", + "format": "double" }, - "resourceId": { - "type": "string" + "onDemandCost": { + "type": "number", + "format": "double" }, - "service": { - "type": "string" + "roi": { + "type": "number", + "format": "double" }, - "costGroup": { - "type": "string" + "savingsPlanCost": { + "type": "number", + "format": "double" }, - "recommendationGroup": { - "type": "string" + "savingsPercentage": { + "type": "number", + "format": "double" + } + } + }, + "coverEventIndicator": { + "type": "object", + "properties": { + "anomaly": { + "type": "boolean", + "title": "Anomaly is supported for now" }, - "category": { + "visualBuilder": { + "type": "boolean", + "title": "Temporary indicator if cost group was created via new visual builder" + } + } + }, + "coverExecutedRecommendationDetails": { + "type": "object", + "properties": { + "recommendationId": { "type": "string" }, - "source": { + "recommendaton": { "type": "string" }, - "id": { + "target": { "type": "string" }, - "lastUpdatedAt": { + "accountName": { "type": "string" }, - "region": { + "service": { "type": "string" }, - "recommendation": { + "completedDate": { "type": "string" }, - "estimatedMonthlyCost": { - "type": "number", - "format": "double" - }, - "estimatedMonthlySavings": { + "estSavings": { "type": "number", "format": "double" }, - "estimatedSavingsPercentage": { + "estCost": { "type": "number", "format": "double" }, - "resourceName": { + "vendor": { "type": "string" }, - "restartNeeded": { - "type": "boolean" - }, - "rollbackPossible": { - "type": "boolean" - }, - "launchUrl": { + "category": { "type": "string" }, - "vendor": { + "dateAdded": { "type": "string" - } - } - }, - "recommendationawsAWSRecommendations": { - "type": "object", - "properties": { - "costExplorerRecommendations": { - "$ref": "#/definitions/awsCostExplorerRecommendations" }, - "costOptimizationHubRecommendations": { - "$ref": "#/definitions/awsCostOptimizationHubRecommendations" - }, - "trustedAdvisorRecommendations": { - "$ref": "#/definitions/awsTrustedAdvisorRecommendations" + "personInCharge": { + "type": "string" }, - "resourceArn": { + "optimizationStatus": { "type": "string" } } }, - "rippleAssigned": { - "type": "object", - "properties": { - "percentage": { - "type": "integer", - "format": "int32", - "description": "Required. This value can be up to 100.", - "required": [ - "percentage" - ] - }, - "fixed": { - "type": "integer", - "format": "int32", - "description": "Required.", - "required": [ - "fixed" - ] - } - }, - "description": "Assigned resource definition.", - "required": [ - "percentage", - "fixed" - ] - }, - "rippleAssignedBillingGroup": { + "coverExecutiveSummary": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "The unique id of the billing group internal." - }, - "groupId": { - "type": "string", - "description": "The unique id of the billing group." - }, - "groupName": { - "type": "string", - "description": "The name of the billing group." + "costUsage": { + "type": "number", + "format": "double", + "title": "The total cost usage of the current period" }, - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/blueapiapiAccount" - }, - "description": "A list of accounts." + "previousPeriodCostUsage": { + "type": "number", + "format": "double", + "title": "The total cost usage of the previous period" }, - "assigned": { - "$ref": "#/definitions/rippleAssigned", - "title": "The assigned that rules set for untagged groups" - } - }, - "description": "AssignedBillingGroup resource definition." - }, - "rippleBillingGroupExchangeRate": { - "type": "object", - "properties": { - "billingInternalId": { + "status": { "type": "string", - "description": "The billing group's internal id." + "title": "The status of the cost usage compared to the previous period. \"increased\", \"decreased\"" }, - "billingGroupId": { - "type": "string", - "description": "The billing group's id." + "percentageChanged": { + "type": "number", + "format": "double", + "title": "The percentage changed compared to the previous period" }, - "billingGroupName": { - "type": "string", - "description": "The billing group's name." + "averageMonthlyChanged": { + "type": "number", + "format": "double", + "title": "The average monthly changed" }, - "exchangeRate": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleExchangeRate" - }, - "description": "The exchange rate." + "differenceFromPreviousPeriod": { + "type": "number", + "format": "double" } - }, - "description": "BillingGroupExchangeRate resource definition." + } }, - "rippleBillingGroupInfo": { + "coverFavorites": { "type": "object", "properties": { - "billingTitle": { - "type": "string", - "title": "Optional. The title of the billing" - }, - "phoneNumber": { - "type": "string", - "title": "Optional. Company’s phone number" - }, - "postalCode": { - "type": "string", - "title": "Optional. Company’s postal code" - }, - "address": { - "type": "string", - "title": "Optional. Company’s address" - }, - "personal": { - "type": "string", - "title": "Optional. Addressee" - }, - "remarks": { - "type": "string", - "title": "Optional. Any remarks about the billing group" - }, - "projectId": { - "type": "string", - "title": "Optional. Project code" - }, - "language": { - "type": "string", - "title": "Optional. Invoice language" - }, - "displayCost": { - "type": "string", - "title": "Optional. Calculation type, true unblended or unblended" - }, - "exchangeRateType": { - "type": "string", - "title": "Optional. Exchange rate type, payer or billing group" + "id": { + "type": "string" }, - "qrCode": { - "type": "boolean", - "title": "Optional. qrCode" + "name": { + "type": "string" }, - "invoiceTemplateId": { - "type": "string", - "title": "Optional. Invoice template Id" + "description": { + "type": "string" }, - "city": { - "type": "string", - "title": "Optional. Company's city" + "isPrivate": { + "type": "boolean" }, - "prefecture": { - "type": "string", - "title": "Optional. Company's prefecture" + "icon": { + "type": "string" }, - "country": { - "type": "string", - "title": "Optional. Company's country" - } - }, - "description": "BillingGroupInfo resource definition. Only available in Ripple." - }, - "rippleChargingTarget": { - "type": "string", - "enum": [ - "BILLINGGROUP", - "ACCOUNT" - ], - "default": "BILLINGGROUP", - "description": "Charging target\nIndicates that `ChargingTarget` in the setting applies to either BillingGroup or Account.\n\n - BILLINGGROUP: billing group\n - ACCOUNT: account" - }, - "rippleCommonExchangeRate": { - "type": "object", - "properties": { - "aws": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleExchangeRate" - } + "createdAt": { + "type": "string" }, - "gcp": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleExchangeRate" - } + "updatedAt": { + "type": "string" }, - "azure": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleExchangeRate" - } - } - }, - "description": "CommonExchangeRate resource definition." - }, - "rippleCustomizedBillingService": { - "type": "object", - "properties": { - "id": { + "colorTheme": { "type": "string" }, - "name": { + "reportType": { "type": "string" }, - "description": { + "reportPeriod": { "type": "string" + } + } + }, + "coverGcpDiscountRecommendations": { + "type": "object" + }, + "coverGcpInputs": { + "type": "object" + }, + "coverGcpOptions": { + "type": "object", + "properties": { + "billingOption": { + "$ref": "#/definitions/GcpOptionsBillingOption" }, - "methodConfig": { - "$ref": "#/definitions/rippleMethodConfig" + "projectOption": { + "$ref": "#/definitions/GcpOptionsProjectOption" }, - "created": { + "accountName": { "type": "string", - "readOnly": true + "title": "We'll keep this to avoid crash in production. \nWe will remove this after this changes released to prod" }, - "updated": { + "projectId": { "type": "string", - "readOnly": true + "title": "where dataset is stored" + }, + "datasetId": { + "type": "string" + }, + "datasetRegion": { + "type": "string" } - }, - "description": "CustomizedBillingService resource definition." + } }, - "rippleDueDate": { + "coverGranularBudgetData": { "type": "object", "properties": { - "dueDateDay": { - "type": "string", - "description": "Due date set on the invoice\nRefer to the following for available values\nbeginning_of_month: The beginning date of the month is automatically set.\nend_of_month: The end date of the month is automatically set.\ncustom: Date can be specified." - }, - "dueDateMonth": { + "date": { "type": "string", - "description": "Due month set on the invoice\nRefer to the following for available values\nthis_month: This month is automatically set.\nnext_month: Next month is automatically set.\nmonth_after_next: Month after next is automatically set." + "title": "use yyyymm format" }, - "dueDateCustomDay": { - "type": "integer", - "format": "int32", - "title": "Customized due date set on the invoice\nRange 1 ~ 31" + "budget": { + "type": "number", + "format": "float" } - }, - "description": "DueDate resource definition." + } }, - "rippleExchangeRate": { + "coverGranularForecastData": { "type": "object", "properties": { - "currency": { + "date": { "type": "string", - "description": "The currency code." + "title": "use yyyymm format" }, - "rate": { + "mid": { "type": "number", - "format": "double", - "description": "The rate." + "format": "float" + }, + "upperBound": { + "type": "number", + "format": "float" + }, + "lowerBound": { + "type": "number", + "format": "float" } - }, - "description": "ExchangeRate resource definition." + } }, - "rippleFixedFee": { + "coverGranularSpendingData": { "type": "object", "properties": { + "date": { + "type": "string", + "title": "use yyyymm format" + }, "value": { "type": "number", - "format": "double" + "format": "float", + "title": "actual cost for the month" } - }, - "title": "fixed fee" + } }, - "rippleFixedFeeOrPercentage": { + "coverHighErrorRatesLambda": { "type": "object", "properties": { - "fixedFeeValue": { + "avgDailyErrorRates": { "type": "number", "format": "double" }, - "percentageValue": { + "avgDailyInvokes": { "type": "number", "format": "double" }, - "service": { - "$ref": "#/definitions/rippleTargetServiceConfig" + "currentDayErrorRates": { + "type": "number", + "format": "double" }, - "usage": { - "$ref": "#/definitions/rippleTargetUsageConfig" + "currentDayInvokes": { + "type": "number", + "format": "double" }, - "discounted": { - "type": "boolean" + "dateForMaxErrorRates": { + "type": "string" }, - "upperLimit": { + "functionArn": { + "type": "string" + }, + "lostDailyComputeCost": { + "type": "number", + "format": "double" + }, + "maxDailyErrorRates": { "type": "number", "format": "double" } - }, - "title": "fixed fee or percentage" + } }, - "rippleInvoiceLayout": { + "coverIdleLoadBalancerDetails": { "type": "object", "properties": { - "account": { - "$ref": "#/definitions/rippleaccountInvoiceLayout", - "title": "total layout" - }, - "total": { - "$ref": "#/definitions/rippletotalInvoiceLayout", - "title": "total layout" - }, - "body": { - "$ref": "#/definitions/ripplebodyInvoiceLayout", - "title": "body layout" - }, - "footer": { - "$ref": "#/definitions/ripplefooterInvoiceLayout", - "title": "footer layout" + "loadBalancerName": { + "type": "string" }, - "header": { - "$ref": "#/definitions/rippleheaderInvoiceLayout", - "title": "header layout" + "reason": { + "type": "string" }, - "report": { - "$ref": "#/definitions/ripplereportInvoiceLayout", - "title": "report layout" + "service": { + "type": "string" } - }, - "description": "WORK-IN-PROGRESS: InvoiceLayout resource definition.\nDefinitions related to invoice display." + } }, - "rippleMethodConfig": { + "coverIdleRdsDetails": { "type": "object", "properties": { - "currency": { - "$ref": "#/definitions/MethodConfigCurrency" - }, - "chargingMethod": { - "$ref": "#/definitions/MethodConfigChargingMethod" - }, - "fixedFee": { - "$ref": "#/definitions/rippleFixedFee" + "dbInstanceName": { + "type": "string" }, - "percentage": { - "$ref": "#/definitions/ripplePercentage" + "daysSinceLastConnection": { + "type": "string" }, - "fixedFeeOrPercentage": { - "$ref": "#/definitions/rippleFixedFeeOrPercentage" + "instanceType": { + "type": "string" }, - "TieredPrice": { - "$ref": "#/definitions/rippleTieredPrice" + "multiAZ": { + "type": "string" }, - "TieredPercentage": { - "$ref": "#/definitions/rippleTieredPercentage" + "storageProvisioned": { + "type": "number", + "format": "double" } - }, - "description": "MethodConfig resource definition." + } }, - "rippleOrg": { + "coverLambdaRightSizingRecommendationDetails": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "The unique name (or id) of the organization." - }, - "email": { - "type": "string", - "description": "The registered email of the organization." + "lambdaCurrentConfiguration": { + "$ref": "#/definitions/coverResourceDetails" }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The metadata (key/value pair) of the organization. If hierarchy is supported, it will be\nseparated by '/', such as 'metakey/subkey=value'. See https://alphauslabs.github.io/blueapi/\nfor the list of supported attributes." + "lambdaRecommendedConfiguration": { + "$ref": "#/definitions/coverResourceDetails" } - }, - "description": "Org resource definition." + } }, - "ripplePayer": { + "coverLayoutRequests": { "type": "object", "properties": { "id": { - "type": "string", - "description": "The payer account id." - }, - "name": { - "type": "string", - "description": "The payer account name." - }, - "metadata": { - "type": "array", - "items": { - "$ref": "#/definitions/apiKeyValue" - }, - "description": "The attributes (key/value pair) of the account." - }, - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/blueapiapiAccount" - }, - "description": "List of all members under this payer." - } - }, - "description": "Payer resource definition." - }, - "ripplePayerExchangeRate": { - "type": "object", - "properties": { - "payerAccountId": { - "type": "string", - "description": "The payer account Id." + "type": "string" }, - "payerAccountName": { - "type": "string", - "description": "The payer account Name." + "name": { + "type": "string" }, - "exchangeRate": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleExchangeRate" - }, - "description": "The exchange rate." + "url": { + "type": "string" + }, + "params": { + "type": "object" + }, + "hash": { + "type": "string" } - }, - "description": "PayerExchangeRate resource definition." + } }, - "ripplePercentage": { + "coverMemberCostGroup": { "type": "object", "properties": { - "value": { - "type": "number", - "format": "double" + "id": { + "type": "string" }, - "service": { - "$ref": "#/definitions/rippleTargetServiceConfig" + "name": { + "type": "string" }, - "usage": { - "$ref": "#/definitions/rippleTargetUsageConfig" + "description": { + "type": "string" }, - "discounted": { - "type": "boolean" + "image": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "colorTheme": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" } - }, - "title": "percentage" + } }, - "rippleReseller": { + "coverMemberUserData": { "type": "object", "properties": { "id": { - "type": "string", - "description": "reseller id. Generated automatically." + "type": "string" + }, + "name": { + "type": "string" }, "email": { - "type": "string", - "title": "email" + "type": "string" }, - "groupId": { - "type": "string", - "title": "groupId includes `billingInternalId` or `accessGroupId`" + "avatar": { + "type": "string" }, - "groupName": { - "type": "string", - "title": "groupName includes `billingInternalName` or `accessGroupName`" + "icon": { + "type": "string" }, - "groupType": { - "type": "string", - "description": "group type\nRefer to the following for available values\nbilling_group: Billing Group.\naccess_group: Access Group." + "colorTheme": { + "type": "string" }, - "waveStatus": { - "type": "string", - "title": "wave status" + "initial": { + "type": "string" }, - "waveConfig": { + "activated": { + "type": "boolean" + }, + "isAdmin": { + "type": "boolean" + }, + "attributes": { "type": "array", "items": { - "$ref": "#/definitions/rippleResellerConfig" - }, - "title": "wave feature config" + "type": "string" + } }, - "aquaConfig": { + "locale": { + "type": "string" + }, + "timeZone": { + "type": "string" + }, + "registered": { + "type": "string" + }, + "ssoEnabled": { + "type": "boolean" + }, + "mfaEnabled": { + "type": "boolean" + }, + "appTheme": { + "type": "string" + }, + "mainView": { + "type": "string" + }, + "costGroups": { "type": "array", "items": { - "$ref": "#/definitions/rippleResellerConfig" - }, - "title": "aqua feature config" + "type": "object", + "$ref": "#/definitions/coverMemberCostGroup" + } + }, + "updatedAt": { + "type": "string" } } }, - "rippleResellerConfig": { + "coverMigrateEC2Details": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "For Wave\nThe available values are shown below.\n- Dashboard\n`dashboardGraph`: Display graph | Default: true\n`reportFilters`: Display report filters | Default: false\n\n- Usage Reports\n`usageAccount`: Account | Default: true\n`usageAccountGraph`: Display graph | Default: true\n`usageAccountMenuAccountEdit`: Edit account name | Default: false\n`usageAccountMenuBudget`: Display Budget | Default: false\n`usageAccountMenuBudgetEdit`: Edit Budget | Default: false\n`usageAccountMenuFeesFee`: Display fee | Default: false\n`usageAccountMenuFeesCredit`: Display credit | Default: false\n`usageAccountMenuFeesRefund`: Display refund | Default: false\n`usageAccountMenuFeesOtherFees`: Display other fees | Default: false\n`usageReportDownload`: Download report data | Default: true\n`cost_forecast_tab`: Cost Forecast | Default: true\n\n- Cross Tag\n`usageCrosstag`: Cross Tag | Default: true\n`usageCrosstagGraph`: Display graph | Default: true\n\n- Group\n`usageGroup`: Group\n`usageGroupGraph`: Display graph | Default: true\n\n- Cost management\n`riPurchased`: Display purchased RI | Default: true\n`riUtilization`: Display RI Utilization | Default: false\n`riRecommendation`: Display RI Recommendations | Default: false\n`spPurchased`: Display purchased Savings Plans | Default: false\n\n- Other\n`invoice`: Invoice link | Default: false\n`openApi`: API Access Tokens | Default: false\n`usersManagement`: Sub-user management | Default: true\n`invoiceDownloadCsvDiscount`: Enable discount CSV download | Default: false\n`invoiceDownloadCsvMerged`: Enable merged CSV download | Default: false\n`aquaLink`: Aqua link | Default: false\n`waveproReportFilters`: WavePro Report Filters | Default: false\n`budgetalerts`: WavePro Budget Alerts | Default: false\n\nFor Aqua\nThe available values are shown below.\n- Instance Usage Status\n`aqCoverageRatio`: Coverage Ratio | Default: false\n\n- Reservations Management\n`aqRiManagement`: RI Management | Default: false\n`aqSpManagement`: SP Management | Default: false\n\n- Recommendation\n`aqRiSpInstances`: RI/SP Instances | Default: false\n`aqRightSizing`: Right Sizing | Default: false\n`aqScheduling`: Scheduling | Default: false", - "title": "key" + "eC2CurrentDetails": { + "$ref": "#/definitions/coverEC2UpgadeDetails" }, - "value": { - "type": "boolean", - "title": "value" + "ugradeEC2RecommendationDetails": { + "$ref": "#/definitions/coverEC2UpgadeDetails" + }, + "currentCostCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" + }, + "estCostCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" } } }, - "rippleRounding": { + "coverMigrateRDSDetails": { "type": "object", "properties": { - "rounding": { - "$ref": "#/definitions/RoundingRoundingMethod", - "description": "The rounding method." + "rdsDbInstance": { + "$ref": "#/definitions/coverRDSDBInstance" } - }, - "description": "Rounding resource definition." - }, - "rippleTargetServiceConfig": { - "type": "string", - "enum": [ - "ALL" - ], - "default": "ALL", - "description": "Describes the overall config of a [blueapi.api.ripple.MethodConfig]." - }, - "rippleTargetUsageConfig": { - "type": "string", - "enum": [ - "USAGE" - ], - "default": "USAGE", - "description": "Describes the overall config of a [blueapi.api.ripple.MethodConfig]." + } }, - "rippleTierdConfig": { + "coverMigrateRecommendationDetails": { "type": "object", "properties": { - "min": { - "type": "number", - "format": "double" + "migrateEC2Details": { + "$ref": "#/definitions/coverMigrateEC2Details" }, - "max": { + "migrateRDSDetails": { + "$ref": "#/definitions/coverMigrateRDSDetails" + }, + "estimatedMonthlyCost": { "type": "number", "format": "double" }, - "value": { + "estimatedMonthlySavings": { "type": "number", "format": "double" } - }, - "title": "tired config" + } }, - "rippleTieredPercentage": { + "coverOptimizationRecommendationSummary": { "type": "object", "properties": { - "tiredConfig": { + "potentialSavings": { "type": "array", "items": { - "$ref": "#/definitions/rippleTierdConfig" - } + "type": "number", + "format": "double" + }, + "title": "Potential savings per month" }, - "service": { - "$ref": "#/definitions/rippleTargetServiceConfig" + "action": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The recommended action to perform to achieve potential savings" + } + } + }, + "coverOtherRecommendationDetails": { + "type": "object", + "properties": { + "highErrorRatesLambda": { + "$ref": "#/definitions/coverHighErrorRatesLambda" + }, + "s3IncompleteMultiPartUploadAbortConfiguration": { + "$ref": "#/definitions/coverS3IncompleteMultiPartUploadAbortConfiguration" + }, + "status": { + "type": "string" + } + } + }, + "coverPurchaseRIRecommendationDetails": { + "type": "object", + "properties": { + "ec2Options": { + "$ref": "#/definitions/apicoverEC2Details" + }, + "elasticCacheOptions": { + "$ref": "#/definitions/coverElasticCacheDetails" + }, + "esOptions": { + "$ref": "#/definitions/coverESDetails" + }, + "rdsOptions": { + "$ref": "#/definitions/apicoverRDSDetails" + }, + "redshiftOptions": { + "$ref": "#/definitions/apicoverRedshiftDetails" + }, + "memoryDbOptions": { + "$ref": "#/definitions/apicoverMemoryDBDetails" + }, + "recommendedNormalizedUnits": { + "type": "integer", + "format": "int32" + }, + "recommendedNumberOfInstanceToPurchase": { + "type": "integer", + "format": "int32" }, - "usage": { - "$ref": "#/definitions/rippleTargetUsageConfig" + "paymentOption": { + "type": "string" }, - "discounted": { - "type": "boolean" - } - }, - "title": "tired percentage" - }, - "rippleTieredPrice": { - "type": "object", - "properties": { - "tiredConfig": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleTierdConfig" - } + "offeringClass": { + "type": "string" }, - "service": { - "$ref": "#/definitions/rippleTargetServiceConfig" + "term": { + "type": "string" }, - "usage": { - "$ref": "#/definitions/rippleTargetUsageConfig" + "upfrontCost": { + "type": "number", + "format": "double" }, - "discounted": { - "type": "boolean" - } - }, - "title": "tired price" - }, - "rippleUntaggedGroup": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The unique id of the untagged group.\nAutomatically generated." + "instanceType": { + "type": "string" }, - "name": { - "type": "string", - "title": "Required. The unique name of the untagged group. This value can be up to 60", - "required": [ - "name" - ] + "platform": { + "type": "string" }, - "assigned": { - "$ref": "#/definitions/rippleAssigned", - "title": "Optional. The assigned that rules set for untagged groups" + "region": { + "type": "string" }, - "billingGroups": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleAssignedBillingGroup" - }, - "description": "Optional." + "sizeFlexEligible": { + "type": "boolean" }, - "created": { - "type": "string", - "description": "Output only. The time when the `UntaggedGroup` was created.", - "readOnly": true + "tenancy": { + "type": "string" }, - "updated": { - "type": "string", - "description": "Output only. The time when the `UntaggedGroup` was last updated.", - "readOnly": true + "currentGeneration": { + "type": "boolean" + }, + "estOutcomeFromPurchaseRIRecommendation": { + "$ref": "#/definitions/coverEstOutcomeFromPurchaseRIRecommendation" } - }, - "description": "UntaggedGroup resource definition.", - "required": [ - "name" - ] + } }, - "rippleVendorPayerExchangeRate": { + "coverRDSDBInstance": { "type": "object", "properties": { - "aws": { - "type": "array", - "items": { - "$ref": "#/definitions/ripplePayerExchangeRate" - } + "currentDetails": { + "$ref": "#/definitions/coverRDSDBInstanceDetails" }, - "gcp": { - "type": "array", - "items": { - "$ref": "#/definitions/ripplePayerExchangeRate" - } + "recommendationDetails": { + "$ref": "#/definitions/coverRDSDBInstanceDetails" }, - "azure": { + "cpuUtilization": { "type": "array", "items": { - "$ref": "#/definitions/ripplePayerExchangeRate" + "type": "object", + "$ref": "#/definitions/apicoverUtilizationData" } } - }, - "description": "VendorPayerExchangeRate resource definition." - }, - "rippleYearMonth": { - "type": "object", - "properties": { - "yearMonth": { - "type": "string", - "description": "List of the yearmonth." - } - }, - "description": "YearMonth resource definition." + } }, - "rippleaccountInvoiceLayout": { + "coverRDSDBInstanceDetails": { "type": "object", "properties": { - "marketplace": { - "type": "string", - "title": "The marketplace is name of marketplace usage.\nex)ACCT_AWS_MARKETPLACE: \"Marketplace利用料金\"" - }, - "marketplaceFee": { - "type": "string", - "title": "The marketplace is name of marketplace fee usage.\nex)ACCT_AWS_MARKETPLACE_FEES: \"Marketplace 一時金 ご利用金額\"" - }, - "supportFee": { - "type": "string", - "title": "The supportFee is name of support fee usage.\nex)ACCT_AWS_SUPPORT_BUSINESS: \"AWS保守サービス利用料金\"" - }, - "accountUsage": { - "type": "string", - "title": "The accountUsage is name of account total usage.\nex)ACCT_AWS_USAGE: \"利用料合計\"" + "instanceClass": { + "type": "string" }, - "accountUsageOnly": { - "type": "string", - "title": "The accountUsageOnly is name of account usage(Only related to vendor).\nex)ACCT_AWS_USAGEONLY: \"AWS利用料(MarketPlace利用料除く)\"" + "costCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" } - }, - "description": "WORK-IN-PROGRESS: accountInvoiceLayout resource definition." + } }, - "ripplebodyInvoiceLayout": { + "coverRDSDBInstanceStorage": { "type": "object", "properties": { - "hideSpecificTotalLines": { - "type": "array", - "items": { - "type": "string" - }, - "title": "The hideSpecificTotalLines is name of hide specific total lines.\nex)BODY_HIDE_SPECIFIC_TOTAL_LINES: [\"removeThisTextToApply _AWS_SUPPORT_BUSINESS\"]" - }, - "serviceDiscountDetail": { - "type": "boolean", - "title": "The serviceDiscountDetail is setting for service discount detail.\nex)BODY_SERVICE_DISCOUNT_DETAIL: true" - }, - "usageDiscount": { - "type": "boolean", - "title": "The usageDiscount is setting for usage discount.\nex)BODY_USAGE_DISCOUNT: true" + "currentDetails": { + "$ref": "#/definitions/coverRDSDBInstanceStorageDetails" }, - "hideMarketplace": { - "type": "boolean", - "title": "The hideMarketplace is setting for hide marketplace.\nex)BODY_HIDE_MARKETPLACE: true" + "recommendationDetails": { + "$ref": "#/definitions/coverRDSDBInstanceStorageDetails" } - }, - "description": "WORK-IN-PROGRESS: bodyInvoiceLayout resource definition." + } }, - "ripplefooterInvoiceLayout": { + "coverRDSDBInstanceStorageDetails": { "type": "object", "properties": { - "attention": { - "type": "string", - "title": "The attention is name of attention.\nex)FT_ATTENTION: null" - }, - "invoiceBank": { - "type": "boolean", - "title": "The invoiceBank is setting for invoice bank.\nex)FT_INVOICE_BANK: true" + "allocatedStorageInGb": { + "type": "number", + "format": "double" }, - "invoiceBankContent": { - "type": "string", - "title": "The invoiceBankContent is information of invoice bank content.\nex)FT_INVOICE_BANK_CONTENT: \"振込手数料はご負担ください。\"" + "iops": { + "type": "number", + "format": "double" }, - "invoiceMemo": { - "type": "boolean", - "title": "The invoiceMemo is setting for invoice memo.\nex)FT_INVOICE_MEMO: true" + "storageThroughput": { + "type": "number", + "format": "double" }, - "invoiceRemarks": { - "type": "boolean", - "title": "The invoiceRemarks is setting for invoice remarks.\nex)FT_INVOICE_REMARKS: true" + "storageType": { + "type": "string" }, - "invoiceDiscountZero": { - "type": "boolean", - "title": "The invoiceDiscountZero is setting for invoice discount.\nex)FT_INVOICE_DISCOUNT_ZERO: true" + "costCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" } - }, - "description": "WORK-IN-PROGRESS: footerInvoiceLayout resource definition." + } }, - "rippleheaderInvoiceLayout": { + "coverRDSOptions": { "type": "object", "properties": { - "billingAddress": { - "type": "string", - "title": "The billingAddress is information of billing address.\nex)HEAD_BILLINGADDRESS: billing\"" - }, - "billingGroupName": { - "type": "boolean", - "title": "The billingGroupName is setting for billing group name.\nex)HEAD_BILLINGGROUPNAME: true" - }, - "billingGroupStaff": { - "type": "boolean", - "title": "The billingGroupStaff is setting for billing froup staff.\nex)HEAD_BILLINGGROUPSTAFF: true" - }, - "companyAddress": { - "type": "boolean", - "title": "The companyAddress is setting for company address.\nex)HEAD_COMPANY_ADDRESS: true" - }, - "companyName": { - "type": "boolean", - "title": "The companyName is setting for company name.\nex)HEAD_COMPANY_NAME: true" + "dbEdition": { + "type": "string" }, - "invoiceDate": { - "type": "boolean", - "title": "The invoiceDate is setting for invoice date.\nex)HEAD_INVOICE_DATE: true" + "dbEngine": { + "type": "string" }, - "invoiceDue": { - "type": "boolean", - "title": "The invoiceDue is setting for invoice due.\nex)HEAD_INVOICE_DUE: true" + "deploymentOptions": { + "type": "string" }, - "invoiceNo": { - "type": "boolean", - "title": "The invoiceNo is setting for invoice No.\nex)HEAD_INVOICE_NO: true" + "family": { + "type": "string" }, - "invoiceQuantity": { - "type": "string", - "title": "The invoiceQuantity is information of invoice quantity.\nex)HEAD_INVOICE_QUANTITY: \"1ヶ月分\"" + "instanceType": { + "type": "string" }, - "invoiceSummary": { - "type": "boolean", - "title": "The invoiceSummary is setting for invoice summary.\nex)HEAD_INVOICE_SUMMARY: true" + "licenseModel": { + "type": "string" + } + } + }, + "coverRDSRightsizingDetails": { + "type": "object", + "properties": { + "rdsDbInstance": { + "$ref": "#/definitions/coverRDSDBInstance" }, - "invoiceTitle": { - "type": "string", - "title": "The invoiceTitle is information of invoice title.\nex)HEAD_INVOICE_TITLE: \"AWSご利用金額\"" + "rdsDbInstanceStorage": { + "$ref": "#/definitions/coverRDSDBInstanceStorage" + } + } + }, + "coverRDSUpgradeDetails": { + "type": "object", + "properties": { + "rdsDbInstance": { + "$ref": "#/definitions/coverRDSDBInstance" }, - "issueDateText": { - "type": "string", - "title": "The issueDateText is information of issue date text.\nex)HEAD_ISSUE_DATE_TEXT: \"tested message\"" + "rdsDbInstanceStorage": { + "$ref": "#/definitions/coverRDSDBInstanceStorage" + } + } + }, + "coverRecommendationDetail": { + "type": "object", + "properties": { + "recommendation": { + "type": "string" }, - "mspInfo": { - "type": "boolean", - "title": "The mspInfo is setting for msp information.\nex)HEAD_MSPINFO: true" + "recommendedResourceType": { + "type": "string" }, - "mspLogo": { - "type": "boolean", - "title": "The mspLogo is setting for msp logo.\nex)HEAD_MSPLOGO: true" + "estimatedCost": { + "type": "number", + "format": "double" }, - "mspStamp": { - "type": "boolean", - "title": "The mspStamp is setting for msp stamp.\nex)HEAD_MSPSTAMP: true" + "estimatedSavings": { + "type": "number", + "format": "double" }, - "paidText": { - "type": "string", - "title": "The paidText is information of paid text.\nex)HEAD_PAID_TEXT: \"paid message\"" + "region": { + "type": "string" } - }, - "description": "WORK-IN-PROGRESS: headerInvoiceLayout resource definition." + } }, - "ripplereportInvoiceLayout": { + "coverRedshiftOptions": { "type": "object", "properties": { - "sectionEnable": { - "type": "string", - "title": "The sectionEnable is setting for section.\nex)REPORT_SECTION_ENABLE: \"{ \\\"ja\\\": true, \\\"en\\\": true }\"" + "family": { + "type": "string" + }, + "nodeType": { + "type": "string" } - }, - "description": "WORK-IN-PROGRESS: headerInvoiceLayout resource definition." + } }, - "rippletotalInvoiceLayout": { + "coverRegistrationStatus": { "type": "object", "properties": { - "marketplace": { - "type": "string", - "title": "The totalMarketplace is name of marketplace total usage.\nex)ALL_AWS_MARKETPLACE: \"\"" + "apiAccess": { + "type": "boolean" }, - "marketplaceFee": { - "type": "string", - "title": "The totalMarketplaceFee is name of marketplace total fee usage.\nex)ALL_AWS_MARKETPLACE_FEES: \"\"" + "cloudwatchStreaming": { + "type": "boolean" }, - "vendorTotal": { - "type": "string", - "title": "The vendorTotal is name of vendor total usage.\nex)ALL_AWS_TOTAL: \"\"" + "curExport": { + "type": "boolean" }, - "vendorUsageOnly": { - "type": "string", - "title": "The vendorUsageOnly is name of vendor usage only.\nex)ALL_AWS_USAGEONLY: \"\"" + "payer": { + "type": "boolean" }, - "vendorlUsage": { - "type": "string", - "title": "The vendorTotalUsage is name of vendor total usage.\nex)ALL_AWS_USAGE: \"AWS利用料\"" + "stackSet": { + "type": "boolean" }, - "customUsage": { - "type": "string", - "title": "The customTotalUsage is name of custom total usage.\nex)ALL_CUSTOM_USAGE: \"追加費用合計\"" + "transferAccount": { + "type": "boolean" }, - "discount": { - "type": "string", - "title": "The discount is name of discount.\nex)ALL_DISCOUNT: \"\"" + "isDataAvailable": { + "type": "boolean" + } + } + }, + "coverResourceData": { + "type": "object", + "properties": { + "vendor": { + "type": "string" }, - "discountDiff": { - "type": "string", - "title": "The discountTotalDiff is name of discount total diff.\nex)ALL_DISCOUNT_DIFF: \"値引後\"" + "accountId": { + "type": "string" }, - "subTotal": { - "type": "string", - "title": "The subTotal is name of sub total.\nex)ALL_SUB_TOTAL: \"\"" + "resourceId": { + "type": "string" }, - "substitutionFee": { - "type": "string", - "title": "The substitutionTotalFee is name of substitution total fee.\nex)ALL_SUBSTITUTION: \"請求代行手数料\"" + "region": { + "type": "string" }, - "supportFee": { - "type": "string", - "title": "The supportTotalFee is name of support total fee.\nex)ALL_SUPPORT_BUSINESS: \"サポートビジネス費用\"" + "resourceType": { + "type": "string" }, - "tax": { - "type": "string", - "title": "The tax is name of tax.\nex)ALL_TAX: \"消費税\"" + "recommendationDetail": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverRecommendationDetail" + } }, - "taxDiff": { - "type": "string", - "title": "The taxDiff is name of tax diff.\nex)ALL_TAX_DIFF: null" + "currentCost": { + "type": "number", + "format": "double" }, - "taxFree": { - "type": "string", - "title": "The taxFree is name of tax free.\nex)ALL_TAX_FREE: \"\"" + "resourceName": { + "type": "string" }, - "totalExchangeRate": { - "type": "string", - "title": "The totalExchangeRate is name of total exchange rate.\nex)ALL_TOTAL_EXCHANGE: \"日本円換算後($1=JPY)\"" + "consumedService": { + "type": "string" }, - "totalUsage": { - "type": "string", - "title": "The totalUsage is name of total usage.\nex)ALL_USAGE_TOTAL: \"小計\"" + "maxCpuUtilization": { + "type": "number", + "format": "double" }, - "total": { - "type": "string", - "title": "The total is name of total.\nex)ALL_TOTAL: \"\"" - } - }, - "description": "WORK-IN-PROGRESS: totalInvoiceLayout resource definition." - }, - "v1AbcAccount": { - "type": "object", - "properties": { - "accountId": { + "maxStorageUtilization": { + "type": "number", + "format": "double" + }, + "maxMemoryUtilization": { + "type": "number", + "format": "double" + }, + "networkCapacity": { "type": "string" }, - "accountName": { + "status": { "type": "string" } } }, - "v1AbcBillingGroup": { + "coverResourceDetails": { "type": "object", "properties": { - "arn": { + "architecture": { "type": "string" }, - "name": { - "type": "string" + "memorysizeInMB": { + "type": "number", + "format": "double" }, - "creationTime": { + "platform": { "type": "string" }, - "description": { - "type": "string" + "vCpu": { + "type": "integer", + "format": "int32" }, - "primaryAccountId": { - "type": "string" + "costCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" + } + } + }, + "coverResourcesCombinations": { + "type": "object", + "properties": { + "awsOptions": { + "$ref": "#/definitions/coverCostGroupAwsOptions", + "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." }, - "size": { - "type": "string" + "azureOptions": { + "$ref": "#/definitions/coverCostGroupAzureOptions", + "description": "Optional. Valid only for the `azure` vendor. Azure-specific options." }, - "status": { - "type": "string" + "gcpOptions": { + "$ref": "#/definitions/coverCostGroupGcpOptions", + "description": "Optional. Valid only for the `gcp` vendor. GCP-specific options." + }, + "azurecspOptions": { + "$ref": "#/definitions/coverCostGroupAzureCspOptions", + "description": "Optional. Valid only for the `azurecsp` vendor. AzureCSP-specific options." } } }, - "v1AccountAccess": { + "coverResourcesFilter": { "type": "object", "properties": { - "target": { - "type": "string", - "description": "The queried target account." + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "coverResult": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "accountName": { - "type": "string", - "title": "The account name" + "name": { + "type": "string" + } + } + }, + "coverRiRecommendationDetails": { + "type": "object", + "properties": { + "accountId": { + "type": "string" }, - "accountType": { - "type": "string", - "description": "The account type. Payer or linked account." + "recommendedNumberOfInstanceToPurchase": { + "type": "string" }, - "payerId": { - "type": "string", - "description": "The payer account of the account." + "currencyCode": { + "type": "string" }, - "roleArn": { - "type": "string", - "description": "The role ARN that provides the cross-account access permissions." + "ec2Options": { + "$ref": "#/definitions/coverEC2Options" }, - "externalId": { - "type": "string", - "description": "The external id for this role." + "elasticCacheOptions": { + "$ref": "#/definitions/coverElasticCacheOptions" }, - "stackId": { - "type": "string", - "description": "The id of the CloudFormation stack deployed in the target account." + "esOptions": { + "$ref": "#/definitions/coverESOptions" }, - "stackRegion": { - "type": "string", - "description": "The region where the stack is deployed." + "rdsOptions": { + "$ref": "#/definitions/coverRDSOptions" }, - "templateUrl": { - "type": "string", - "description": "The latest template used to deploy the stack." + "redshiftOptions": { + "$ref": "#/definitions/coverRedshiftOptions" }, - "bucketName": { - "type": "string", - "title": "The s3 bucket name" + "region": { + "type": "string" }, - "prefix": { - "type": "string", - "title": "Report path prefix" + "sizeFlexEligible": { + "type": "boolean" }, - "reportName": { - "type": "string", - "title": "The report name" + "currentGeneration": { + "type": "boolean" }, - "registrationStatus": { - "$ref": "#/definitions/coverRegistrationStatus", - "title": "The status of registration for CUR export, API access and Cloudwatch streaming" + "upfrontCost": { + "type": "number", + "format": "double" }, - "status": { - "type": "string", - "description": "This can be `latest`, `outdated`, or some error information." + "estimatedMonthlySavings": { + "type": "number", + "format": "double" + } + } + }, + "coverRiRecommendationResults": { + "type": "object", + "properties": { + "riSummary": { + "$ref": "#/definitions/coverRiSummary" }, - "lastUpdated": { - "type": "string", - "description": "The last updated timestamp, RFC3339 UTC." + "riRecommendationDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverRiRecommendationDetails" + } } - }, - "description": "Response message for GetAccountAccess, CreateAccountAccess rpc." + } }, - "v1AccountInvoiceServiceDiscounts": { + "coverRiSummary": { "type": "object", "properties": { - "id": { + "totalPurchaseRecommendations": { "type": "string", - "description": "Service discount id." + "format": "int64" }, - "account": { - "type": "string", - "description": "Account id." + "estimatedMonthlySavings": { + "type": "number", + "format": "double" }, - "serviceDiscounts": { - "$ref": "#/definitions/apiripplev1InvoiceServiceDiscounts", - "description": "service discount infomation." + "estimatedSavingsVSOnDemandRates": { + "type": "number", + "format": "double" } - }, - "description": "Streaming response message for the AccountInvoiceServiceDiscounts rpc." + } }, - "v1AccountOptions": { + "coverRightSizingRecommendationDetails": { "type": "object", "properties": { - "aws": { - "$ref": "#/definitions/v1RegisterAccounts", - "title": "AWS register accounts" + "ec2RightSizingDetails": { + "$ref": "#/definitions/coverEC2rightSizingDetails" }, - "gcp": { - "$ref": "#/definitions/v1RegisterAccounts", - "title": "GCP register accounts" + "lambdaRightSizingRecommendationDetails": { + "$ref": "#/definitions/coverLambdaRightSizingRecommendationDetails" }, - "azure": { - "$ref": "#/definitions/v1RegisterAccounts", - "title": "Azure register accounts" + "ebsRightSizingRecommendationDetails": { + "$ref": "#/definitions/apicoverEBSDetails" + }, + "ecsRightSizingRecommendationDetails": { + "$ref": "#/definitions/coverEcsRightSizingRecommendationDetails" + }, + "rdsRightSizingRecommendationDetails": { + "$ref": "#/definitions/coverRDSRightsizingDetails" + }, + "estimatedMonthlyCost": { + "type": "number", + "format": "double" + }, + "estimatedMonthlySavings": { + "type": "number", + "format": "double" } - }, - "description": "Account options definition." + } }, - "v1AccountServiceDiscounts": { + "coverS3IncompleteMultiPartUploadAbortConfiguration": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Service discount id." + "bucketArn": { + "type": "string" }, - "accountId": { - "type": "string", - "description": "Account id." + "bucketName": { + "type": "string" + }, + "lifeCycleRuleForDeletingIncompleteMCU": { + "type": "string" + }, + "daysAfterInitiation": { + "type": "string" } } }, - "v1AccountServiceDiscountsExport": { + "coverSPCurrentUtilizationDetails": { "type": "object", "properties": { - "data": { - "$ref": "#/definitions/v1ExportData" + "aveCoverage": { + "type": "number", + "format": "double" + }, + "aveHourOnDemandSpend": { + "type": "number", + "format": "double" + }, + "maxHourlyOndemandSpend": { + "type": "number", + "format": "double" + }, + "minHourlyOndemandSpend": { + "type": "number", + "format": "double" + }, + "existingHourlyCommitment": { + "type": "number", + "format": "double" + }, + "estOnDemandCostWithHourlyCommitment": { + "type": "number", + "format": "double" } - }, - "description": "AccountServiceDiscountsExport resource definition.\n\ndata is [blueapi.api.ripple.v1.ExportData]\n\ncontent. Base64 encoded value.\nFor example,\ncontent :`YmlsbGluZ0dyb3VwSWQsYmlsbGluZ0dyb3VwTmFtZSxWZW5kb3IsQWNjb3VudElkLEFjY291bnROYW1lLFNlcnZpY2UgUHJlbWl1bXMmRGlzY291bnRzDQo=`\nDecoding this value by en, get `billingGroupId,billingGroupName,Vendor,AccountId,AccountName,Service Premiums\u0026Discounts`.\ncontent :`6KuL5rGC44Kw44Or44O844OXSUQs6KuL5rGC44Kw44Or44O844OX5ZCNLOODmeODs+ODgOODvCzjgqLjgqvjgqbjg7Pjg4hJRCzjgqLjgqvjgqbjg7Pjg4jlkI0s44K144O844OT44K55Ymy5byV44O75Ymy5aKX6Kit5a6aDQo=`\nDecoding this value by ja, get `請求グループID,請求グループ名,ベンダー,アカウントID,アカウント名,サービス割引・割増設定`.\n\ndownloadedRows. Downloaded content lines.\n\ntotalRows.Total of content lines." + } }, - "v1AccountUsageDetails": { + "coverSavingsPlanRecommendationDetails": { "type": "object", "properties": { - "id": { + "currencyCode": { "type": "string" }, - "orgId": { - "type": "string" + "hourlyCommitmentToPurchase": { + "type": "number", + "format": "double" }, - "vendor": { + "offeringId": { "type": "string" }, - "account": { + "paymentOption": { "type": "string" }, - "date": { + "savingsPlanType": { "type": "string" }, - "productCode": { + "term": { "type": "string" }, - "serviceCode": { - "type": "string" + "upfrontCost": { + "type": "number", + "format": "double" }, - "region": { - "type": "string" + "currentUtilizationDetails": { + "$ref": "#/definitions/coverSPCurrentUtilizationDetails" }, - "zone": { - "type": "string" + "estOutcomeFromSPRecommendation": { + "$ref": "#/definitions/coverEstOutcomeFromSPRecommendation" + } + } + }, + "coverSavingsSummary": { + "type": "object", + "properties": { + "totalRecommendations": { + "type": "string", + "format": "int64", + "title": "Total number of detected recommendation for a given period" }, - "usageType": { - "type": "string" + "totalExecutedRecommendations": { + "type": "string", + "format": "int64", + "title": "Total number of executed recommendations for a given period" + }, + "totalEstimatedSavings": { + "type": "number", + "format": "double", + "title": "Total of estimated savings for a given period, as a result of executed recommendations" + }, + "totalEstimatedCost": { + "type": "number", + "format": "double", + "title": "Total of estimated cost for a given period, as a result of executed recommendations" + }, + "percentageSavings": { + "type": "number", + "format": "double", + "title": "Total of estimated percentage savings for a given period, as a result of executed recommendations" + }, + "mostEffectiveRecommendation": { + "type": "string", + "title": "The most effective recommendation" + }, + "mostEffectiveRecommendationEstimatedSavings": { + "type": "number", + "format": "double", + "title": "The most effective recommendation savings" }, - "instanceType": { - "type": "string" + "mostEffectiveRecommendationEstimatedCost": { + "type": "number", + "format": "double", + "title": "The most effective recommendation cost" }, - "operation": { - "type": "string" + "mostEffectiveRecommendationPercentageSavings": { + "type": "number", + "format": "double", + "title": "The most effective recommendation percentage savings" + } + } + }, + "coverSideMenu": { + "type": "object", + "properties": { + "favorite": { + "type": "array", + "items": { + "type": "string" + } }, - "invoiceId": { - "type": "string" + "isOpenedAdmin": { + "type": "boolean" }, - "description": { - "type": "string" + "isOpenedFeatures": { + "type": "boolean" }, - "resourceId": { + "isOpenedCostGroups": { + "type": "boolean" + } + } + }, + "coverSideMenuState": { + "type": "object", + "properties": { + "key": { "type": "string" }, - "tags": { + "value": { + "type": "boolean" + } + } + }, + "coverSpRecommendationDetails": { + "type": "object", + "properties": { + "accountId": { "type": "string" }, - "costCategories": { + "currencyCode": { "type": "string" }, - "usageAmount": { + "hourlyCommitmentToPurchase": { "type": "number", "format": "double" }, - "trueUnblendedCost": { + "estimatedMonthlySavingsAmount": { "type": "number", "format": "double" }, - "unblendedCost": { + "estimatedSavingsPercentage": { "type": "number", "format": "double" }, - "effectiveCost": { + "estimatedAverageCoverage": { "type": "number", "format": "double" }, - "amortizedCost": { + "estimatedAverageUtilization": { "type": "number", "format": "double" + } + } + }, + "coverSpRecommendationResults": { + "type": "object", + "properties": { + "spSummary": { + "$ref": "#/definitions/coverSpSummary" }, - "publicOnDemandCost": { + "spRecommendationDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverSpRecommendationDetails" + } + } + } + }, + "coverSpSummary": { + "type": "object", + "properties": { + "currentOnDemandSpend": { "type": "number", "format": "double" }, - "unusedAmortizedCost": { + "estimatedMonthlySpend": { "type": "number", "format": "double" }, - "lastUpdate": { - "type": "string" - }, - "splitStatus": { - "type": "string" - }, - "isAllocated": { - "type": "boolean" - }, - "isApplied": { - "type": "boolean" + "estimatedMonthlySavings": { + "type": "number", + "format": "double" }, - "source": { - "type": "string" + "totalRecommendationCount": { + "type": "string", + "format": "int64" } - }, - "description": "Response message for SimulateAccountCostAllocator rpc." + } }, - "v1ActivateUserRequest": { + "coverStopEC2InstanceRecommendationDetails": { "type": "object", "properties": { - "userId": { - "type": "string" - }, - "previousPassword": { - "type": "string" - }, - "password": { + "instanceId": { "type": "string" }, - "name": { + "instanceType": { "type": "string" }, - "locale": { - "type": "string" + "AveCpuUtilizationBy14Day": { + "type": "number", + "format": "double" }, - "email": { - "type": "string", - "description": "Email. For auth0 email validation." + "AveNetworkIOBy14Day": { + "type": "number", + "format": "double" }, - "isAuth0": { - "type": "boolean" + "cpuUtilization": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apicoverUtilizationData" + } }, - "auth0UserId": { - "type": "string", - "description": "Auth0 user Id. For updating of user metadata." - } - }, - "title": "Request message for ActivateUser" - }, - "v1ActivateUserResponse": { - "type": "object", - "properties": { - "userData": { - "$ref": "#/definitions/coverUserData" - } - }, - "title": "Response message for ActivateUser" - }, - "v1AddFavoriteRequest": { - "type": "object", - "properties": { - "viewId": { - "type": "string", - "description": "Required. View Id." + "netWorkIO": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apicoverUtilizationData" + } } - }, - "title": "Request message for AddFavorite" + } }, - "v1AddFavoriteResponse": { + "coverStopInstanceRecommendationDetails": { "type": "object", "properties": { - "viewId": { - "type": "string" + "stopEC2InstanceRecommendationDetails": { + "$ref": "#/definitions/coverStopEC2InstanceRecommendationDetails" + }, + "stopRDSRecommendationDetails": { + "$ref": "#/definitions/coverStopRDSDetails" } - }, - "title": "Response message for AddFavorite" + } }, - "v1AddInfotoMarketplaceRequest": { + "coverStopRDSDetails": { "type": "object", "properties": { - "customerIdentifier": { - "type": "string" + "rdsDBInstance": { + "$ref": "#/definitions/coverRDSDBInstance" } } }, - "v1AddInfotoMarketplaceResponse": { - "type": "object" - }, - "v1AddMpnSettingRequest": { + "coverThreshold": { "type": "object", "properties": { - "mpnId": { + "type": { "type": "string", - "title": "Partner Id / MPN Id" + "title": "exact or percentage" + }, + "value": { + "type": "number", + "format": "float", + "title": "actual value of threshold" } - }, - "title": "Request message for AddMpnSetting" + } }, - "v1AddPartnerCenterCredentialsRequest": { + "coverUnitCostData": { "type": "object", "properties": { - "accountId": { - "type": "string", - "title": "The account Id" + "id": { + "type": "string" }, - "applicationId": { - "type": "string", - "title": "Application Id" + "unitName": { + "type": "string" }, - "secretKey": { - "type": "string", - "title": "Secret Key" + "description": { + "type": "string" + }, + "unitItems": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverUnitItem" + } + }, + "createdBy": { + "type": "string" + }, + "createTime": { + "type": "string" + }, + "lastUpdatedAt": { + "type": "string" } - }, - "title": "Request message for AddPartnerCenterCredentials" + } }, - "v1AddSideMenuFavoriteRequest": { + "coverUnitItem": { "type": "object", "properties": { - "viewId": { - "type": "string", - "description": "Required. View Id." - }, - "menuItemId": { + "itemName": { "type": "string" + }, + "distribution": { + "type": "number", + "format": "double" + }, + "dedicatedResourcesCombination": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverResourcesFilter" + } + }, + "dedicatedResourcesCombinations": { + "$ref": "#/definitions/coverResourcesCombinations" } - }, - "title": "Request message for AddSideMenuFavorite" + } }, - "v1AddSideMenuFavoriteResponse": { + "coverUpgradeEC2Details": { "type": "object", "properties": { - "viewId": { - "type": "string" + "eC2CurrentDetails": { + "$ref": "#/definitions/coverEC2UpgadeDetails" + }, + "ugradeEC2RecommendationDetails": { + "$ref": "#/definitions/coverEC2UpgadeDetails" + }, + "currentCostCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" + }, + "estimatedCostCalculation": { + "$ref": "#/definitions/apicoverCostCalculation" } - }, - "title": "Response message for AddSideMenuFavorite" + } }, - "v1AllocationItem": { + "coverUpgradeRecommendationDetails": { "type": "object", "properties": { - "vendor": { - "type": "string" - }, - "month": { - "type": "string" + "upgradeEC2Details": { + "$ref": "#/definitions/coverUpgradeEC2Details" }, - "product": { - "type": "string" + "upgradeEBSDetails": { + "$ref": "#/definitions/apicoverEBSDetails" }, - "account": { - "type": "string" + "upgradeRDSDetails": { + "$ref": "#/definitions/coverRDSUpgradeDetails" }, - "type": { - "type": "string" + "estimatedMonthlyCost": { + "type": "number", + "format": "double" }, - "cost": { + "estimatedMonthlySavings": { "type": "number", "format": "double" } - }, - "description": "Response message wrapper for cost group allocations." + } }, - "v1Allocator": { + "coverUserData": { "type": "object", "properties": { - "type": { - "type": "string", - "description": "Required. The type where the adjustments are to be applied. This can support `account`, `costGroup` and `payer`." + "id": { + "type": "string" }, - "value": { - "type": "string", - "description": "Required. The value for the specified attribute. `accountId` for account, `costGroupId` for cost group, `payerId` for payer and account name regex for account name." + "name": { + "type": "string" }, - "formula": { - "type": "string", - "description": "Required. The formula to use to compute the value of the allocation on an attribute. If left blank, allocation is based on usage." + "email": { + "type": "string" }, - "months": { - "type": "string", - "format": "int64", - "description": "Optional. The number of months the adjustment is to be applied. If set, it will divide the cost equally to the number of months." - } - } - }, - "v1AnomalyAlertData": { - "type": "object", - "properties": { - "id": { + "avatar": { "type": "string" }, - "orgId": { + "icon": { "type": "string" }, - "name": { + "colorTheme": { "type": "string" }, - "alertEnabled": { + "initial": { + "type": "string" + }, + "activated": { "type": "boolean" }, - "frequency": { - "type": "string" + "isAdmin": { + "type": "boolean" }, - "costGroupId": { - "$ref": "#/definitions/coverAlertCostGroup" + "attributes": { + "type": "array", + "items": { + "type": "string" + } }, - "channels": { - "$ref": "#/definitions/coverAlertChannels" - } - } - }, - "v1AnomalyData": { - "type": "object", - "properties": { - "account": { + "locale": { "type": "string" }, - "costGroupId": { + "timeZone": { "type": "string" }, - "vendor": { + "registered": { "type": "string" }, - "product": { + "ssoEnabled": { + "type": "boolean" + }, + "mfaEnabled": { + "type": "boolean" + }, + "appTheme": { "type": "string" }, - "date": { + "mainView": { "type": "string" }, - "totalCost": { - "type": "number", - "format": "float" + "costGroups": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverMemberCostGroup" + } }, - "isAnomaly": { - "type": "boolean", - "title": "The value will be true if there is an anomaly for a specific account and product" + "createdBy": { + "$ref": "#/definitions/coverMemberUserData" }, - "lowerLimit": { - "type": "number", - "format": "float", - "title": "Lower bound. If the total cost is lesser than the lowerlimit it is considered as anomaly" + "updatedAt": { + "type": "string" }, - "upperLimit": { - "type": "number", - "format": "float", - "title": "Upper bound. If the total cost is greater than the upperlimit it is considered as anomaly" + "orgId": { + "type": "string" }, - "anomalyCost": { - "type": "number", - "format": "float", - "title": "The difference of the total cost and the upperlimit or lowerlimit if it is anomamly, if not anomaly then anomaly cost is 0" + "isProfilingDone": { + "type": "boolean" }, - "anomalyProbability": { - "type": "number", - "format": "float", - "title": "How many percentage does the data is considered anomaly" - } - }, - "title": "Message response for anomaly detection" - }, - "v1AssetsSummary": { - "type": "object", - "properties": { - "date": { - "type": "string", - "title": "Format is `yyyy-mm`" + "passwordLastRenewed": { + "type": "string" }, - "vendor": { - "type": "string", - "description": "Only `aws` is supported for now." + "isOwner": { + "type": "boolean" }, - "totalResources": { - "type": "string", - "format": "int64", - "title": "Total number of resources" + "isAuth0": { + "type": "boolean" }, - "totalCost": { - "type": "number", - "format": "double", - "description": "Total Cost incurred for the resources on specified month." + "readCostGroupCreationPopup": { + "type": "boolean" + }, + "useNewCostGroupCreationUI": { + "type": "boolean" + }, + "autoTimeZone": { + "type": "boolean" } } }, - "v1AssignCostGroupMemberRequest": { + "coverViewData": { "type": "object", "properties": { - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." + "id": { + "type": "string" }, - "userId": { - "type": "string", - "description": "Required. User Id." - } - }, - "title": "Request message for AssignCostGroupMember" - }, - "v1AssignCostGroupMemberResponse": { - "type": "object", - "properties": { - "costGroupId": { + "name": { "type": "string" }, - "userId": { + "description": { "type": "string" - } - }, - "title": "Response message for AssignCostGroupMember" - }, - "v1AssignPayerRequest": { - "type": "object", - "properties": { - "vendor": { - "type": "string", - "description": "Required. Cloud vendor." }, - "accountId": { - "type": "string", - "description": "Required. Account Id." + "isPrivate": { + "type": "boolean" + }, + "isEditable": { + "type": "boolean" + }, + "icon": { + "type": "string" + }, + "createdBy": { + "$ref": "#/definitions/coverMemberUserData" + }, + "createdAt": { + "type": "string" + }, + "updatedBy": { + "$ref": "#/definitions/coverMemberUserData" + }, + "updatedAt": { + "type": "string" + }, + "layout": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverWidgetData" + } + }, + "sideMenu": { + "$ref": "#/definitions/coverSideMenu" + }, + "reportType": { + "type": "string" + }, + "colorTheme": { + "type": "string" }, - "payerId": { - "type": "string", - "description": "Required. The Payer Id." - } - }, - "title": "Request message for AssignPayer" - }, - "v1AssignPayerResponse": { - "type": "object", - "properties": { - "accountId": { + "currency": { "type": "string" }, - "payerId": { + "reportPeriod": { "type": "string" } - }, - "title": "Response message for AssignPayer" + } }, - "v1Attribute": { + "coverViewLayout": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Filter key." + "widgetId": { + "type": "string" }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Array of filter values." + "widgetData": { + "$ref": "#/definitions/coverWidgetData" } } }, - "v1AwsDailyRunHistory": { + "coverViewList": { "type": "object", "properties": { - "billingInternalId": { + "id": { "type": "string" }, - "billingGroupId": { + "name": { "type": "string" }, - "month": { + "description": { "type": "string" }, - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/v1AwsDailyRunHistoryAccount" - } + "isPrivate": { + "type": "boolean" + }, + "isEditable": { + "type": "boolean" + }, + "icon": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "colorTheme": { + "type": "string" + }, + "reportType": { + "type": "string" + }, + "reportPeriod": { + "type": "string" } - }, - "description": "Streaming response message for the Billing.ListAwsDailyRunHistory rpc." + } }, - "v1AwsDailyRunHistoryAccount": { + "coverWidgetData": { "type": "object", "properties": { - "accountId": { + "id": { "type": "string" }, - "history": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "componentId": { + "type": "string" + }, + "options": { + "type": "object" + }, + "requests": { "type": "array", "items": { - "$ref": "#/definitions/AccountHistory" + "type": "object", + "$ref": "#/definitions/coverLayoutRequests" } } } }, - "v1BillingAccountRequest": { + "coverv1FeeDetails": { "type": "object", "properties": { - "billingId": { - "type": "string", - "description": "Required. The billing account id." + "id": { + "type": "string" }, - "datasetId": { - "type": "string", - "description": "Name of dataset you created." + "orgId": { + "type": "string" }, - "datasetRegion": { - "type": "string", - "description": "In creating dataset, It requires you to select a region." + "vendor": { + "type": "string" }, - "projectId": { - "type": "string", - "description": "Project Id where the datasetId of BQ can be found." + "account": { + "type": "string" }, - "billingName": { - "type": "string", - "description": "Optional. Billing Name, this can be set by the users in Octo UI." - } - }, - "title": "Request message for AddBillingAccount" - }, - "v1BillingGroup": { - "type": "object", - "properties": { - "billingInternalId": { - "type": "string", - "description": "The billing group's internal id." + "month": { + "type": "string" }, - "billingGroupId": { - "type": "string", - "description": "The billing group id." + "lineType": { + "type": "string" }, - "billingGroupName": { - "type": "string", - "description": "The billing group name." + "feeType": { + "type": "string" }, - "companyName": { - "type": "string", - "description": "The company’s name." + "productCode": { + "type": "string" }, - "type": { - "type": "string", - "title": "For aws only: `default` or `imported`" + "description": { + "type": "string" }, - "billingGroupInfo": { - "$ref": "#/definitions/rippleBillingGroupInfo", - "title": "The billing group info" + "started": { + "type": "string" }, - "accountOptions": { - "$ref": "#/definitions/v1AccountOptions", - "description": "The account options." + "timeInterval": { + "type": "string" }, - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/blueapiapiAccount" - }, - "title": "List of all accounts" + "productName": { + "type": "string" }, - "tags": { - "type": "array", - "items": { - "$ref": "#/definitions/apiCostTag" - }, - "title": "List of all tags" + "currency": { + "type": "string" }, - "invoiceSettings": { - "$ref": "#/definitions/v1BillingGroupInvoiceSettings", - "description": "The invoice settings for this billing group." + "splitStatus": { + "type": "string" }, - "additionalItems": { - "$ref": "#/definitions/v1BillingGroupAdditionalItems", - "title": "List of all additionalItems" + "isAllocated": { + "type": "boolean" }, - "awsOptions": { - "$ref": "#/definitions/billingv1AwsOptions", - "title": "AWS-specific options" + "isApplied": { + "type": "boolean" + }, + "unblendedCost": { + "type": "number", + "format": "double" + }, + "sourceFee": { + "type": "string" + }, + "lastUpdate": { + "type": "string" + } + }, + "description": "Response message for GetFeeDetails, CreateFeeReallocation rpc." + }, + "coverv1Status": { + "type": "string", + "enum": [ + "PENDING", + "IN_PROGRESS", + "SUCCESS", + "FAILED" + ], + "default": "PENDING", + "title": "Status of upload file" + }, + "gcpGCPRecommendations": { + "type": "object", + "properties": { + "recommendationHubRecommendations": { + "$ref": "#/definitions/gcpRecommendationHubRecommendations" } } }, - "v1BillingGroupAdditionalItems": { + "gcpRecommendationHubRecommendations": { "type": "object", "properties": { - "aws": { + "insights": { "type": "array", "items": { - "$ref": "#/definitions/apiAdditionalItems" - }, - "title": "AWS additional items" + "type": "object", + "$ref": "#/definitions/RecommendationHubRecommendationsInsights" + } }, - "azure": { - "type": "array", - "items": { - "$ref": "#/definitions/apiAdditionalItems" - }, - "title": "Azure additional items" + "recommendedAction": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "priorityLevel": { + "type": "string" + } + } + }, + "googlerpcStatus": { + "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]." }, - "gcp": { + "message": { + "type": "string", + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client." + }, + "details": { "type": "array", "items": { - "$ref": "#/definitions/apiAdditionalItems" + "type": "object", + "$ref": "#/definitions/protobufAny" }, - "title": "GCP additional items" + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use." } }, - "description": "Additional items for a billing group." + "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors)." }, - "v1BillingGroupInvoiceSettings": { + "octoawsOctoGeneratedAWSRecommendations": { "type": "object", "properties": { - "aws": { - "$ref": "#/definitions/v1BillingGroupVendoredInvoiceSetting", - "title": "AWS invoice settings" - }, - "azure": { - "$ref": "#/definitions/v1BillingGroupVendoredInvoiceSetting", - "title": "Azure invoice settings" + "currentDetails": { + "$ref": "#/definitions/octoawsOctoGeneratedAWSRecommendationsDetails" }, - "gcp": { - "$ref": "#/definitions/v1BillingGroupVendoredInvoiceSetting", - "title": "GCP invoice settings" + "recommendationDetails": { + "$ref": "#/definitions/octoawsOctoGeneratedAWSRecommendationsDetails" } - }, - "description": "Invoice settings for a billing group." + } }, - "v1BillingGroupSection": { + "octoawsOctoGeneratedAWSRecommendationsDetails": { "type": "object", "properties": { - "id": { + "ec2Details": { + "$ref": "#/definitions/awsAWSResourceDetailsEC2Details" + } + } + }, + "octoazurecspOctoGeneratedAzureCSPRecommendations": { + "type": "object" + }, + "octogcpOctoGeneratedGCPRecommendations": { + "type": "object" + }, + "pricingPricingData": { + "type": "object", + "properties": { + "vendor": { "type": "string", - "title": "The id. id:billing internald id" + "description": "Cloud vendor." }, - "name": { + "service": { "type": "string", - "title": "The id. name:billing name" + "description": "Cloud vendor service. We have a limited number of services supported currently.\nRefer to https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices to list supported services." }, - "yearMonth": { + "regionCode": { "type": "string", - "title": "The year-month. format: yyyymm" + "description": "Region code." }, - "currency": { + "sku": { "type": "string", - "description": "The currency." + "description": "SKU ID." }, - "invocieCost": { - "type": "number", - "format": "double", - "description": "The invoice cost." + "unit": { + "type": "string", + "description": "Unit of measure." }, - "procurementCost": { + "pricePerUnit": { "type": "number", "format": "double", - "description": "The procurement cost." + "description": "Price per unit." }, - "profitCost": { - "type": "number", - "format": "double", - "description": "The profit cost." + "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```" } }, - "description": "BillingGroupSection resource definition." + "title": "Pricing details" }, - "v1BillingGroupVendoredInvoiceSetting": { + "protobufAny": { "type": "object", "properties": { - "calcType": { + "@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(\u0026foo)) {\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 := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.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\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\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 }" + }, + "protobufNullValue": { + "type": "string", + "enum": [ + "NULL_VALUE" + ], + "default": "NULL_VALUE", + "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." + }, + "protosOperation": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The server-assigned name." + }, + "metadata": { + "$ref": "#/definitions/protobufAny", + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any." + }, + "done": { + "type": "boolean", + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable." + }, + "error": { + "$ref": "#/definitions/googlerpcStatus", + "description": "The error result of the operation in case of failure or cancellation." + }, + "response": { + "$ref": "#/definitions/protobufAny", + "description": "The normal response of the operation in case of success. If the original method returns\nno data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the\noriginal method is standard `Get`/`Create`/`Update`, the response should be the\nresource. For other methods, the response should have the type `XxxResponse`, where\n`Xxx` is the original method name. For example, if the original method name is\n`TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`." + } + }, + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call." + }, + "recommendationOCTOGeneratedRecommendations": { + "type": "object", + "properties": { + "aws": { + "$ref": "#/definitions/octoawsOctoGeneratedAWSRecommendations" + }, + "gcp": { + "$ref": "#/definitions/octogcpOctoGeneratedGCPRecommendations" + }, + "azurecsp": { + "$ref": "#/definitions/octoazurecspOctoGeneratedAzureCSPRecommendations" + } + } + }, + "recommendationRecommendationData": { + "type": "object", + "properties": { + "awsRecommendations": { + "$ref": "#/definitions/recommendationawsAWSRecommendations" + }, + "gcpRecommendations": { + "$ref": "#/definitions/gcpGCPRecommendations" + }, + "azureCspRecommendations": { + "$ref": "#/definitions/azurecspAzureCSPRecommendations" + }, + "octoGeneratedRecommendations": { + "$ref": "#/definitions/recommendationOCTOGeneratedRecommendations" + }, + "target": { "type": "string" }, - "discountRate": { - "type": "number", - "format": "double" + "targetName": { + "type": "string" }, - "substitutionFee": { + "resourceId": { "type": "string" }, - "substitutionFix": { - "type": "number", - "format": "double" + "service": { + "type": "string" }, - "substitutionRate": { - "type": "number", - "format": "double" + "costGroup": { + "type": "string" }, - "supportFee": { + "recommendationGroup": { "type": "string" }, - "supportRate": { + "category": { + "type": "string" + }, + "source": { + "type": "string" + }, + "id": { + "type": "string" + }, + "lastUpdatedAt": { + "type": "string" + }, + "region": { + "type": "string" + }, + "recommendation": { + "type": "string" + }, + "estimatedMonthlyCost": { "type": "number", "format": "double" }, - "supportFix": { + "estimatedMonthlySavings": { "type": "number", "format": "double" }, - "taxRate": { + "estimatedSavingsPercentage": { "type": "number", "format": "double" }, - "currency": { + "resourceName": { "type": "string" }, - "discountTargetUsage": { - "type": "string" + "restartNeeded": { + "type": "boolean" }, - "substitutionFeeTargetUsage": { - "type": "string" + "rollbackPossible": { + "type": "boolean" }, - "discountCalcLogic": { + "launchUrl": { "type": "string" }, - "substitutionFeeCalcTarget": { + "vendor": { "type": "string" + } + } + }, + "recommendationawsAWSRecommendations": { + "type": "object", + "properties": { + "costExplorerRecommendations": { + "$ref": "#/definitions/awsCostExplorerRecommendations" }, - "substitutionFeeCalcType": { - "type": "string" + "costOptimizationHubRecommendations": { + "$ref": "#/definitions/awsCostOptimizationHubRecommendations" }, - "supportAmountTarget": { - "type": "string" + "trustedAdvisorRecommendations": { + "$ref": "#/definitions/awsTrustedAdvisorRecommendations" }, - "supportFeeCalcTarget": { + "resourceArn": { "type": "string" } + } + }, + "rippleAssigned": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "format": "int32", + "description": "Required. This value can be up to 100." + }, + "fixed": { + "type": "integer", + "format": "int32", + "description": "Required." + } }, - "description": "Invoice settings that are vendor-specific for each billing group." + "description": "Assigned resource definition.", + "required": [ + "percentage", + "fixed" + ] }, - "v1BudgetAlerts": { + "rippleAssignedBillingGroup": { "type": "object", "properties": { "id": { "type": "string", - "description": "Budget alert Id." + "description": "The unique id of the billing group internal." + }, + "groupId": { + "type": "string", + "description": "The unique id of the billing group." }, - "vendor": { + "groupName": { "type": "string", - "description": "Vnedor. At the moment, only `aws` is supported." + "description": "The name of the billing group." }, "accounts": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/blueapiapiAccount" }, - "description": "Lsit of accountId." - }, - "notification": { - "$ref": "#/definitions/apiBudgetAlertNotificationDetail", - "description": "Notification setting for budget alert." - }, - "daily": { - "$ref": "#/definitions/apiDailyBudgetAlert", - "description": "Daily setting for budget alert." - }, - "dailyRate": { - "$ref": "#/definitions/apiDailyRateIncreaseBudgetAlert", - "description": "Daily rate increase setting for budget alert." + "description": "A list of accounts." }, - "monthly": { - "$ref": "#/definitions/apiMonthlyBudgetAlert", - "description": "Monthly setting for budget alert." + "assigned": { + "$ref": "#/definitions/rippleAssigned", + "title": "The assigned that rules set for untagged groups" } }, - "description": "Request message for the BudgetAlerts rpc." + "description": "AssignedBillingGroup resource definition." }, - "v1CalculateCostsRequest": { + "rippleBillingGroupExchangeRate": { "type": "object", "properties": { - "vendor": { + "billingInternalId": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "description": "The billing group's internal id." }, - "groupId": { + "billingGroupId": { "type": "string", - "description": "Optional. A comma-separated list of billing internal ids. If empty, calculate for all billing groups.\n\nAt the moment, for AWS, this is only valid for account type billing groups, not tag billing groups. If a tag billing group is provided, it is discarded and the calculation is done for the whole organization." + "description": "The billing group's id." }, - "month": { + "billingGroupName": { "type": "string", - "description": "Optional. The UTC month to calculate. If empty, it defaults to the previous month. Format is `yyyymm`. For example, June 2021 will be `202106`." + "description": "The billing group's name." }, - "awsOptions": { - "$ref": "#/definitions/v1CalculateCostsRequestAwsOptions", - "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + "exchangeRate": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleExchangeRate" + }, + "description": "The exchange rate." } }, - "description": "Request message for the Cost.CalculateCosts rpc." - }, - "v1CalculateCostsRequestAwsOptions": { - "type": "object", - "properties": { - "force": { - "type": "boolean", - "description": "Optional. If set to true, discard existing calculation operation(s), if any, and make this as the active/latest one. By default, if there is an ongoing operation during the call, the request will fail." - }, - "accountsOnly": { - "type": "boolean", - "description": "Optional. If set to true, only calculate for account-type billing groups. If both `accountsOnly` and `tagsOnly` are set to true, `accountsOnly` will prevail." - }, - "tagsOnly": { - "type": "boolean", - "description": "Optional. If set to true, only calculate for tags-type billing groups. Discarded when the organization doesn't have any tag-based billing groups configured. If both `accountsOnly` and `tagsOnly` are set to true, `accountsOnly` will prevail." - } - } + "description": "BillingGroupExchangeRate resource definition." }, - "v1CalculationsSchedule": { + "rippleBillingGroupInfo": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "The schedule id." - }, - "schedule": { + "billingTitle": { "type": "string", - "description": "The desired schedule in UTC, using the [cron](https://man7.org/linux/man-pages/man5/crontab.5.html) format." + "title": "Optional. The title of the billing" }, - "scheduleMacro": { + "phoneNumber": { "type": "string", - "description": "The macro that augments `schedule`." + "title": "Optional. Company’s phone number" }, - "targetMonth": { + "postalCode": { "type": "string", - "description": "The target month for the calculation. Empty means previous month (default)." + "title": "Optional. Company’s postal code" }, - "nextRun": { + "address": { "type": "string", - "description": "The schedule for the next run in UTC." + "title": "Optional. Company’s address" }, - "notificationChannel": { + "personal": { "type": "string", - "description": "The channel id to use for notifications." - }, - "force": { - "type": "boolean", - "description": "If set to true, force calculations to proceed regardless of run status." - }, - "dryRun": { - "type": "boolean", - "description": "If set to true, skips the actual calculations." + "title": "Optional. Addressee" }, - "status": { + "remarks": { "type": "string", - "description": "The current state of this schedule. Normally set to \"OK\", or empty if no issues. Otherwise, will contain an error string." - } - } - }, - "v1CalculatorCostModifier": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "createTime": { - "type": "string" - }, - "updateTime": { - "type": "string" - }, - "awsOptions": { - "$ref": "#/definitions/v1CalculatorCostModifierAwsOptions" + "title": "Optional. Any remarks about the billing group" }, - "azureOptions": { - "$ref": "#/definitions/v1CalculatorCostModifierAzureOptions" - } - } - }, - "v1CalculatorCostModifierAwsOptions": { - "type": "object", - "properties": { - "accountId": { + "projectId": { "type": "string", - "description": "Optional. The account to which the modifier is applied. A comma-separated list of accounts is also valid." + "title": "Optional. Project code" }, - "groupId": { + "language": { "type": "string", - "description": "Optional. The group to which the modifier is applied. Accepts billing internal ids. A comma-separated list of billing internal ids is also valid." + "title": "Optional. Invoice language" }, - "payerId": { + "displayCost": { "type": "string", - "description": "Optional. The payer id to which the modifier is applied. A comma-separated list of payer ids is also valid." - }, - "qualifiers": { - "type": "array", - "items": { - "$ref": "#/definitions/v1CalculatorCostModifierAwsOptionsQualifier" - }, - "description": "Optional. Conditional qualifiers to further filter the modifier targets. Multiple qualifiers use the logical `or` operator; `qualifiers[0] || qualifiers[1] || qualifiers[n]`." - }, - "modifier": { - "$ref": "#/definitions/v1CalculatorCostModifierAwsOptionsModifier" + "title": "Optional. Calculation type, true unblended or unblended" }, - "after": { + "exchangeRateType": { "type": "string", - "description": "Optional. Specifies the modifier id in which this modifier will be applied after. For example, if you have another modifier `mod1` and you create a new modifier with `after` set to `mod1`, the calculator will apply `mod1` first, then this modifier. If `after` is not set, the application sequence for multiple overlapping modifiers will be by update timestamp, newest to oldest." + "title": "Optional. Exchange rate type, payer or billing group" }, - "createNewRow": { + "qrCode": { "type": "boolean", - "description": "Optional. Default to false. If set to true, the modifier will create a new row in the table with similar data that satisfies the qualifier the only differences is it contains the amount to be subtracted or to be added. If set to false, the modifier will update the cost directly." - } - }, - "description": "AWS-specific options definition." - }, - "v1CalculatorCostModifierAwsOptionsModifier": { - "type": "object", - "properties": { - "formula": { - "type": "string", - "description": "Required. Our modifier formula. The final result should be a number. Integers are converted to floating points.\n\nSupported operators are `*`, `/`, `+`, `-`, and `%`. You can use parenthesis `()` to control precedence. Additional supported operators include `==`, `!=`, `!`, `\u003e`, `\u003c`, `\u003e=`, `\u003c=`, and the ternary operator `? :`, or `cond ? expr1 : expr2`.\nExamples:\n `1 + 2 * 3` = 7\n `(1 + 2) * 3` = 9\n `7.8 % 5` = 2.8\n `true ? 1.1 : 2.2` = 1.1\n `1 \u003e 2 ? 1.1 : 2.2` = 2.2\n\nYou can use the `cost` variable to reference the original lineitem cost. For example, if you want to add $10 to the cost, you can use the formula: `cost + 10`. For trueunblended-type billing groups, `cost` refers to the calculated trueunblended cost.\n\nThe `usage` variable refers to the usage amount of a lineitem. For example, if you want to use a different rate of $1.5, you can use the formula: `usage * 1.5`.\n\nThe `unblendedcost` variable refers to the lineitem's unblended cost as indicated in the CUR. Note that the `unblendedcost` variable is different than the `cost` variable, although there are cases where the two are equal.\n\nThe `ondemandrate` variable refers to the lineitem's public ondemand rate as indicated in the CUR.\n\nYou can check out this [guide](https://alphauslabs.github.io/docs/guides/aws-cost-mods/) for more examples." + "title": "Optional. qrCode" }, - "descriptionModifier": { - "$ref": "#/definitions/v1CalculatorCostModifierAwsOptionsModifierDescriptionModifier", - "description": "Optional. A simple description modifier." - } - } - }, - "v1CalculatorCostModifierAwsOptionsModifierDescriptionModifier": { - "type": "object", - "properties": { - "prefix": { + "invoiceTemplateId": { "type": "string", - "description": "Optional. Add a prefix to the description." + "title": "Optional. Invoice template Id" }, - "suffix": { + "city": { "type": "string", - "description": "Optional. Add a suffix to the description." + "title": "Optional. Company's city" }, - "replace": { + "prefecture": { "type": "string", - "description": "Optional. Replace the description with the input." + "title": "Optional. Company's prefecture" }, - "replaceMatch": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional. Replace matching occurences with the input. The key part is the regular expression matcher based on https://github.com/google/re2, while the value is the replacement. The order of replacement is not guaranteed.\n\nYou can use the `{{ondemandrate}}` variable in the replacement value part to reference the public ondemand rate indicated in the CUR." - } - } - }, - "v1CalculatorCostModifierAwsOptionsQualifier": { - "type": "object", - "properties": { - "and": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "country": { + "type": "string", + "title": "Optional. Company's country" } }, - "description": "A map of \"key:value\" attribute filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like your modifiers to apply to `productCode:AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means apply to all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means apply to all items except `AmazonEC2`. Valid keys are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `description`, and `resourceId`." + "description": "BillingGroupInfo resource definition. Only available in Ripple." }, - "v1CalculatorCostModifierAzureOptions": { + "rippleChargingTarget": { + "type": "string", + "enum": [ + "BILLINGGROUP", + "ACCOUNT" + ], + "default": "BILLINGGROUP", + "description": "Charging target\nIndicates that `ChargingTarget` in the setting applies to either BillingGroup or Account.\n\n - BILLINGGROUP: billing group\n - ACCOUNT: account" + }, + "rippleCommonExchangeRate": { "type": "object", "properties": { - "groupId": { - "type": "string", - "description": "Optional. The group to which the modifier is applied. Accepts billing internal ids. A comma-separated list of billing internal ids is also valid." - }, - "payerId": { - "type": "string", - "description": "Optional. The payer id (a.k.a Azure billing id) to which the modifier is applied. A comma-separated list of payer ids is also valid." - }, - "customerId": { - "type": "string", - "description": "Optional. The Azure customer id to which the modifier is applied. A comma-separated list of customers is also valid." - }, - "subscriptionId": { - "type": "string", - "description": "Optional. The Azure subscription id to which the modifier is applied. A comma-separated list of subscriptions is also valid." + "aws": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleExchangeRate" + } }, - "entitlementId": { - "type": "string", - "description": "Optional. The Azure entitlement id to which the modifier is applied. A comma-separated list of entitlements is also valid." + "gcp": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleExchangeRate" + } }, - "qualifiers": { + "azure": { "type": "array", "items": { - "$ref": "#/definitions/v1CalculatorCostModifierAzureOptionsQualifier" - }, - "description": "Optional. Conditional qualifiers to further filter the modifier targets. Multiple qualifiers use the logical `or` operator; `qualifiers[0] || qualifiers[1] || qualifiers[n]`." - }, - "modifier": { - "$ref": "#/definitions/v1CalculatorCostModifierAzureOptionsModifier" - }, - "after": { - "type": "string", - "description": "Optional. Specifies the modifier id in which this modifier will be applied after. For example, if you have another modifier `mod1` and you create a new modifier with `after` set to `mod1`, the calculator will apply `mod1` first, then this modifier. If `after` is not set, the application sequence for multiple overlapping modifiers will be by update timestamp, newest to oldest." + "type": "object", + "$ref": "#/definitions/rippleExchangeRate" + } } }, - "description": "Azure-specific options definition." + "description": "CommonExchangeRate resource definition." }, - "v1CalculatorCostModifierAzureOptionsModifier": { + "rippleCustomizedBillingService": { "type": "object", "properties": { - "formula": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "methodConfig": { + "$ref": "#/definitions/rippleMethodConfig" + }, + "created": { "type": "string", - "description": "Required. Our modifier formula. The final result should be a number. Integers are converted to floating points.\n\nSupported operators are `*`, `/`, `+`, `-`, and `%`. You can use parenthesis `()` to control precedence. Additional supported operators include `==`, `!=`, `!`, `\u003e`, `\u003c`, `\u003e=`, `\u003c=`, and the ternary operator `? :`, or `cond ? expr1 : expr2`.\nExamples:\n `1 + 2 * 3` = 7\n `(1 + 2) * 3` = 9\n `7.8 % 5` = 2.8\n `true ? 1.1 : 2.2` = 1.1\n `1 \u003e 2 ? 1.1 : 2.2` = 2.2\n\nYou can use the `cost` variable to reference the original lineitem cost. For example, if you want to add $10 to the cost, you can use the formula: `cost + 10`. For trueunblended-type billing groups, `cost` refers to the calculated trueunblended cost.\n\nThe `quantity` variable refers to the billable quantity amount of a lineitem. For example, if you want to use a different rate of $1.5, you can use the formula: `quantity * 1.5`.\n\nThe `unitPrice` variable refers to the lineitem's effective unit price as indicated in the Azure invoice.\n\nYou can check out this [guide](https://alphauslabs.github.io/docs/guides/aws-cost-mods/) for more examples." + "readOnly": true }, - "descriptionModifier": { - "$ref": "#/definitions/v1CalculatorCostModifierAzureOptionsModifierDescriptionModifier", - "description": "Optional. A simple description modifier." + "updated": { + "type": "string", + "readOnly": true } - } + }, + "description": "CustomizedBillingService resource definition." }, - "v1CalculatorCostModifierAzureOptionsModifierDescriptionModifier": { + "rippleDueDate": { "type": "object", "properties": { - "prefix": { + "dueDateDay": { "type": "string", - "description": "Optional. Add a prefix to the description." + "description": "Due date set on the invoice\nRefer to the following for available values\nbeginning_of_month: The beginning date of the month is automatically set.\nend_of_month: The end date of the month is automatically set.\ncustom: Date can be specified." }, - "suffix": { + "dueDateMonth": { "type": "string", - "description": "Optional. Add a suffix to the description." + "description": "Due month set on the invoice\nRefer to the following for available values\nthis_month: This month is automatically set.\nnext_month: Next month is automatically set.\nmonth_after_next: Month after next is automatically set." }, - "replace": { - "type": "string", - "description": "Optional. Replace the description with the input." + "dueDateCustomDay": { + "type": "integer", + "format": "int32", + "title": "Customized due date set on the invoice\nRange 1 ~ 31" } - } + }, + "description": "DueDate resource definition." }, - "v1CalculatorCostModifierAzureOptionsQualifier": { + "rippleExchangeRate": { "type": "object", "properties": { - "and": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "currency": { + "type": "string", + "description": "The currency code." + }, + "rate": { + "type": "number", + "format": "double", + "description": "The rate." } }, - "description": "A map of \"key:value\" attribute filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like your modifiers to apply to `productId:CFQ7TTC0LFLX` (Microsoft 365 E3), set to `{\"productId\":\"eq:CFQ7TTC0LFLX\"}` or `{\"productId\":\"CFQ7TTC0LFLX\"}`. You can also use a regular expression like `{\"productId\":\"re:CFQ7TTC0LFLX|DZH318Z0BQ4L\"}`, which means apply to all `Microsoft 365 E3` or `Virtual Machines Ev3 Series` lineitems. Or reverse regexp, such as `{\"productId\":\"!re:^CFQ7TTC0LFLX$\"}`, which means apply to all items except `Microsoft 365 E3`. Valid keys are `productId`, `productName`, `skuId`, `skuName`, `description`, `category` and `domainName`." + "description": "ExchangeRate resource definition." }, - "v1CancelOperationRequest": { + "rippleFixedFee": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "The name of the operation resource to be cancelled." + "value": { + "type": "number", + "format": "double" } }, - "description": "Request message for the Operations.CancelOperation rpc." + "title": "fixed fee" }, - "v1CheckAccountsRequest": { + "rippleFixedFeeOrPercentage": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "fixedFeeValue": { + "type": "number", + "format": "double" }, - "accountIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. A comma-separated list of account ids. For example, you set to [\"accountId1\",\"accountId2\",\"accountId3\"]." + "percentageValue": { + "type": "number", + "format": "double" + }, + "service": { + "$ref": "#/definitions/rippleTargetServiceConfig" + }, + "usage": { + "$ref": "#/definitions/rippleTargetUsageConfig" + }, + "discounted": { + "type": "boolean" + }, + "upperLimit": { + "type": "number", + "format": "double" } - } + }, + "title": "fixed fee or percentage" }, - "v1CheckAccountsResponse": { + "rippleInvoiceLayout": { "type": "object", "properties": { - "exists": { - "type": "object", - "additionalProperties": { - "type": "boolean" - }, - "description": "Map of accountIds to boolean values indicating if the account exists." + "account": { + "$ref": "#/definitions/rippleaccountInvoiceLayout", + "title": "total layout" + }, + "total": { + "$ref": "#/definitions/rippletotalInvoiceLayout", + "title": "total layout" + }, + "body": { + "$ref": "#/definitions/ripplebodyInvoiceLayout", + "title": "body layout" + }, + "footer": { + "$ref": "#/definitions/ripplefooterInvoiceLayout", + "title": "footer layout" + }, + "header": { + "$ref": "#/definitions/rippleheaderInvoiceLayout", + "title": "header layout" + }, + "report": { + "$ref": "#/definitions/ripplereportInvoiceLayout", + "title": "report layout" } - } + }, + "description": "WORK-IN-PROGRESS: InvoiceLayout resource definition.\nDefinitions related to invoice display." }, - "v1CloudWatchMetricsStream": { + "rippleMethodConfig": { "type": "object", "properties": { - "target": { - "type": "string", - "description": "The queried target account." + "currency": { + "$ref": "#/definitions/MethodConfigCurrency" }, - "externalId": { - "type": "string", - "description": "The external id for this role." + "chargingMethod": { + "$ref": "#/definitions/MethodConfigChargingMethod" }, - "stackId": { - "type": "string", - "description": "The id of the CloudFormation stack deployed in the target account." + "fixedFee": { + "$ref": "#/definitions/rippleFixedFee" }, - "stackRegion": { - "type": "string", - "description": "The region where the stack is deployed." + "percentage": { + "$ref": "#/definitions/ripplePercentage" }, - "templateUrl": { - "type": "string", - "description": "The latest template used to deploy the stack." + "fixedFeeOrPercentage": { + "$ref": "#/definitions/rippleFixedFeeOrPercentage" }, - "status": { - "type": "string", - "description": "This can be `latest`, `outdated`, or some error information." + "TieredPrice": { + "$ref": "#/definitions/rippleTieredPrice" }, - "lastUpdated": { - "type": "string", - "description": "The last updated timestamp, RFC3339 UTC." + "TieredPercentage": { + "$ref": "#/definitions/rippleTieredPercentage" } }, - "description": "Response message for the Admin.CreateCloudWatchMetricsStream rpc." + "description": "MethodConfig resource definition." }, - "v1CostAllocatorDetails": { + "rippleOrg": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "category": { - "type": "string" - }, - "expiration": { - "type": "string", - "format": "int64" - }, - "startMonth": { + "name": { "type": "string", - "description": "Optional. The starting month of the allocator to be effective." + "description": "The unique name (or id) of the organization." }, - "defaultAccount": { + "email": { "type": "string", - "description": "Optional. The default account for remaining costs. If not set, will allocate the cost to the original account." + "description": "The registered email of the organization." }, - "criteria": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Criteria" + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" }, - "description": "Required. Criteria for the adjustment to be applied." - }, - "allocator": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Allocator" - } - }, - "createTime": { - "type": "string" - }, - "updateTime": { - "type": "string" + "description": "The metadata (key/value pair) of the organization. If hierarchy is supported, it will be\nseparated by '/', such as 'metakey/subkey=value'. See https://alphauslabs.github.io/blueapi/\nfor the list of supported attributes." } - } + }, + "description": "Org resource definition." }, - "v1CostAllocatorRequest": { + "ripplePayer": { "type": "object", "properties": { "id": { - "type": "string" - }, - "category": { - "type": "string" - }, - "expiration": { - "type": "string", - "format": "int64" - }, - "startMonth": { "type": "string", - "description": "Optional. The starting month of the allocator to be effective." + "description": "The payer account id." }, - "defaultAccount": { + "name": { "type": "string", - "description": "Optional. The default account for remaining costs. If not set, will allocate the cost to the original account." + "description": "The payer account name." }, - "criteria": { + "metadata": { "type": "array", "items": { - "$ref": "#/definitions/v1Criteria" + "type": "object", + "$ref": "#/definitions/apiKeyValue" }, - "description": "Required. Criteria for the adjustment to be applied." + "description": "The attributes (key/value pair) of the account." }, - "allocator": { + "members": { "type": "array", "items": { - "$ref": "#/definitions/v1Allocator" - } - } - } - }, - "v1CostAttributeItem": { - "type": "object", - "properties": { - "aws": { - "$ref": "#/definitions/apiawsCostAttribute" - }, - "azure": { - "$ref": "#/definitions/apiazureCostAttribute" + "type": "object", + "$ref": "#/definitions/blueapiapiAccount" + }, + "description": "List of all members under this payer." } }, - "description": "Response message for the Cost.ReadCostAttributes rpc." + "description": "Payer resource definition." }, - "v1CreateAccessGroupRequest": { + "ripplePayerExchangeRate": { "type": "object", "properties": { - "name": { + "payerAccountId": { "type": "string", - "description": "Required. access group name.\n\nWe recommend the name length of 1~60 characters." + "description": "The payer account Id." }, - "description": { + "payerAccountName": { "type": "string", - "description": "Required. access group description.\n\nWe recommend the description length of 0~150 characters." + "description": "The payer account Name." }, - "billingGroups": { + "exchangeRate": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/rippleExchangeRate" }, - "description": "Required. Billing group to be included in the access group.\n\nYou can only include billing groups with the same calculation type and currency type.\nSpecify the billingInternalIds. For example: [`billingInternalId1`,`billingInternalId2`,`billingInternalId3`]" + "description": "The exchange rate." } }, - "description": "Request message for the CreateAccessGroup rpc." + "description": "PayerExchangeRate resource definition." }, - "v1CreateAccountAccessRequest": { + "ripplePercentage": { "type": "object", "properties": { - "target": { - "type": "string", - "description": "Required. The target AWS account to validate." + "value": { + "type": "number", + "format": "double" }, - "fromTerraform": { - "type": "boolean", - "title": "Optional. Set to true if deployment is done through terraform" + "service": { + "$ref": "#/definitions/rippleTargetServiceConfig" + }, + "usage": { + "$ref": "#/definitions/rippleTargetUsageConfig" + }, + "discounted": { + "type": "boolean" } }, - "description": "Request message for the CreateAccountAccess rpc." + "title": "percentage" }, - "v1CreateAccountAccessStacksetRequest": { + "rippleReseller": { "type": "object", "properties": { - "target": { + "id": { "type": "string", - "description": "Required. The AWS payer account to validate." + "description": "reseller id. Generated automatically." }, - "region": { - "type": "string", - "description": "Required. The region of the stack deployment." - } - }, - "description": "Request message for the CreateAccountAccessStackset rpc." - }, - "v1CreateAccountBudgetAlertsRequest": { - "type": "object", - "properties": { - "vendor": { + "email": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "title": "email" }, - "id": { + "groupId": { "type": "string", - "title": "Required. Account Id" + "title": "groupId includes `billingInternalId` or `accessGroupId`" }, - "budgetAlert": { - "$ref": "#/definitions/apiwaveBudgetAlert", - "description": "Required. Budget alert setting." - } - }, - "title": "Request message for CreateAccountBudgetAlerts" - }, - "v1CreateAccountBudgetRequest": { - "type": "object", - "properties": { - "vendor": { + "groupName": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "title": "groupName includes `billingInternalName` or `accessGroupName`" }, - "level": { + "groupType": { "type": "string", - "title": "Required. 'account' or 'acctgroup'" + "description": "group type\nRefer to the following for available values\nbilling_group: Billing Group.\naccess_group: Access Group." }, - "id": { + "waveStatus": { "type": "string", - "title": "Required. Account or AccountGroup Id" + "title": "wave status" }, - "data": { - "$ref": "#/definitions/blueapiapiBudget" + "waveConfig": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleResellerConfig" + }, + "title": "wave feature config" + }, + "aquaConfig": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleResellerConfig" + }, + "title": "aqua feature config" } - }, - "title": "Request message for CreateAccountBudget" + } }, - "v1CreateAccountBudgetResponse": { + "rippleResellerConfig": { "type": "object", "properties": { - "budgetId": { + "key": { "type": "string", - "title": "Budget Id" + "description": "For Wave\nThe available values are shown below.\n- Dashboard\n`dashboardGraph`: Display graph | Default: true\n`reportFilters`: Display report filters | Default: false\n\n- Usage Reports\n`usageAccount`: Account | Default: true\n`usageAccountGraph`: Display graph | Default: true\n`usageAccountMenuAccountEdit`: Edit account name | Default: false\n`usageAccountMenuBudget`: Display Budget | Default: false\n`usageAccountMenuBudgetEdit`: Edit Budget | Default: false\n`usageAccountMenuFeesFee`: Display fee | Default: false\n`usageAccountMenuFeesCredit`: Display credit | Default: false\n`usageAccountMenuFeesRefund`: Display refund | Default: false\n`usageAccountMenuFeesOtherFees`: Display other fees | Default: false\n`usageReportDownload`: Download report data | Default: true\n`cost_forecast_tab`: Cost Forecast | Default: true\n\n- Cross Tag\n`usageCrosstag`: Cross Tag | Default: true\n`usageCrosstagGraph`: Display graph | Default: true\n\n- Group\n`usageGroup`: Group\n`usageGroupGraph`: Display graph | Default: true\n\n- Cost management\n`riPurchased`: Display purchased RI | Default: true\n`riUtilization`: Display RI Utilization | Default: false\n`riRecommendation`: Display RI Recommendations | Default: false\n`spPurchased`: Display purchased Savings Plans | Default: false\n\n- Other\n`invoice`: Invoice link | Default: false\n`openApi`: API Access Tokens | Default: false\n`usersManagement`: Sub-user management | Default: true\n`invoiceDownloadCsvDiscount`: Enable discount CSV download | Default: false\n`invoiceDownloadCsvMerged`: Enable merged CSV download | Default: false\n`aquaLink`: Aqua link | Default: false\n`waveproReportFilters`: WavePro Report Filters | Default: false\n`budgetalerts`: WavePro Budget Alerts | Default: false\n\nFor Aqua\nThe available values are shown below.\n- Instance Usage Status\n`aqCoverageRatio`: Coverage Ratio | Default: false\n\n- Reservations Management\n`aqRiManagement`: RI Management | Default: false\n`aqSpManagement`: SP Management | Default: false\n\n- Recommendation\n`aqRiSpInstances`: RI/SP Instances | Default: false\n`aqRightSizing`: Right Sizing | Default: false\n`aqScheduling`: Scheduling | Default: false", + "title": "key" + }, + "value": { + "type": "boolean", + "title": "value" + } + } + }, + "rippleRounding": { + "type": "object", + "properties": { + "rounding": { + "$ref": "#/definitions/RoundingRoundingMethod", + "description": "The rounding method." } }, - "title": "Response message for CreateAccountBudget" + "description": "Rounding resource definition." + }, + "rippleTargetServiceConfig": { + "type": "string", + "enum": [ + "ALL" + ], + "default": "ALL", + "description": "Describes the overall config of a [blueapi.api.ripple.MethodConfig]." + }, + "rippleTargetUsageConfig": { + "type": "string", + "enum": [ + "USAGE" + ], + "default": "USAGE", + "description": "Describes the overall config of a [blueapi.api.ripple.MethodConfig]." }, - "v1CreateAccountInvoiceServiceDiscountsRequest": { + "rippleTierdConfig": { "type": "object", "properties": { - "groupId": { - "type": "string", - "description": "Required.\n\nFor Ripple, only billing internal ids are supported at the moment. You can set it to a single group\n\nImplied as the parent billing group for Wave(Pro) users." + "min": { + "type": "number", + "format": "double" }, - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/v1AccountServiceDiscounts" - }, - "description": "Required." + "max": { + "type": "number", + "format": "double" + }, + "value": { + "type": "number", + "format": "double" } }, - "description": "Request message for the CreateAccountInvoiceServiceDiscounts rpc." + "title": "tired config" }, - "v1CreateAccountInvoiceServiceDiscountsResponse": { + "rippleTieredPercentage": { "type": "object", "properties": { - "accounts": { + "tiredConfig": { "type": "array", "items": { - "$ref": "#/definitions/v1AccountServiceDiscounts" + "type": "object", + "$ref": "#/definitions/rippleTierdConfig" } + }, + "service": { + "$ref": "#/definitions/rippleTargetServiceConfig" + }, + "usage": { + "$ref": "#/definitions/rippleTargetUsageConfig" + }, + "discounted": { + "type": "boolean" } }, - "description": "Response message for the CreateAccountInvoiceServiceDiscounts rpc." + "title": "tired percentage" }, - "v1CreateAccountRequest": { + "rippleTieredPrice": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "id": { - "type": "string", - "description": "Required. The account id to register." - }, - "name": { - "type": "string", - "description": "Optional. If empty, set to the value of `id`." + "tiredConfig": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleTierdConfig" + } }, - "parent": { - "type": "string", - "description": "Optional. The parent `billingInternalId` of the billing group to which this account will belong to." + "service": { + "$ref": "#/definitions/rippleTargetServiceConfig" }, - "awsOptions": { - "$ref": "#/definitions/v1CreateAccountRequestAwsOptions", - "description": "Required for the `aws` vendor. AWS-specific options." + "usage": { + "$ref": "#/definitions/rippleTargetUsageConfig" }, - "gcpOptions": { - "$ref": "#/definitions/v1CreateAccountRequestGcpOptions", - "description": "Required for the `gcp` vendor. GCP-specific options." + "discounted": { + "type": "boolean" } }, - "description": "Request message for the Cost.CreateAccount rpc." + "title": "tired price" }, - "v1CreateAccountRequestAwsOptions": { + "rippleUntaggedGroup": { "type": "object", "properties": { - "managementAccountId": { + "id": { "type": "string", - "description": "Optional. The management account id (formerly known as master, or payer) to which an account belongs to, initially. If the account is moved to another management account, the system is able to detect it and set this value accordingly." - } - }, - "description": "AWS-specific options for registering an account." - }, - "v1CreateAccountRequestGcpOptions": { - "type": "object", - "properties": { - "managementAccountId": { + "description": "The unique id of the untagged group.\nAutomatically generated." + }, + "name": { "type": "string", + "title": "Required. The unique name of the untagged group. This value can be up to 60" + }, + "assigned": { + "$ref": "#/definitions/rippleAssigned", + "title": "Optional. The assigned that rules set for untagged groups" + }, + "billingGroups": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleAssignedBillingGroup" + }, "description": "Optional." }, - "managementBillingId": { + "created": { "type": "string", - "description": "Optional." + "description": "Output only. The time when the `UntaggedGroup` was created.", + "readOnly": true + }, + "updated": { + "type": "string", + "description": "Output only. The time when the `UntaggedGroup` was last updated.", + "readOnly": true } }, - "description": "GCP-specific options for registering an account." + "description": "UntaggedGroup resource definition.", + "required": [ + "name" + ] }, - "v1CreateAdjustmentConfigRequest": { + "rippleVendorPayerExchangeRate": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "aws": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ripplePayerExchangeRate" + } }, - "config": { + "gcp": { "type": "array", "items": { - "$ref": "#/definitions/apiConfigFilters" - }, - "description": "Required. \nA list of filtering options. See [api.ConfigFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "type": "object", + "$ref": "#/definitions/ripplePayerExchangeRate" + } }, - "accounts": { + "azure": { "type": "array", "items": { - "$ref": "#/definitions/apiManagementAccount" - }, - "description": "Optional." + "type": "object", + "$ref": "#/definitions/ripplePayerExchangeRate" + } } }, - "description": "Request message for the Billing.CreateAdjustmentConfig rpc." + "description": "VendorPayerExchangeRate resource definition." }, - "v1CreateAlertRequest": { + "rippleYearMonth": { "type": "object", "properties": { - "name": { + "yearMonth": { "type": "string", - "description": "Required." - }, - "fixedAmount": { - "type": "number", - "format": "float", - "description": "At least one in either fixedAmount or percentage." + "description": "List of the yearmonth." + } + }, + "description": "YearMonth resource definition." + }, + "rippleaccountInvoiceLayout": { + "type": "object", + "properties": { + "marketplace": { + "type": "string", + "title": "The marketplace is name of marketplace usage.\nex)ACCT_AWS_MARKETPLACE: \"Marketplace利用料金\"" }, - "percentage": { - "type": "number", - "format": "float" + "marketplaceFee": { + "type": "string", + "title": "The marketplace is name of marketplace fee usage.\nex)ACCT_AWS_MARKETPLACE_FEES: \"Marketplace 一時金 ご利用金額\"" }, - "granularity": { + "supportFee": { "type": "string", - "description": "Optional. daily or monthly. Only 'daily' is supported for now." + "title": "The supportFee is name of support fee usage.\nex)ACCT_AWS_SUPPORT_BUSINESS: \"AWS保守サービス利用料金\"" }, - "costGroups": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. Cost group IDs." + "accountUsage": { + "type": "string", + "title": "The accountUsage is name of account total usage.\nex)ACCT_AWS_USAGE: \"利用料合計\"" }, - "channels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. Channel IDs." + "accountUsageOnly": { + "type": "string", + "title": "The accountUsageOnly is name of account usage(Only related to vendor).\nex)ACCT_AWS_USAGEONLY: \"AWS利用料(MarketPlace利用料除く)\"" } }, - "title": "Request message for CreateAlert" + "description": "WORK-IN-PROGRESS: accountInvoiceLayout resource definition." }, - "v1CreateAlertResponse": { + "ripplebodyInvoiceLayout": { "type": "object", "properties": { - "alertData": { - "$ref": "#/definitions/coverAlertData" + "hideSpecificTotalLines": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The hideSpecificTotalLines is name of hide specific total lines.\nex)BODY_HIDE_SPECIFIC_TOTAL_LINES: [\"removeThisTextToApply _AWS_SUPPORT_BUSINESS\"]" + }, + "serviceDiscountDetail": { + "type": "boolean", + "title": "The serviceDiscountDetail is setting for service discount detail.\nex)BODY_SERVICE_DISCOUNT_DETAIL: true" + }, + "usageDiscount": { + "type": "boolean", + "title": "The usageDiscount is setting for usage discount.\nex)BODY_USAGE_DISCOUNT: true" + }, + "hideMarketplace": { + "type": "boolean", + "title": "The hideMarketplace is setting for hide marketplace.\nex)BODY_HIDE_MARKETPLACE: true" } }, - "title": "Response message for CreateAlert" + "description": "WORK-IN-PROGRESS: bodyInvoiceLayout resource definition." }, - "v1CreateAllocatorRequest": { + "ripplefooterInvoiceLayout": { "type": "object", "properties": { - "category": { + "attention": { "type": "string", - "description": "Optional. The category where the allocator is to be applied. Applicable values are `fee`, `account`, or `savings`. Default value is `fee`." + "title": "The attention is name of attention.\nex)FT_ATTENTION: null" }, - "expiration": { - "type": "string", - "format": "int64" + "invoiceBank": { + "type": "boolean", + "title": "The invoiceBank is setting for invoice bank.\nex)FT_INVOICE_BANK: true" }, - "startMonth": { + "invoiceBankContent": { "type": "string", - "description": "Optional. The starting month of the allocator to be effective." + "title": "The invoiceBankContent is information of invoice bank content.\nex)FT_INVOICE_BANK_CONTENT: \"振込手数料はご負担ください。\"" }, - "defaultAccount": { - "type": "string", - "description": "Optional. The default account for remaining costs. If not set, will allocate the cost to the original account." + "invoiceMemo": { + "type": "boolean", + "title": "The invoiceMemo is setting for invoice memo.\nex)FT_INVOICE_MEMO: true" }, - "criteria": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Criteria" - }, - "description": "Required. Criteria for the adjustment to be applied." + "invoiceRemarks": { + "type": "boolean", + "title": "The invoiceRemarks is setting for invoice remarks.\nex)FT_INVOICE_REMARKS: true" }, - "allocator": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Allocator" - } + "invoiceDiscountZero": { + "type": "boolean", + "title": "The invoiceDiscountZero is setting for invoice discount.\nex)FT_INVOICE_DISCOUNT_ZERO: true" } }, - "description": "Request message for the CreateAllocator rpc." + "description": "WORK-IN-PROGRESS: footerInvoiceLayout resource definition." }, - "v1CreateAnomalyAlertRequest": { + "rippleheaderInvoiceLayout": { "type": "object", "properties": { - "name": { + "billingAddress": { "type": "string", - "title": "Required. Name of the Anomaly Alert" + "title": "The billingAddress is information of billing address.\nex)HEAD_BILLINGADDRESS: billing\"" }, - "alertEnabled": { + "billingGroupName": { "type": "boolean", - "title": "Required. Toggle disable and enable status of the alert" + "title": "The billingGroupName is setting for billing group name.\nex)HEAD_BILLINGGROUPNAME: true" }, - "frequency": { + "billingGroupStaff": { + "type": "boolean", + "title": "The billingGroupStaff is setting for billing froup staff.\nex)HEAD_BILLINGGROUPSTAFF: true" + }, + "companyAddress": { + "type": "boolean", + "title": "The companyAddress is setting for company address.\nex)HEAD_COMPANY_ADDRESS: true" + }, + "companyName": { + "type": "boolean", + "title": "The companyName is setting for company name.\nex)HEAD_COMPANY_NAME: true" + }, + "invoiceDate": { + "type": "boolean", + "title": "The invoiceDate is setting for invoice date.\nex)HEAD_INVOICE_DATE: true" + }, + "invoiceDue": { + "type": "boolean", + "title": "The invoiceDue is setting for invoice due.\nex)HEAD_INVOICE_DUE: true" + }, + "invoiceNo": { + "type": "boolean", + "title": "The invoiceNo is setting for invoice No.\nex)HEAD_INVOICE_NO: true" + }, + "invoiceQuantity": { "type": "string", - "title": "Required. How often the user wants to receive alerts. Daily or Weekly" + "title": "The invoiceQuantity is information of invoice quantity.\nex)HEAD_INVOICE_QUANTITY: \"1ヶ月分\"" }, - "costGroupId": { + "invoiceSummary": { + "type": "boolean", + "title": "The invoiceSummary is setting for invoice summary.\nex)HEAD_INVOICE_SUMMARY: true" + }, + "invoiceTitle": { "type": "string", - "title": "Requried. The Id of the cost group you want to monitor if there is an anomaly" + "title": "The invoiceTitle is information of invoice title.\nex)HEAD_INVOICE_TITLE: \"AWSご利用金額\"" }, - "notificationChannels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. The Channels where you want to send the alerts." + "issueDateText": { + "type": "string", + "title": "The issueDateText is information of issue date text.\nex)HEAD_ISSUE_DATE_TEXT: \"tested message\"" + }, + "mspInfo": { + "type": "boolean", + "title": "The mspInfo is setting for msp information.\nex)HEAD_MSPINFO: true" + }, + "mspLogo": { + "type": "boolean", + "title": "The mspLogo is setting for msp logo.\nex)HEAD_MSPLOGO: true" + }, + "mspStamp": { + "type": "boolean", + "title": "The mspStamp is setting for msp stamp.\nex)HEAD_MSPSTAMP: true" + }, + "paidText": { + "type": "string", + "title": "The paidText is information of paid text.\nex)HEAD_PAID_TEXT: \"paid message\"" } }, - "title": "Rquest message for CreateAnomalyAlert" + "description": "WORK-IN-PROGRESS: headerInvoiceLayout resource definition." }, - "v1CreateApiClientRequest": { + "ripplereportInvoiceLayout": { "type": "object", "properties": { - "name": { + "sectionEnable": { "type": "string", - "description": "Required. The descriptive name of the API client to create." + "title": "The sectionEnable is setting for section.\nex)REPORT_SECTION_ENABLE: \"{ \\\"ja\\\": true, \\\"en\\\": true }\"" } }, - "description": "Request message for the Iam.CreateApiClient rpc." + "description": "WORK-IN-PROGRESS: headerInvoiceLayout resource definition." }, - "v1CreateBillingGroupRequest": { + "rippletotalInvoiceLayout": { "type": "object", "properties": { - "billingGroupId": { - "type": "string", - "description": "Required. The billing group's id." - }, - "billingGroupName": { - "type": "string", - "description": "Required. The billing group's name." - }, - "companyName": { + "marketplace": { "type": "string", - "title": "Required. Company’s name" + "title": "The totalMarketplace is name of marketplace total usage.\nex)ALL_AWS_MARKETPLACE: \"\"" }, - "billingTitle": { + "marketplaceFee": { "type": "string", - "title": "Optional. The title of the billing" + "title": "The totalMarketplaceFee is name of marketplace total fee usage.\nex)ALL_AWS_MARKETPLACE_FEES: \"\"" }, - "phoneNumber": { + "vendorTotal": { "type": "string", - "title": "Optional. Company’s phone number" + "title": "The vendorTotal is name of vendor total usage.\nex)ALL_AWS_TOTAL: \"\"" }, - "postalCode": { + "vendorUsageOnly": { "type": "string", - "title": "Optional. Company’s postal code" + "title": "The vendorUsageOnly is name of vendor usage only.\nex)ALL_AWS_USAGEONLY: \"\"" }, - "address": { + "vendorlUsage": { "type": "string", - "title": "Optional. Company’s address" + "title": "The vendorTotalUsage is name of vendor total usage.\nex)ALL_AWS_USAGE: \"AWS利用料\"" }, - "personal": { + "customUsage": { "type": "string", - "title": "Optional. Addressee" + "title": "The customTotalUsage is name of custom total usage.\nex)ALL_CUSTOM_USAGE: \"追加費用合計\"" }, - "remarks": { + "discount": { "type": "string", - "title": "Optional. Any remarks about the billing group" + "title": "The discount is name of discount.\nex)ALL_DISCOUNT: \"\"" }, - "projectId": { + "discountDiff": { "type": "string", - "title": "Optional. Project code" + "title": "The discountTotalDiff is name of discount total diff.\nex)ALL_DISCOUNT_DIFF: \"値引後\"" }, - "language": { + "subTotal": { "type": "string", - "title": "Optional. Invoice language" + "title": "The subTotal is name of sub total.\nex)ALL_SUB_TOTAL: \"\"" }, - "displayCost": { + "substitutionFee": { "type": "string", - "title": "Optional. Calculation type, true unblended or unblended" + "title": "The substitutionTotalFee is name of substitution total fee.\nex)ALL_SUBSTITUTION: \"請求代行手数料\"" }, - "exchangeRateType": { + "supportFee": { "type": "string", - "title": "Optional. Exchange rate type, payer or billing group" + "title": "The supportTotalFee is name of support total fee.\nex)ALL_SUPPORT_BUSINESS: \"サポートビジネス費用\"" }, - "accountOptions": { - "$ref": "#/definitions/v1AccountOptions", - "description": "Optional. Account options." + "tax": { + "type": "string", + "title": "The tax is name of tax.\nex)ALL_TAX: \"消費税\"" }, - "invoices": { - "$ref": "#/definitions/v1CreateBillingGroupRequestInvoice", - "title": "Invoice settings" + "taxDiff": { + "type": "string", + "title": "The taxDiff is name of tax diff.\nex)ALL_TAX_DIFF: null" }, - "awsOptions": { - "$ref": "#/definitions/billingv1AwsOptions", - "title": "Optional. AWS-specific options" + "taxFree": { + "type": "string", + "title": "The taxFree is name of tax free.\nex)ALL_TAX_FREE: \"\"" }, - "city": { + "totalExchangeRate": { "type": "string", - "title": "Optional. Company's city" + "title": "The totalExchangeRate is name of total exchange rate.\nex)ALL_TOTAL_EXCHANGE: \"日本円換算後($1=JPY)\"" }, - "prefecture": { + "totalUsage": { "type": "string", - "title": "Optional. Company's prefecture" + "title": "The totalUsage is name of total usage.\nex)ALL_USAGE_TOTAL: \"小計\"" }, - "country": { + "total": { "type": "string", - "title": "Optional. Company's country" + "title": "The total is name of total.\nex)ALL_TOTAL: \"\"" } }, - "description": "Request message for the Billing.CreateBillingGroup rpc." + "description": "WORK-IN-PROGRESS: totalInvoiceLayout resource definition." }, - "v1CreateBillingGroupRequestInvoice": { + "v1AbcAccount": { "type": "object", "properties": { - "aws": { - "$ref": "#/definitions/v1CreateBillingGroupRequestInvoiceVendor", - "title": "AWS invoice settings" - }, - "azure": { - "$ref": "#/definitions/v1CreateBillingGroupRequestInvoiceVendor", - "title": "Azure invoice settings" + "accountId": { + "type": "string" }, - "gcp": { - "$ref": "#/definitions/v1CreateBillingGroupRequestInvoiceVendor", - "title": "GCP invoice settings" + "accountName": { + "type": "string" } - }, - "title": "Vendor invoice setttings" + } }, - "v1CreateBillingGroupRequestInvoiceVendor": { + "v1AbcBillingGroup": { "type": "object", "properties": { - "calcType": { - "type": "string" - }, - "discountRate": { - "type": "number", - "format": "double" - }, - "substitutionFee": { - "type": "string" - }, - "substitutionFix": { - "type": "number", - "format": "double" - }, - "substitutionRate": { - "type": "number", - "format": "double" - }, - "supportFee": { - "type": "string" - }, - "supportRate": { - "type": "number", - "format": "double" - }, - "supportFix": { - "type": "number", - "format": "double" - }, - "taxRate": { - "type": "number", - "format": "double" - }, - "currency": { - "type": "string" - }, - "discountTargetUsage": { + "arn": { "type": "string" }, - "substitutionFeeTargetUsage": { + "name": { "type": "string" }, - "discountCalcLogic": { + "creationTime": { "type": "string" }, - "substitutionFeeCalcTarget": { + "description": { "type": "string" }, - "substitutionFeeCalcType": { + "primaryAccountId": { "type": "string" }, - "supportAmountTarget": { + "size": { "type": "string" }, - "supportFeeCalcTarget": { + "status": { "type": "string" } - }, - "title": "Specific settings per vendor" + } }, - "v1CreateBudgetAlertsRequest": { + "v1AccountAccess": { "type": "object", "properties": { - "vendor": { + "target": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "accounts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. Lsit of accountId. For example, you set to [\"accountId1\",\"accountId2\",\"accountId3\"]." - }, - "notification": { - "$ref": "#/definitions/apiBudgetAlertNotification", - "description": "Required." - }, - "daily": { - "$ref": "#/definitions/apiDailyBudgetAlert", - "description": "Optional." + "description": "The queried target account." }, - "dailyRate": { - "$ref": "#/definitions/apiDailyRateIncreaseBudgetAlert", - "description": "Optional." + "accountName": { + "type": "string", + "title": "The account name" }, - "monthly": { - "$ref": "#/definitions/apiMonthlyBudgetAlert", - "description": "Optional." - } - }, - "description": "Request message for the CreateBudgetAlerts rpc." - }, - "v1CreateBudgetRequest": { - "type": "object", - "properties": { - "budgetData": { - "$ref": "#/definitions/coverBudgetData" - } - } - }, - "v1CreateBudgetResponse": { - "type": "object", - "properties": { - "budgetData": { - "$ref": "#/definitions/coverBudgetData" - } - } - }, - "v1CreateCalculationsScheduleRequest": { - "type": "object", - "properties": { - "vendor": { + "accountType": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "description": "The account type. Payer or linked account." }, - "schedule": { + "payerId": { "type": "string", - "description": "Required. The desired schedule in UTC, using the unix-cron string format `* * * * *` which is a set of five fields in a line using the order: `minute hour day-of-the-month month day-of-the-week`.\n\n* `minute` values can be `0-59`\n* `hour` values can be `0-23`\n* `day-of-the-month` values can be `1-31`\n* `month` values can be `1-12`, or `JAN-DEC`\n* `day-of-the-week` values can be `0-6`, or `SUN-SAT`, or `7` for Sunday\n\nSpecial characters:\n* A field can contain an asterisk (*), which always stands for \"first-last\".\n* Ranges are two numbers separated with a hyphen (-) and the specified range is inclusive.\n* Following a range with `/NUMBER` specifies skips of the number's value through the range. For example, both `0-23/2` and `*/2` can be used in the `hour` field to specify execution every two hours.\n* A list is a set of numbers (or ranges) separated by commas (,). For example, `1,2,5,6` in the `month` field specifies an execution on the first, second, fifth, and sixth days of the month." + "description": "The payer account of the account." }, - "scheduleMacro": { + "roleArn": { "type": "string", - "description": "Optional. Non-standard macro(s) that augment(s) `schedule`'s behavior. The only supported value for now is `@endofmonth`.\n\n`@endofmonth` - If set, the backend scheduler will only use the `minute` and `hour` part of `schedule`'s value and set the days to 28th, 29th, 30th, and 31st but the runner will do the filtering for the actual end of the trigger month. Note that this is different than setting `schedule` to, say, `0 0 28-31 * *`." + "description": "The role ARN that provides the cross-account access permissions." }, - "targetMonth": { + "externalId": { "type": "string", - "description": "Optional. The desired month to calculate. If not set, defaults to previous month. The only supported value for now is `@current`.\n\n`@current` - If set, calculate for the month the schedule is triggered (or current month)." + "description": "The external id for this role." }, - "notificationChannel": { + "stackId": { "type": "string", - "description": "Optional. The channel id to use for notifications. At the moment, only email-type notification channels are supported. If not set, your default channel will be used. And if non-existent, an email-type notification channel will be created using your primary email address." + "description": "The id of the CloudFormation stack deployed in the target account." }, - "force": { - "type": "boolean", - "description": "Optional. Not used at the moment." + "stackRegion": { + "type": "string", + "description": "The region where the stack is deployed." }, - "dryRun": { - "type": "boolean", - "description": "Optional. If set to true, skips the actual calculations. Useful as test, or reminder." - } - }, - "description": "Request message for the Cost.CreateCalculationsSchedule rpc." - }, - "v1CreateCalculatorCostModifierRequest": { - "type": "object", - "properties": { - "vendor": { + "templateUrl": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "description": "The latest template used to deploy the stack." }, - "awsOptions": { - "$ref": "#/definitions/v1CalculatorCostModifierAwsOptions", - "description": "Required if `{vendor}` is `aws`. AWS-specific options." + "bucketName": { + "type": "string", + "title": "The s3 bucket name" }, - "azureOptions": { - "$ref": "#/definitions/v1CalculatorCostModifierAzureOptions", - "description": "Required if `{vendor}` is `azure`. Azure-specific options." - } - }, - "description": "Request message for the Cost.CreateCalculatorCostModifier rpc." - }, - "v1CreateCalculatorCostModifierResponse": { - "type": "object", - "properties": { - "aws": { - "type": "array", - "items": { - "$ref": "#/definitions/v1CalculatorCostModifier" - } + "prefix": { + "type": "string", + "title": "Report path prefix" }, - "azure": { - "type": "array", - "items": { - "$ref": "#/definitions/v1CalculatorCostModifier" - } - } - }, - "description": "Response message for the Cost.CreateCalculatorCostModifier rpc." - }, - "v1CreateChannelRequest": { - "type": "object", - "properties": { - "name": { + "reportName": { "type": "string", - "title": "Required. Either actual email address or slack/msteams channel name" + "title": "The report name" }, - "type": { + "registrationStatus": { + "$ref": "#/definitions/coverRegistrationStatus", + "title": "The status of registration for CUR export, API access and Cloudwatch streaming" + }, + "status": { "type": "string", - "description": "Required. email, slack, or msteams." + "description": "This can be `latest`, `outdated`, or some error information." }, - "webhookUrl": { + "lastUpdated": { "type": "string", - "description": "Optional. Only needed for slack and msteams type." + "description": "The last updated timestamp, RFC3339 UTC." } }, - "title": "Request message for CreateChannel" + "description": "Response message for GetAccountAccess, CreateAccountAccess rpc." }, - "v1CreateChannelResponse": { + "v1AccountInvoiceServiceDiscounts": { "type": "object", "properties": { - "channelData": { - "$ref": "#/definitions/coverChannelData" + "id": { + "type": "string", + "description": "Service discount id." + }, + "account": { + "type": "string", + "description": "Account id." + }, + "serviceDiscounts": { + "$ref": "#/definitions/apiripplev1InvoiceServiceDiscounts", + "description": "service discount infomation." } }, - "title": "Response message for CreateChannel" + "description": "Streaming response message for the AccountInvoiceServiceDiscounts rpc." }, - "v1CreateCloudWatchMetricsStreamRequest": { + "v1AccountOptions": { "type": "object", "properties": { - "target": { - "type": "string", - "description": "Required. The target AWS account to validate." + "aws": { + "$ref": "#/definitions/v1RegisterAccounts", + "title": "AWS register accounts" + }, + "gcp": { + "$ref": "#/definitions/v1RegisterAccounts", + "title": "GCP register accounts" + }, + "azure": { + "$ref": "#/definitions/v1RegisterAccounts", + "title": "Azure register accounts" } }, - "description": "Request message for the Admin.CreateCloudWatchMetricsStream rpc." + "description": "Account options definition." }, - "v1CreateCostFiltersRequest": { + "v1AccountServiceDiscounts": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "filterName": { - "type": "string", - "title": "Required. Filter Name. Specify characters between 1 ~ 100" - }, - "groupId": { + "id": { "type": "string", - "description": "Required. If set, reads the usage-based cost details of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the usage-based cost details of the whole organization. Optional for AWS Wave(Pro)." + "description": "Service discount id." }, "accountId": { "type": "string", - "description": "Required. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the usage-based cost details of the whole organization." - }, - "awsOptions": { - "$ref": "#/definitions/v1ReadCostsRequestAwsOptions", - "description": "Required. Valid only for the `aws` vendor. AWS-specific options." + "description": "Account id." } - }, - "description": "Request message for the CreateCostFilters rpc." + } }, - "v1CreateCostFiltersResponse": { + "v1AccountServiceDiscountsExport": { "type": "object", "properties": { - "filterId": { - "type": "string", - "description": "Required. Filter Id." + "data": { + "$ref": "#/definitions/v1ExportData" } }, - "description": "Response message for the CreateCostFilters rpc." + "description": "AccountServiceDiscountsExport resource definition.\n\ndata is [blueapi.api.ripple.v1.ExportData]\n\ncontent. Base64 encoded value.\nFor example,\ncontent :`YmlsbGluZ0dyb3VwSWQsYmlsbGluZ0dyb3VwTmFtZSxWZW5kb3IsQWNjb3VudElkLEFjY291bnROYW1lLFNlcnZpY2UgUHJlbWl1bXMmRGlzY291bnRzDQo=`\nDecoding this value by en, get `billingGroupId,billingGroupName,Vendor,AccountId,AccountName,Service Premiums\u0026Discounts`.\ncontent :`6KuL5rGC44Kw44Or44O844OXSUQs6KuL5rGC44Kw44Or44O844OX5ZCNLOODmeODs+ODgOODvCzjgqLjgqvjgqbjg7Pjg4hJRCzjgqLjgqvjgqbjg7Pjg4jlkI0s44K144O844OT44K55Ymy5byV44O75Ymy5aKX6Kit5a6aDQo=`\nDecoding this value by ja, get `請求グループID,請求グループ名,ベンダー,アカウントID,アカウント名,サービス割引・割増設定`.\n\ndownloadedRows. Downloaded content lines.\n\ntotalRows.Total of content lines." }, - "v1CreateCostGroupRequest": { + "v1AccountUsageDetails": { "type": "object", "properties": { - "name": { + "id": { "type": "string" }, - "description": { + "orgId": { "type": "string" }, - "image": { + "vendor": { "type": "string" }, - "icon": { + "account": { "type": "string" }, - "colorTheme": { + "date": { "type": "string" }, - "combinations": { - "$ref": "#/definitions/coverCombinations" - } - }, - "title": "Request message for CreateCostGroup" - }, - "v1CreateCostGroupResponse": { - "type": "object", - "properties": { - "costGroupData": { - "$ref": "#/definitions/coverCostGroupData" - } - }, - "title": "Response message for CreateCostGroup" - }, - "v1CreateCustomFieldRequest": { - "type": "object", - "properties": { - "key": { + "productCode": { "type": "string" }, - "description": { + "serviceCode": { "type": "string" - } - } - }, - "v1CreateCustomizedBillingServiceRequest": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Required. [blueapi.api.ripple.CustomizedBillingService.name]" - }, - "description": { - "type": "string", - "title": "Optional. [blueapi.api.ripple.CustomizedBillingService.description]" - }, - "config": { - "$ref": "#/definitions/rippleMethodConfig", - "title": "Required. [blueapi.api.ripple.CustomizedBillingService.MethodConfig]" - } - }, - "description": "Request message for the Billing.CreateCustomizedBillingService rpc." - }, - "v1CreateDefaultCostAccessRequest": { - "type": "object", - "properties": { - "target": { - "type": "string", - "description": "Required. The target AWS account to validate." - } - }, - "description": "Request message for the Admin.CreateDefaultCostAccess rpc." - }, - "v1CreateDefaultNotificationChannelRequest": { - "type": "object", - "description": "Request message for the Admin.CreateDefaultNotificationChannel rpc." - }, - "v1CreateDiscountExpirationAlertRequest": { - "type": "object", - "properties": { - "frequencies": { - "type": "array", - "items": { - "type": "string", - "format": "int64" - }, - "title": "Required if the alertEnabled is set to true\nSupported values are the following:\n[0, 7, 30, 60, 90]" - }, - "costGroups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Required. Cost Group Id" }, - "alertEnabled": { - "type": "boolean", - "description": "required. Switch in enabling alert." - }, - "channels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "required. Array of notificationChannel Ids from DynamoDB. Existing in ripple." + "region": { + "type": "string" }, - "name": { - "type": "string", - "title": "required. Name of alert" - } - }, - "title": "Request message for CreateDiscountExpirationAlert" - }, - "v1CreateGroupRootUserRequest": { - "type": "object", - "properties": { - "email": { - "type": "string", - "description": "The email address of the user being created." + "zone": { + "type": "string" }, - "password": { - "type": "string", - "title": "The password of the user being created. A value will be generated if not is provided for this field" + "usageType": { + "type": "string" }, - "groupId": { - "type": "string", - "description": "The ID of the group to which the user will be added. This must either be a billing group ID or an access group ID." + "instanceType": { + "type": "string" }, - "groupType": { - "type": "string", - "description": "The type of group which is represented by the group ID. Valid values include \"billing_group\" or \"access_group\"." + "operation": { + "type": "string" }, - "inputType": { - "type": "string", - "description": "This value determines whether the password should be auto-generated or if the plaintext value received with the request should be used. A value of \"Auto\" will result in an auto-generated password whereas a value of \"Custom\" will result in the password included with the request being used." + "invoiceId": { + "type": "string" }, - "plan": { - "type": "string", - "description": "The plan associated with the root-user account. Valid values include \"trial\", \"limited3\" and \"limited4\"." + "description": { + "type": "string" }, - "emailNotification": { - "type": "boolean", - "description": "Whether or not a notification should be sent to the provided email after the user has been created." + "resourceId": { + "type": "string" }, - "meta": { - "$ref": "#/definitions/apiFeatureFlags", - "description": "A collection of feature flags and whether or not they should be enabled. For a full list of such flags, see https://labs.alphaus.cloud/docs/blueapi/apis/iam/." - } - }, - "title": "Request message for the Iam.CreateGroupRootUser rpc" - }, - "v1CreateIdentityProviderRequest": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Required. The IdP name." + "tags": { + "type": "string" }, - "type": { - "type": "string", - "description": "Required. Value is `saml`." + "costCategories": { + "type": "string" }, - "metadata": { - "type": "string", - "description": "Required. The contents of the metadata file from your IdP." - } - }, - "description": "Request message for the Iam.CreateIdentityProvider rpc." - }, - "v1CreateInvoiceRequest": { - "type": "object", - "properties": { - "date": { - "type": "string", - "description": "Required. Month to get invoice. Format: `yyyymm`." + "usageAmount": { + "type": "number", + "format": "double" }, - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "trueUnblendedCost": { + "type": "number", + "format": "double" }, - "allGroups": { - "type": "boolean", - "description": "Optional. You can set all billing groups.\n\nIf this parameter is not set, The list set to `groups` is used." + "unblendedCost": { + "type": "number", + "format": "double" }, - "groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Optional. You can set it to a list of billing internal group id" - } - }, - "description": "Request message for the CreateInvoice rpc." - }, - "v1CreateInvoiceServiceDiscountsRequest": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Required. [blueapi.api.ripple.v1.InvoiceServiceDiscounts.name]" + "effectiveCost": { + "type": "number", + "format": "double" }, - "description": { - "type": "string", - "title": "Optional. [blueapi.api.ripple.v1.InvoiceServiceDiscounts.description]" + "amortizedCost": { + "type": "number", + "format": "double" }, - "setting": { - "$ref": "#/definitions/v1InvoiceServiceDiscountsSetting", - "title": "Required. [blueapi.api.ripple.v1.InvoiceServiceDiscounts.InvoiceServiceDiscountsSetting]" - } - }, - "description": "Request message for the Billing.CreateInvoiceServiceDiscounts rpc." - }, - "v1CreateIpFilterRequest": { - "type": "object", - "properties": { - "value": { - "type": "string", - "description": "Required. The IP input to filter, either blacklist or whitelist. Should be in CIDR format (i.e. `1.2.3.4/32`)." + "publicOnDemandCost": { + "type": "number", + "format": "double" }, - "type": { - "type": "string", - "description": "Optional. Can be `whitelist` or `blacklist`. Defaults to `blacklist` if empty." + "unusedAmortizedCost": { + "type": "number", + "format": "double" }, - "rootUser": { - "type": "string", - "description": "Optional. If `rootUser` is valid and `subUser` is empty, filter is for this rootuser. If both `rootUser` and `subUser` inputs are empty, filter is at global scope." + "lastUpdate": { + "type": "string" }, - "subUser": { - "type": "string", - "description": "Optional. If `subuser` is valid, filter is for this subuser; `rootUser` value is discarded. If both `rootUser` and `subUser` inputs are empty, filter is at global scope." + "splitStatus": { + "type": "string" + }, + "isAllocated": { + "type": "boolean" + }, + "isApplied": { + "type": "boolean" + }, + "source": { + "type": "string" } }, - "description": "Request message for the Iam.CreateIpFilter rpc." + "description": "Response message for SimulateAccountCostAllocator rpc." }, - "v1CreateMemberRequest": { + "v1ActivateUserRequest": { "type": "object", "properties": { - "email": { + "userId": { + "type": "string" + }, + "previousPassword": { "type": "string" }, "password": { @@ -24230,5871 +24223,5945 @@ "name": { "type": "string" }, - "costgroups": { - "type": "array", - "items": { - "type": "string" - } + "locale": { + "type": "string" + }, + "email": { + "type": "string", + "description": "Email. For auth0 email validation." + }, + "isAuth0": { + "type": "boolean" + }, + "auth0UserId": { + "type": "string", + "description": "Auth0 user Id. For updating of user metadata." } }, - "title": "Request message for CreateMember" + "title": "Request message for ActivateUser" }, - "v1CreateMemberResponse": { + "v1ActivateUserResponse": { "type": "object", "properties": { "userData": { "$ref": "#/definitions/coverUserData" } }, - "title": "Response message for CreateMember" + "title": "Response message for ActivateUser" }, - "v1CreateNotificationChannelRequest": { + "v1AddFavoriteRequest": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Required. Name of the notification channel." - }, - "type": { - "type": "string", - "description": "Required. Valid values: `email`, `slack`, `msteams`." - }, - "email": { - "$ref": "#/definitions/apiEmailChannel", - "description": "Required if type = `email`." - }, - "slack": { - "$ref": "#/definitions/apiSlackChannel", - "description": "Required if type = `slack`." - }, - "msteams": { - "$ref": "#/definitions/apiMSTeamsChannel", - "description": "Required if type = `msteams`." - }, - "product": { + "viewId": { "type": "string", - "description": "Optional. For Octo use only: `octo`." + "description": "Required. View Id." } }, - "description": "Request message for the Admin.CreateNotificationChannel rpc." + "title": "Request message for AddFavorite" }, - "v1CreateNotificationRequest": { + "v1AddFavoriteResponse": { "type": "object", "properties": { - "notificationType": { - "type": "string", - "description": "Required\nValid values:\n`InvoiceCalculationStarted`,\n`InvoiceCalculationFinished`,\n`CurUpdatedAfterInvoice`.\n`AccountBudgetAlert`." - }, - "channels": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Required" - }, - "enabled": { - "type": "boolean", - "title": "Required" - }, - "account": { - "$ref": "#/definitions/adminv1NotificationAccount", - "description": "Optional. only available Wave(Pro)." + "viewId": { + "type": "string" } }, - "description": "Request message for the Admin.CreateNotificationTypeChannels rpc." + "title": "Response message for AddFavorite" }, - "v1CreateOrgRequest": { + "v1AddInfotoMarketplaceRequest": { "type": "object", "properties": { - "email": { - "type": "string", - "title": "Required. Organization's email" - }, - "description": { - "type": "string", - "title": "Required. Organization's description or company name" - }, - "password": { - "type": "string", - "description": "Optional. User can decide to let the system generates the password." - }, - "name": { - "type": "string", - "title": "To be used for onboarding profile" - }, - "role": { - "type": "string" - }, - "usage": { - "type": "string" - }, - "intention": { + "customerIdentifier": { "type": "string" - }, - "isAuth0Signup": { - "type": "boolean" - }, - "customerId": { - "type": "string", - "title": "Optional. Customer Id from AWS marketplace" - }, - "locale": { - "type": "string", - "description": "Optional. User locale. Default value is en if not supplied." - }, - "auth0UserId": { + } + } + }, + "v1AddInfotoMarketplaceResponse": { + "type": "object" + }, + "v1AddMpnSettingRequest": { + "type": "object", + "properties": { + "mpnId": { "type": "string", - "description": "Optional. Auth0 user id for users registering using social login." + "title": "Partner Id / MPN Id" } }, - "description": "Request message for the Organization.CreateOrg rpc." + "title": "Request message for AddMpnSetting" }, - "v1CreateOrgResponse": { + "v1AddPartnerCenterCredentialsRequest": { "type": "object", "properties": { - "org": { - "$ref": "#/definitions/rippleOrg" + "accountId": { + "type": "string", + "title": "The account Id" }, - "password": { - "type": "string" + "applicationId": { + "type": "string", + "title": "Application Id" + }, + "secretKey": { + "type": "string", + "title": "Secret Key" } }, - "description": "Response message for the Organization.CreateOrg rpc." + "title": "Request message for AddPartnerCenterCredentials" }, - "v1CreatePartnerTokenRequest": { + "v1AddSideMenuFavoriteResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Required. Partner id or audience for the token." + "viewId": { + "type": "string" } }, - "description": "Request message for the Iam.CreatePartnerToken rpc." + "title": "Response message for AddSideMenuFavorite" }, - "v1CreatePayerAccountRequest": { + "v1AllocationItem": { "type": "object", "properties": { "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "type": "string" }, - "awsOptions": { - "$ref": "#/definitions/v1CreatePayerAccountRequestAwsOptions", - "description": "Required for the `aws` vendor. AWS-specific options." + "month": { + "type": "string" + }, + "product": { + "type": "string" + }, + "account": { + "type": "string" + }, + "type": { + "type": "string" + }, + "cost": { + "type": "number", + "format": "double" } }, - "description": "Request message for the Cost.CreatePayerAccount rpc." + "description": "Response message wrapper for cost group allocations." }, - "v1CreatePayerAccountRequestAwsOptions": { + "v1Allocator": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Required. The id of the management account." - }, - "name": { - "type": "string", - "description": "Optional. The name, or description of the management account. This is set to `id` when not specified." - }, - "bucketName": { + "type": { "type": "string", - "description": "Required. S3 Bucket name." + "description": "Required. The type where the adjustments are to be applied. This can support `account`, `costGroup` and `payer`." }, - "prefix": { + "value": { "type": "string", - "description": "Optional. Prefix." + "description": "Required. The value for the specified attribute. `accountId` for account, `costGroupId` for cost group, `payerId` for payer and account name regex for account name." }, - "reportName": { + "formula": { "type": "string", - "description": "Required. Report name." + "description": "Required. The formula to use to compute the value of the allocation on an attribute. If left blank, allocation is based on usage." }, - "roleArn": { + "months": { "type": "string", - "description": "Required. Role ARN for Alphaus to assume for access." + "format": "int64", + "description": "Optional. The number of months the adjustment is to be applied. If set, it will divide the cost equally to the number of months." } - }, - "description": "See [https://help.alphaus.cloud/en/articles/3612555-ripple-aws-things-you-need-to-prepare-before-starting] for more information.\n\nSee [https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html] for more information. Requirements include: Additional report details = 'Include Resource IDS' enabled, Prefix = non-empty (recommendation only), Time granularity = 'Hourly', File format = 'text/csv'." + } }, - "v1CreateProfilingRequest": { + "v1AnomalyAlertData": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "role": { + "id": { "type": "string" }, - "usage": { + "orgId": { "type": "string" }, - "intention": { + "name": { "type": "string" }, - "companyName": { - "type": "string" + "alertEnabled": { + "type": "boolean" }, - "emailAddress": { + "frequency": { "type": "string" }, - "linkSource": { - "type": "string" + "costGroupId": { + "$ref": "#/definitions/coverAlertCostGroup" }, - "hasSubscribedUpdates": { - "type": "boolean" + "channels": { + "$ref": "#/definitions/coverAlertChannels" } } }, - "v1CreateProfilingResponse": { - "type": "object" - }, - "v1CreateProformaCurRequest": { + "v1AnomalyData": { "type": "object", "properties": { - "payerId": { - "type": "string", - "description": "Required." + "account": { + "type": "string" }, - "billingInternalId": { - "type": "string", - "description": "Required." + "costGroupId": { + "type": "string" }, - "reportName": { - "type": "string", - "description": "Required." + "vendor": { + "type": "string" }, - "s3BucketName": { - "type": "string", - "title": "Optional. Default value: `alphaus-proforma-cur-export`" + "product": { + "type": "string" }, - "s3Prefix": { - "type": "string", - "title": "Optional. Default value: `pre`" + "date": { + "type": "string" }, - "s3Region": { - "type": "string", - "title": "Optional. Default value: `us-east-1`" + "totalCost": { + "type": "number", + "format": "float" + }, + "isAnomaly": { + "type": "boolean", + "title": "The value will be true if there is an anomaly for a specific account and product" + }, + "lowerLimit": { + "type": "number", + "format": "float", + "title": "Lower bound. If the total cost is lesser than the lowerlimit it is considered as anomaly" + }, + "upperLimit": { + "type": "number", + "format": "float", + "title": "Upper bound. If the total cost is greater than the upperlimit it is considered as anomaly" + }, + "anomalyCost": { + "type": "number", + "format": "float", + "title": "The difference of the total cost and the upperlimit or lowerlimit if it is anomamly, if not anomaly then anomaly cost is 0" + }, + "anomalyProbability": { + "type": "number", + "format": "float", + "title": "How many percentage does the data is considered anomaly" } }, - "title": "Request message for Admin.CreateProformaCur rpc" + "title": "Message response for anomaly detection" }, - "v1CreateResellerRequest": { + "v1AssetsSummary": { "type": "object", "properties": { - "groupId": { + "date": { "type": "string", - "description": "Required. You can set billing internal id or access group id." + "title": "Format is `yyyy-mm`" }, - "email": { + "vendor": { "type": "string", - "description": "Required." + "description": "Only `aws` is supported for now." }, - "password": { + "totalResources": { "type": "string", - "description": "Required.\n\nWe recommend a password length of 8~32 characters. If you send 0 characters, a password will be generated automatically." - }, - "notification": { - "type": "boolean", - "description": "Required. If valid, you will be notified via email address." + "format": "int64", + "title": "Total number of resources" }, - "waveConfig": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleResellerConfig" - }, - "title": "Optional. Feature Config. If not set config value, use default config" + "totalCost": { + "type": "number", + "format": "double", + "description": "Total Cost incurred for the resources on specified month." + } + } + }, + "v1AssignCostGroupMemberResponse": { + "type": "object", + "properties": { + "costGroupId": { + "type": "string" }, - "aquaConfig": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleResellerConfig" - }, - "title": "Optional. Feature Config. If not set config value, use default config" + "userId": { + "type": "string" } }, - "description": "Request message for the CreateReseller rpc." + "title": "Response message for AssignCostGroupMember" }, - "v1CreateRoleRequest": { + "v1AssignPayerResponse": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Required. The name of the role to create. Role names should have at least 6 characters in length and 32 characters maximum. It should also be alphanumeric. Hyphens and underscores are allowed in between. The regular expression used for validation is `^[A-Za-z0-9][A-Za-z0-9_-]*[A-Za-z0-9]$`." + "accountId": { + "type": "string" }, - "namespace": { + "payerId": { + "type": "string" + } + }, + "title": "Response message for AssignPayer" + }, + "v1Attribute": { + "type": "object", + "properties": { + "key": { "type": "string", - "description": "Required. The namespace where this role will belong." + "description": "Filter key." }, - "permissions": { + "values": { "type": "array", "items": { "type": "string" }, - "description": "Required. The list of permissions to attach to this role." + "description": "Array of filter values." } - }, - "description": "Request message for the Iam.CreateRole rpc." + } }, - "v1CreateUnitTypeRequest": { + "v1AwsDailyRunHistory": { "type": "object", "properties": { - "unitName": { + "billingInternalId": { "type": "string" }, - "unitItems": { + "billingGroupId": { + "type": "string" + }, + "month": { + "type": "string" + }, + "accounts": { "type": "array", "items": { - "$ref": "#/definitions/coverUnitItem" + "type": "object", + "$ref": "#/definitions/v1AwsDailyRunHistoryAccount" } - }, - "description": { - "type": "string" } - } + }, + "description": "Streaming response message for the Billing.ListAwsDailyRunHistory rpc." }, - "v1CreateUnitTypeResponse": { + "v1AwsDailyRunHistoryAccount": { "type": "object", "properties": { - "unitCostData": { - "$ref": "#/definitions/coverUnitCostData" + "accountId": { + "type": "string" + }, + "history": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/AccountHistory" + } } } }, - "v1CreateUserRequest": { + "v1BillingAccountRequest": { "type": "object", "properties": { - "name": { + "billingId": { + "type": "string", + "description": "Required. The billing account id." + }, + "datasetId": { "type": "string", - "description": "Required. Min: 4, max: 18, allowed characters: letters, numbers, `_` (underscore), `.` (period) and `-` (hyphen) characters." + "description": "Name of dataset you created." }, - "password": { + "datasetRegion": { "type": "string", - "description": "Required. Minimum of 8 characters." + "description": "In creating dataset, It requires you to select a region." }, - "email": { + "projectId": { "type": "string", - "description": "Optional. Email address of the subuser." + "description": "Project Id where the datasetId of BQ can be found." }, - "nickName": { + "billingName": { "type": "string", - "description": "Optional. Nickname or description. It is set to 'name' if empty." + "description": "Optional. Billing Name, this can be set by the users in Octo UI." } }, - "description": "Request message for the Iam.CreateUser rpc." + "title": "Request message for AddBillingAccount" }, - "v1CreateUserRoleMappingRequest": { + "v1BillingGroup": { "type": "object", "properties": { - "subUser": { + "billingInternalId": { "type": "string", - "description": "Optional. The subuser to map the roles. Defaults to caller if not set." + "description": "The billing group's internal id." }, - "roles": { + "billingGroupId": { + "type": "string", + "description": "The billing group id." + }, + "billingGroupName": { + "type": "string", + "description": "The billing group name." + }, + "companyName": { + "type": "string", + "description": "The company’s name." + }, + "type": { + "type": "string", + "title": "For aws only: `default` or `imported`" + }, + "billingGroupInfo": { + "$ref": "#/definitions/rippleBillingGroupInfo", + "title": "The billing group info" + }, + "accountOptions": { + "$ref": "#/definitions/v1AccountOptions", + "description": "The account options." + }, + "accounts": { "type": "array", "items": { - "$ref": "#/definitions/v1MapRole" + "type": "object", + "$ref": "#/definitions/blueapiapiAccount" }, - "description": "Required. The roles to map to the user. Limited to 5 items." + "title": "List of all accounts" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiCostTag" + }, + "title": "List of all tags" + }, + "invoiceSettings": { + "$ref": "#/definitions/v1BillingGroupInvoiceSettings", + "description": "The invoice settings for this billing group." + }, + "additionalItems": { + "$ref": "#/definitions/v1BillingGroupAdditionalItems", + "title": "List of all additionalItems" + }, + "awsOptions": { + "$ref": "#/definitions/billingv1AwsOptions", + "title": "AWS-specific options" } - }, - "description": "Request message for the Iam.CreateUserRoleMapping rpc." + } }, - "v1CreateUserRoleMappingResponse": { + "v1BillingGroupAdditionalItems": { "type": "object", "properties": { - "success": { + "aws": { "type": "array", "items": { - "type": "string" - } + "type": "object", + "$ref": "#/definitions/apiAdditionalItems" + }, + "title": "AWS additional items" }, - "failed": { + "azure": { "type": "array", "items": { - "type": "string" - } + "type": "object", + "$ref": "#/definitions/apiAdditionalItems" + }, + "title": "Azure additional items" }, - "filters": { + "gcp": { "type": "array", "items": { - "type": "string" - } + "type": "object", + "$ref": "#/definitions/apiAdditionalItems" + }, + "title": "GCP additional items" } }, - "description": "Response message for the Iam.CreateUserRoleMapping rpc." + "description": "Additional items for a billing group." }, - "v1CreateViewRequest": { + "v1BillingGroupInvoiceSettings": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "isEditable": { - "type": "boolean" - }, - "icon": { - "type": "string" - }, - "reportType": { - "type": "string" + "aws": { + "$ref": "#/definitions/v1BillingGroupVendoredInvoiceSetting", + "title": "AWS invoice settings" }, - "colorTheme": { - "type": "string" + "azure": { + "$ref": "#/definitions/v1BillingGroupVendoredInvoiceSetting", + "title": "Azure invoice settings" }, - "reportPeriod": { - "type": "string" - } - }, - "title": "Request message for CreateView" - }, - "v1CreateViewResponse": { - "type": "object", - "properties": { - "viewData": { - "$ref": "#/definitions/coverViewData" - } - }, - "title": "Response message for CreateView" - }, - "v1Criteria": { - "type": "object", - "properties": { - "and": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "gcp": { + "$ref": "#/definitions/v1BillingGroupVendoredInvoiceSetting", + "title": "GCP invoice settings" } }, - "description": "A map of \"key:value\" attribute filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc." + "description": "Invoice settings for a billing group." }, - "v1CustomField": { + "v1BillingGroupSection": { "type": "object", "properties": { "id": { "type": "string", - "description": "Unique identifier for the custom field, automatically generated and immutable." + "title": "The id. id:billing internald id" }, - "key": { + "name": { "type": "string", - "title": "Descriptive name of the custom field" + "title": "The id. name:billing name" }, - "description": { + "yearMonth": { "type": "string", - "title": "Detailed description of the custom field" + "title": "The year-month. format: yyyymm" + }, + "currency": { + "type": "string", + "description": "The currency." + }, + "invocieCost": { + "type": "number", + "format": "double", + "description": "The invoice cost." + }, + "procurementCost": { + "type": "number", + "format": "double", + "description": "The procurement cost." + }, + "profitCost": { + "type": "number", + "format": "double", + "description": "The profit cost." } - } + }, + "description": "BillingGroupSection resource definition." }, - "v1DataAccess": { + "v1BillingGroupVendoredInvoiceSetting": { "type": "object", "properties": { - "target": { - "type": "string", - "title": "Billing Id for GCP, Account Id for Azure" + "calcType": { + "type": "string" }, - "orgId": { - "type": "string", - "title": "Org Id" + "discountRate": { + "type": "number", + "format": "double" }, - "gcpOptions": { - "$ref": "#/definitions/coverGcpOptions", - "title": "GCP Options" + "substitutionFee": { + "type": "string" }, - "azureOptions": { - "$ref": "#/definitions/apicoverAzureOptions", - "title": "Azure Options" + "substitutionFix": { + "type": "number", + "format": "double" }, - "awsOptions": { - "$ref": "#/definitions/apicoverAwsOptions" + "substitutionRate": { + "type": "number", + "format": "double" }, - "accountType": { - "type": "string", - "title": "Account type, linked or payer" + "supportFee": { + "type": "string" }, - "lastUpdate": { - "type": "string", - "title": "Last Update" + "supportRate": { + "type": "number", + "format": "double" + }, + "supportFix": { + "type": "number", + "format": "double" + }, + "taxRate": { + "type": "number", + "format": "double" + }, + "currency": { + "type": "string" + }, + "discountTargetUsage": { + "type": "string" + }, + "substitutionFeeTargetUsage": { + "type": "string" + }, + "discountCalcLogic": { + "type": "string" + }, + "substitutionFeeCalcTarget": { + "type": "string" + }, + "substitutionFeeCalcType": { + "type": "string" }, - "createTime": { - "type": "string", - "title": "Time Created" + "supportAmountTarget": { + "type": "string" }, - "vendor": { + "supportFeeCalcTarget": { "type": "string" } }, - "title": "Message Response for GetDataAccess. For Azure and GCP" + "description": "Invoice settings that are vendor-specific for each billing group." }, - "v1DefaultCostAccess": { + "v1BudgetAlerts": { "type": "object", "properties": { - "target": { - "type": "string", - "description": "The queried target account." - }, - "roleArn": { + "id": { "type": "string", - "description": "The role ARN that provides the cross-account access permissions." + "description": "Budget alert Id." }, - "externalId": { + "vendor": { "type": "string", - "description": "The external id for this role." + "description": "Vnedor. At the moment, only `aws` is supported." }, - "stackId": { - "type": "string", - "description": "The id of the CloudFormation stack deployed in the target account." + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/blueapiapiAccount" + }, + "description": "Lsit of accountId." }, - "stackRegion": { - "type": "string", - "description": "The region where the stack is deployed." + "notification": { + "$ref": "#/definitions/apiBudgetAlertNotificationDetail", + "description": "Notification setting for budget alert." }, - "templateUrl": { - "type": "string", - "description": "The latest template used to deploy the stack." + "daily": { + "$ref": "#/definitions/apiDailyBudgetAlert", + "description": "Daily setting for budget alert." }, - "status": { - "type": "string", - "description": "This can be `latest`, `outdated`, or some error information." + "dailyRate": { + "$ref": "#/definitions/apiDailyRateIncreaseBudgetAlert", + "description": "Daily rate increase setting for budget alert." }, - "lastUpdated": { - "type": "string", - "description": "The last updated timestamp, RFC3339 UTC." - } - }, - "description": "Response message for the Admin.GetDefaultCostAccess, Admin.CreateDefaultCostAccess rpc." - }, - "v1DeleteAccountAccessResponse": { - "type": "object", - "properties": { - "targetId": { - "type": "string" - } - }, - "description": "Response message for the DeleteAccountAccess rpc." - }, - "v1DeleteAlertResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "title": "Response message for DeleteAlert" - }, - "v1DeleteBudgetResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "v1DeleteChannelResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "title": "Response message for DeleteChannel" - }, - "v1DeleteCostGroupResponse": { - "type": "object", - "properties": { - "costGroupId": { - "type": "string" - } - }, - "title": "Response message for DeleteCostGroup" - }, - "v1DeleteMemberResponse": { - "type": "object", - "properties": { - "userId": { - "type": "string" + "monthly": { + "$ref": "#/definitions/apiMonthlyBudgetAlert", + "description": "Monthly setting for budget alert." } }, - "title": "Response message for DeleteMember" + "description": "Request message for the BudgetAlerts rpc." }, - "v1DeleteUnitTypeResponse": { + "v1CalculateCostsRequestAwsOptions": { "type": "object", "properties": { - "id": { - "type": "string" + "force": { + "type": "boolean", + "description": "Optional. If set to true, discard existing calculation operation(s), if any, and make this as the active/latest one. By default, if there is an ongoing operation during the call, the request will fail." + }, + "accountsOnly": { + "type": "boolean", + "description": "Optional. If set to true, only calculate for account-type billing groups. If both `accountsOnly` and `tagsOnly` are set to true, `accountsOnly` will prevail." + }, + "tagsOnly": { + "type": "boolean", + "description": "Optional. If set to true, only calculate for tags-type billing groups. Discarded when the organization doesn't have any tag-based billing groups configured. If both `accountsOnly` and `tagsOnly` are set to true, `accountsOnly` will prevail." } } }, - "v1DeleteViewResponse": { - "type": "object", - "properties": { - "viewId": { - "type": "string" - } - }, - "title": "Response message for DeleteView" - }, - "v1DiscountExpiryAlertData": { + "v1CalculationsSchedule": { "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "description": "The schedule id." }, - "orgId": { - "type": "string" + "schedule": { + "type": "string", + "description": "The desired schedule in UTC, using the [cron](https://man7.org/linux/man-pages/man5/crontab.5.html) format." }, - "alertEnabled": { - "type": "boolean" + "scheduleMacro": { + "type": "string", + "description": "The macro that augments `schedule`." }, - "frequencies": { - "type": "array", - "items": { - "type": "string", - "format": "int64" - } + "targetMonth": { + "type": "string", + "description": "The target month for the calculation. Empty means previous month (default)." }, - "costGroups": { - "type": "array", - "items": { - "$ref": "#/definitions/coverAlertCostGroup" - } + "nextRun": { + "type": "string", + "description": "The schedule for the next run in UTC." }, - "details": { - "type": "string" + "notificationChannel": { + "type": "string", + "description": "The channel id to use for notifications." }, - "channels": { - "$ref": "#/definitions/coverAlertChannels" + "force": { + "type": "boolean", + "description": "If set to true, force calculations to proceed regardless of run status." }, - "name": { - "type": "string" + "dryRun": { + "type": "boolean", + "description": "If set to true, skips the actual calculations." + }, + "status": { + "type": "string", + "description": "The current state of this schedule. Normally set to \"OK\", or empty if no issues. Otherwise, will contain an error string." } } }, - "v1ExchangeRates": { + "v1CalculatorCostModifier": { "type": "object", "properties": { - "month": { + "id": { "type": "string" }, - "exchangeRate": { - "type": "number", - "format": "float" + "createTime": { + "type": "string" }, - "date": { + "updateTime": { "type": "string" + }, + "awsOptions": { + "$ref": "#/definitions/v1CalculatorCostModifierAwsOptions" + }, + "azureOptions": { + "$ref": "#/definitions/v1CalculatorCostModifierAzureOptions" } } }, - "v1ExecuteOptimizationRequest": { + "v1CalculatorCostModifierAwsOptions": { "type": "object", "properties": { - "recommendationId": { - "type": "string" + "accountId": { + "type": "string", + "description": "Optional. The account to which the modifier is applied. A comma-separated list of accounts is also valid." + }, + "groupId": { + "type": "string", + "description": "Optional. The group to which the modifier is applied. Accepts billing internal ids. A comma-separated list of billing internal ids is also valid." + }, + "payerId": { + "type": "string", + "description": "Optional. The payer id to which the modifier is applied. A comma-separated list of payer ids is also valid." + }, + "qualifiers": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1CalculatorCostModifierAwsOptionsQualifier" + }, + "description": "Optional. Conditional qualifiers to further filter the modifier targets. Multiple qualifiers use the logical `or` operator; `qualifiers[0] || qualifiers[1] || qualifiers[n]`." + }, + "modifier": { + "$ref": "#/definitions/v1CalculatorCostModifierAwsOptionsModifier" + }, + "after": { + "type": "string", + "description": "Optional. Specifies the modifier id in which this modifier will be applied after. For example, if you have another modifier `mod1` and you create a new modifier with `after` set to `mod1`, the calculator will apply `mod1` first, then this modifier. If `after` is not set, the application sequence for multiple overlapping modifiers will be by update timestamp, newest to oldest." + }, + "createNewRow": { + "type": "boolean", + "description": "Optional. Default to false. If set to true, the modifier will create a new row in the table with similar data that satisfies the qualifier the only differences is it contains the amount to be subtracted or to be added. If set to false, the modifier will update the cost directly." } - } - }, - "v1ExecuteOptimizationResponse": { - "type": "object" + }, + "description": "AWS-specific options definition." }, - "v1ExportAccountInvoiceServiceDiscountsRequest": { + "v1CalculatorCostModifierAwsOptionsModifier": { "type": "object", "properties": { - "format": { + "formula": { "type": "string", - "description": "Required. At the moment, `CSV` is supported.", - "required": [ - "format" - ] + "description": "Required. Our modifier formula. The final result should be a number. Integers are converted to floating points.\n\nSupported operators are `*`, `/`, `+`, `-`, and `%`. You can use parenthesis `()` to control precedence. Additional supported operators include `==`, `!=`, `!`, `\u003e`, `\u003c`, `\u003e=`, `\u003c=`, and the ternary operator `? :`, or `cond ? expr1 : expr2`.\nExamples:\n `1 + 2 * 3` = 7\n `(1 + 2) * 3` = 9\n `7.8 % 5` = 2.8\n `true ? 1.1 : 2.2` = 1.1\n `1 \u003e 2 ? 1.1 : 2.2` = 2.2\n\nYou can use the `cost` variable to reference the original lineitem cost. For example, if you want to add $10 to the cost, you can use the formula: `cost + 10`. For trueunblended-type billing groups, `cost` refers to the calculated trueunblended cost.\n\nThe `usage` variable refers to the usage amount of a lineitem. For example, if you want to use a different rate of $1.5, you can use the formula: `usage * 1.5`.\n\nThe `unblendedcost` variable refers to the lineitem's unblended cost as indicated in the CUR. Note that the `unblendedcost` variable is different than the `cost` variable, although there are cases where the two are equal.\n\nThe `ondemandrate` variable refers to the lineitem's public ondemand rate as indicated in the CUR.\n\nYou can check out this [guide](https://alphauslabs.github.io/docs/guides/aws-cost-mods/) for more examples." }, - "language": { - "type": "string", - "description": "Optional. At the moment, `ja`,`en` is supported.\n\nUsually the language of the user information is used, \nbut it may be a different language due to cahce.\nIn that case, you can use this option to change the language of CSV." - } - }, - "description": "Request message for the ExportAccountInvoiceServiceDiscounts rpc.", - "required": [ - "format" - ] + "descriptionModifier": { + "$ref": "#/definitions/v1CalculatorCostModifierAwsOptionsModifierDescriptionModifier", + "description": "Optional. A simple description modifier." + } + } }, - "v1ExportAuditLogsRequest": { + "v1CalculatorCostModifierAwsOptionsModifierDescriptionModifier": { "type": "object", "properties": { - "format": { + "prefix": { "type": "string", - "description": "Required. At the moment, `CSV`,`JSON` is supported." + "description": "Optional. Add a prefix to the description." }, - "startTime": { + "suffix": { "type": "string", - "description": "Required. The UTC date to start data from. If not set, the first day of the current year will be used. Format: `yyyymmdd`." + "description": "Optional. Add a suffix to the description." }, - "endTime": { + "replace": { "type": "string", - "description": "Required. The UTC date to end data from. If not set, the first day of the current year will be used. Format: `yyyymmdd`." + "description": "Optional. Replace the description with the input." + }, + "replaceMatch": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. Replace matching occurences with the input. The key part is the regular expression matcher based on https://github.com/google/re2, while the value is the replacement. The order of replacement is not guaranteed.\n\nYou can use the `{{ondemandrate}}` variable in the replacement value part to reference the public ondemand rate indicated in the CUR." } - }, - "description": "Request message for the ExportAuditLogs rpc." + } }, - "v1ExportBillingGroupInvoiceServiceDiscountsRequest": { + "v1CalculatorCostModifierAwsOptionsQualifier": { "type": "object", "properties": { - "format": { - "type": "string", - "description": "Required. At the moment, `CSV` is supported.", - "required": [ - "format" - ] - }, - "language": { - "type": "string", - "description": "Optional. At the moment, `ja`,`en` is supported.\n\nUsually the language of the user information is used, \nbut it may be a different language due to cahce.\nIn that case, you can use this option to change the language of CSV." + "and": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, - "description": "Request message for the ExportBillingGroupInvoiceServiceDiscounts rpc.", - "required": [ - "format" - ] + "description": "A map of \"key:value\" attribute filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like your modifiers to apply to `productCode:AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means apply to all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means apply to all items except `AmazonEC2`. Valid keys are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `description`, and `resourceId`." }, - "v1ExportCostFiltersFileRequest": { + "v1CalculatorCostModifierAzureOptions": { "type": "object", "properties": { - "vendor": { + "groupId": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "description": "Optional. The group to which the modifier is applied. Accepts billing internal ids. A comma-separated list of billing internal ids is also valid." }, - "filterId": { + "payerId": { "type": "string", - "description": "Required. Filter Id." + "description": "Optional. The payer id (a.k.a Azure billing id) to which the modifier is applied. A comma-separated list of payer ids is also valid." }, - "startTime": { + "customerId": { "type": "string", - "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20200101`." + "description": "Optional. The Azure customer id to which the modifier is applied. A comma-separated list of customers is also valid." }, - "endTime": { + "subscriptionId": { "type": "string", - "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmd`." - }, - "groupByMonth": { - "type": "boolean", - "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`." + "description": "Optional. The Azure subscription id to which the modifier is applied. A comma-separated list of subscriptions is also valid." }, - "groupByColumns": { + "entitlementId": { "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, and `resourceId`. A special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `productCode,region`. Your input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/aws/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." + "description": "Optional. The Azure entitlement id to which the modifier is applied. A comma-separated list of entitlements is also valid." }, - "includeTags": { - "type": "boolean", - "description": "Optional. If set to true, stream will include resource tags." + "qualifiers": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1CalculatorCostModifierAzureOptionsQualifier" + }, + "description": "Optional. Conditional qualifiers to further filter the modifier targets. Multiple qualifiers use the logical `or` operator; `qualifiers[0] || qualifiers[1] || qualifiers[n]`." + }, + "modifier": { + "$ref": "#/definitions/v1CalculatorCostModifierAzureOptionsModifier" + }, + "after": { + "type": "string", + "description": "Optional. Specifies the modifier id in which this modifier will be applied after. For example, if you have another modifier `mod1` and you create a new modifier with `after` set to `mod1`, the calculator will apply `mod1` first, then this modifier. If `after` is not set, the application sequence for multiple overlapping modifiers will be by update timestamp, newest to oldest." } }, - "description": "Request message for the ExportCostFiltersFile rpc." + "description": "Azure-specific options definition." }, - "v1ExportCostFiltersFileResponse": { + "v1CalculatorCostModifierAzureOptionsModifier": { "type": "object", "properties": { - "url": { + "formula": { "type": "string", - "description": "Required. URL of exported file." + "description": "Required. Our modifier formula. The final result should be a number. Integers are converted to floating points.\n\nSupported operators are `*`, `/`, `+`, `-`, and `%`. You can use parenthesis `()` to control precedence. Additional supported operators include `==`, `!=`, `!`, `\u003e`, `\u003c`, `\u003e=`, `\u003c=`, and the ternary operator `? :`, or `cond ? expr1 : expr2`.\nExamples:\n `1 + 2 * 3` = 7\n `(1 + 2) * 3` = 9\n `7.8 % 5` = 2.8\n `true ? 1.1 : 2.2` = 1.1\n `1 \u003e 2 ? 1.1 : 2.2` = 2.2\n\nYou can use the `cost` variable to reference the original lineitem cost. For example, if you want to add $10 to the cost, you can use the formula: `cost + 10`. For trueunblended-type billing groups, `cost` refers to the calculated trueunblended cost.\n\nThe `quantity` variable refers to the billable quantity amount of a lineitem. For example, if you want to use a different rate of $1.5, you can use the formula: `quantity * 1.5`.\n\nThe `unitPrice` variable refers to the lineitem's effective unit price as indicated in the Azure invoice.\n\nYou can check out this [guide](https://alphauslabs.github.io/docs/guides/aws-cost-mods/) for more examples." + }, + "descriptionModifier": { + "$ref": "#/definitions/v1CalculatorCostModifierAzureOptionsModifierDescriptionModifier", + "description": "Optional. A simple description modifier." } - }, - "description": "Response message for the ExportCostFiltersFile rpc." + } }, - "v1ExportData": { + "v1CalculatorCostModifierAzureOptionsModifierDescriptionModifier": { "type": "object", "properties": { - "content": { + "prefix": { "type": "string", - "description": "Base64 encoded value." + "description": "Optional. Add a prefix to the description." }, - "downloadedRows": { + "suffix": { "type": "string", - "format": "int64", - "description": "Downloaded content lines." + "description": "Optional. Add a suffix to the description." }, - "totalRows": { + "replace": { "type": "string", - "format": "int64", - "description": "Total of content lines." + "description": "Optional. Replace the description with the input." } - }, - "description": "ExportData resource definition." + } }, - "v1ExportInvoiceFileRequest": { + "v1CalculatorCostModifierAzureOptionsQualifier": { "type": "object", "properties": { - "date": { - "type": "string", - "description": "Required. Month to get invoice. Format: `yyyymm`." - }, - "groupId": { - "type": "string", - "description": "Optional.\n\nFor Ripple, only billing internal ids are supported at the moment. You can set it to a single group or a comma-separated list of groups. ex) `group1,group2`. if want to set all group, set `*`. \n\nImplied as the parent billing group for Wave(Pro) users." + "and": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, - "description": "Request message for the ExportCostFiltersFile rpc." + "description": "A map of \"key:value\" attribute filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like your modifiers to apply to `productId:CFQ7TTC0LFLX` (Microsoft 365 E3), set to `{\"productId\":\"eq:CFQ7TTC0LFLX\"}` or `{\"productId\":\"CFQ7TTC0LFLX\"}`. You can also use a regular expression like `{\"productId\":\"re:CFQ7TTC0LFLX|DZH318Z0BQ4L\"}`, which means apply to all `Microsoft 365 E3` or `Virtual Machines Ev3 Series` lineitems. Or reverse regexp, such as `{\"productId\":\"!re:^CFQ7TTC0LFLX$\"}`, which means apply to all items except `Microsoft 365 E3`. Valid keys are `productId`, `productName`, `skuId`, `skuName`, `description`, `category` and `domainName`." }, - "v1ExportInvoiceFileResponse": { + "v1CheckAccountsResponse": { "type": "object", "properties": { - "url": { - "type": "string", - "description": "Required. URL of exported file.\n\ncsv columns set `group vendor resourceId resourceName type serviceName currency cost`" + "exists": { + "type": "object", + "additionalProperties": { + "type": "boolean" + }, + "description": "Map of accountIds to boolean values indicating if the account exists." } - }, - "description": "Response message for the ExportInvoiceFile rpc." + } }, - "v1ExportServiceDiscountsRequest": { + "v1CloudWatchMetricsStream": { "type": "object", "properties": { - "format": { + "target": { "type": "string", - "description": "Required. At the moment, `CSV` is supported.", - "required": [ - "format" - ] + "description": "The queried target account." }, - "language": { + "externalId": { "type": "string", - "description": "Optional. At the moment, `ja`,`en` is supported.\n\nUsually the language of the user information is used, \nbut it may be a different language due to cahce.\nIn that case, you can use this option to change the language of CSV." - } - }, - "description": "Request message for the ExportServiceDiscounts rpc.", - "required": [ - "format" - ] - }, - "v1FeatureSetting": { - "type": "object", - "properties": { - "featureId": { - "type": "string" - }, - "isEnabled": { - "type": "boolean" - } - }, - "title": "For rpc UpdateWaveFeature" - }, - "v1FeeItem": { - "type": "object", - "properties": { - "vendor": { - "type": "string" + "description": "The external id for this role." }, - "month": { - "type": "string" + "stackId": { + "type": "string", + "description": "The id of the CloudFormation stack deployed in the target account." }, - "product": { - "type": "string" + "stackRegion": { + "type": "string", + "description": "The region where the stack is deployed." }, - "account": { - "type": "string" + "templateUrl": { + "type": "string", + "description": "The latest template used to deploy the stack." }, - "type": { - "type": "string" + "status": { + "type": "string", + "description": "This can be `latest`, `outdated`, or some error information." }, - "cost": { - "type": "number", - "format": "double" + "lastUpdated": { + "type": "string", + "description": "The last updated timestamp, RFC3339 UTC." } }, - "description": "Response message wrapper for cost group fees." + "description": "Response message for the Admin.CreateCloudWatchMetricsStream rpc." }, - "v1FreeFormItem": { + "v1CostAllocatorDetails": { "type": "object", "properties": { - "label": { + "id": { "type": "string" }, - "unitCost": { + "category": { + "type": "string" + }, + "expiration": { "type": "string", "format": "int64" }, - "total": { + "startMonth": { "type": "string", - "format": "int64" + "description": "Optional. The starting month of the allocator to be effective." }, - "quantity": { - "type": "integer", - "format": "int64" + "defaultAccount": { + "type": "string", + "description": "Optional. The default account for remaining costs. If not set, will allocate the cost to the original account." }, - "enabled": { - "type": "boolean" + "criteria": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Criteria" + }, + "description": "Required. Criteria for the adjustment to be applied." + }, + "allocator": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Allocator" + } + }, + "createTime": { + "type": "string" + }, + "updateTime": { + "type": "string" } } }, - "v1GetAccessGroupResponse": { + "v1CostAttributeItem": { "type": "object", "properties": { - "accessGroup": { - "$ref": "#/definitions/billingv1AccessGroup" + "aws": { + "$ref": "#/definitions/apiawsCostAttribute" + }, + "azure": { + "$ref": "#/definitions/apiazureCostAttribute" } }, - "description": "Response message for the Billing.GetAccessGroup rpc." + "description": "Response message for the Cost.ReadCostAttributes rpc." }, - "v1GetAccountAccessTemplateUrlResponse": { + "v1CreateAccessGroupRequest": { "type": "object", "properties": { - "launchUrl": { - "type": "string", - "description": "The CloudFormation launch url. Open it in your browser." - }, - "templateUrl": { + "name": { "type": "string", - "description": "The latest CloudFormation template. The version is included in the filename." + "description": "Required. access group name.\n\nWe recommend the name length of 1~60 characters." }, - "stackName": { + "description": { "type": "string", - "description": "The default stack name used. Can be modified." + "description": "Required. access group description.\n\nWe recommend the description length of 0~150 characters." }, - "principal": { + "billingGroups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. Billing group to be included in the access group.\n\nYou can only include billing groups with the same calculation type and currency type.\nSpecify the billingInternalIds. For example: [`billingInternalId1`,`billingInternalId2`,`billingInternalId3`]" + } + }, + "description": "Request message for the CreateAccessGroup rpc." + }, + "v1CreateAccountAccessRequest": { + "type": "object", + "properties": { + "target": { "type": "string", - "description": "The AWS account that will receive the access. Do not change." + "description": "Required. The target AWS account to validate." }, - "externalId": { - "type": "string", - "description": "The external id for this role. Do not change." + "fromTerraform": { + "type": "boolean", + "title": "Optional. Set to true if deployment is done through terraform" } }, - "description": "Response message for the GetAccountAccessTemplateUrlResponse rpc." + "description": "Request message for the CreateAccountAccess rpc." }, - "v1GetAccountBudgetResponse": { + "v1CreateAccountAccessStacksetRequest": { "type": "object", "properties": { - "data": { - "$ref": "#/definitions/blueapiapiBudget" + "target": { + "type": "string", + "description": "Required. The AWS payer account to validate." + }, + "region": { + "type": "string", + "description": "Required. The region of the stack deployment." } }, - "title": "Response message for GetAccountBudget" + "description": "Request message for the CreateAccountAccessStackset rpc." }, - "v1GetAccountGroupResponse": { + "v1CreateAccountBudgetResponse": { "type": "object", "properties": { - "acctGroup": { - "$ref": "#/definitions/apiAccountGroup" + "budgetId": { + "type": "string", + "title": "Budget Id" } }, - "description": "Response message for the Admin.GetAccountGroup rpc." + "title": "Response message for CreateAccountBudget" }, - "v1GetAccountsResponse": { + "v1CreateAccountInvoiceServiceDiscountsResponse": { "type": "object", "properties": { "accounts": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/v1AccountServiceDiscounts" } } }, - "title": "Response message for GetAccounts" - }, - "v1GetAlertDetailsResponse": { - "type": "object", - "properties": { - "alertData": { - "$ref": "#/definitions/coverAlertData" - } - }, - "title": "Response message for GetAlertDetails" + "description": "Response message for the CreateAccountInvoiceServiceDiscounts rpc." }, - "v1GetAlertsResponse": { + "v1CreateAccountRequestAwsOptions": { "type": "object", "properties": { - "alertData": { - "$ref": "#/definitions/coverAlertData" + "managementAccountId": { + "type": "string", + "description": "Optional. The management account id (formerly known as master, or payer) to which an account belongs to, initially. If the account is moved to another management account, the system is able to detect it and set this value accordingly." } }, - "title": "Response message for GetAlerts" + "description": "AWS-specific options for registering an account." }, - "v1GetAnomalyinCostGroupRequest": { + "v1CreateAccountRequestGcpOptions": { "type": "object", "properties": { - "costGroupId": { - "type": "string" - }, - "startDate": { + "managementAccountId": { "type": "string", - "title": "Start date for detecting anomalies. Valid format: YYYYMMDD" + "description": "Optional." }, - "endDate": { + "managementBillingId": { "type": "string", - "title": "End date for detection anomalies. Valid format: YYYYMMDD" + "description": "Optional." } }, - "title": "Request message for getting anomaly" + "description": "GCP-specific options for registering an account." }, - "v1GetAssetsSummaryResponse": { + "v1CreateAlertRequest": { "type": "object", "properties": { - "summary": { - "type": "array", - "items": { - "$ref": "#/definitions/v1AssetsSummary" - } - }, - "recommendationSummary": { + "name": { "type": "string", - "title": "Format: JSON String" - } - } - }, - "v1GetBillingGroupResponse": { - "type": "object", - "properties": { - "billingGroup": { - "$ref": "#/definitions/v1BillingGroup" - } - }, - "description": "Response message for the Billing.GetBillingGroup rpc." - }, - "v1GetBillingSettingResponse": { - "type": "object", - "properties": { - "yearMonth": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleYearMonth" - }, - "description": "List of available yearmonth." - }, - "roundingMethod": { - "$ref": "#/definitions/rippleRounding", - "description": "Rounding method." + "description": "Required." }, - "exportRoundingMethod": { - "$ref": "#/definitions/rippleRounding", - "description": "Rounding method for Export CSV." + "fixedAmount": { + "type": "number", + "format": "float", + "description": "At least one in either fixedAmount or percentage." }, - "invoiceLayout": { - "$ref": "#/definitions/rippleInvoiceLayout", - "description": "Invoice layout." + "percentage": { + "type": "number", + "format": "float" }, - "invoiceDueDate": { - "$ref": "#/definitions/rippleDueDate", - "description": "Invoice due date." + "granularity": { + "type": "string", + "description": "Optional. daily or monthly. Only 'daily' is supported for now." }, - "supportCurrency": { + "costGroups": { "type": "array", "items": { "type": "string" }, - "description": "List of available currency." - } - }, - "description": "Response message for the GetBillingSetting rpc." - }, - "v1GetBreakevenPointResponse": { - "type": "object", - "properties": { - "orgId": { - "type": "string" + "description": "Required. Cost group IDs." }, - "awsCostBreakeven": { - "$ref": "#/definitions/awsAwsCostBreakeven" + "channels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. Channel IDs." } }, - "title": "Response message for GetBreakevenPoint" - }, - "v1GetBudgetResponse": { - "type": "object", - "properties": { - "budgetData": { - "$ref": "#/definitions/coverBudgetData" - } - } + "title": "Request message for CreateAlert" }, - "v1GetCalculatorConfigResponse": { + "v1CreateAlertResponse": { "type": "object", "properties": { - "aws": { - "$ref": "#/definitions/awsCalculatorConfig" + "alertData": { + "$ref": "#/definitions/coverAlertData" } }, - "description": "Response message for the Cost.GetCalculatorConfig rpc." + "title": "Response message for CreateAlert" }, - "v1GetCategoriesResponse": { + "v1CreateAllocatorRequest": { "type": "object", "properties": { "category": { + "type": "string", + "description": "Optional. The category where the allocator is to be applied. Applicable values are `fee`, `account`, or `savings`. Default value is `fee`." + }, + "expiration": { + "type": "string", + "format": "int64" + }, + "startMonth": { + "type": "string", + "description": "Optional. The starting month of the allocator to be effective." + }, + "defaultAccount": { + "type": "string", + "description": "Optional. The default account for remaining costs. If not set, will allocate the cost to the original account." + }, + "criteria": { "type": "array", "items": { - "$ref": "#/definitions/coverCategory" + "type": "object", + "$ref": "#/definitions/v1Criteria" + }, + "description": "Required. Criteria for the adjustment to be applied." + }, + "allocator": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Allocator" } } - } + }, + "description": "Request message for the CreateAllocator rpc." }, - "v1GetChannelDetailsResponse": { + "v1CreateAnomalyAlertRequest": { "type": "object", "properties": { - "channelData": { - "$ref": "#/definitions/coverChannelData" + "name": { + "type": "string", + "title": "Required. Name of the Anomaly Alert" + }, + "alertEnabled": { + "type": "boolean", + "title": "Required. Toggle disable and enable status of the alert" + }, + "frequency": { + "type": "string", + "title": "Required. How often the user wants to receive alerts. Daily or Weekly" + }, + "costGroupId": { + "type": "string", + "title": "Requried. The Id of the cost group you want to monitor if there is an anomaly" + }, + "notificationChannels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. The Channels where you want to send the alerts." } }, - "title": "Response message for GetChannelDetails" + "title": "Rquest message for CreateAnomalyAlert" }, - "v1GetChannelsRequest": { + "v1CreateApiClientRequest": { "type": "object", "properties": { - "type": { + "name": { "type": "string", - "title": "Optional. Use email, slack, or msteams to filter the type of channels\nOtherwise, it returns all channels" - } - }, - "title": "Request message for GetChannels" - }, - "v1GetChannelsResponse": { - "type": "object", - "properties": { - "channelData": { - "$ref": "#/definitions/coverChannelData" + "description": "Required. The descriptive name of the API client to create." } }, - "title": "Response message for GetChannels" + "description": "Request message for the Iam.CreateApiClient rpc." }, - "v1GetCloudWatchMetricsStreamTemplateUrlResponse": { + "v1CreateBillingGroupRequest": { "type": "object", "properties": { - "launchUrl": { + "billingGroupId": { "type": "string", - "description": "The CloudFormation launch url. Open it in your browser." + "description": "Required. The billing group's id." }, - "templateUrl": { + "billingGroupName": { "type": "string", - "description": "The latest CloudFormation template. The version is included in the filename." + "description": "Required. The billing group's name." }, - "stackName": { + "companyName": { "type": "string", - "description": "The default stack name used. Can be modified." + "title": "Required. Company’s name" }, - "externalId": { + "billingTitle": { "type": "string", - "description": "The external id for this role. Do not change." + "title": "Optional. The title of the billing" + }, + "phoneNumber": { + "type": "string", + "title": "Optional. Company’s phone number" + }, + "postalCode": { + "type": "string", + "title": "Optional. Company’s postal code" + }, + "address": { + "type": "string", + "title": "Optional. Company’s address" + }, + "personal": { + "type": "string", + "title": "Optional. Addressee" + }, + "remarks": { + "type": "string", + "title": "Optional. Any remarks about the billing group" + }, + "projectId": { + "type": "string", + "title": "Optional. Project code" + }, + "language": { + "type": "string", + "title": "Optional. Invoice language" + }, + "displayCost": { + "type": "string", + "title": "Optional. Calculation type, true unblended or unblended" + }, + "exchangeRateType": { + "type": "string", + "title": "Optional. Exchange rate type, payer or billing group" + }, + "accountOptions": { + "$ref": "#/definitions/v1AccountOptions", + "description": "Optional. Account options." + }, + "invoices": { + "$ref": "#/definitions/v1CreateBillingGroupRequestInvoice", + "title": "Invoice settings" + }, + "awsOptions": { + "$ref": "#/definitions/billingv1AwsOptions", + "title": "Optional. AWS-specific options" + }, + "city": { + "type": "string", + "title": "Optional. Company's city" + }, + "prefecture": { + "type": "string", + "title": "Optional. Company's prefecture" + }, + "country": { + "type": "string", + "title": "Optional. Company's country" } }, - "description": "Response message for the Admin.GetCloudWatchMetricsStreamTemplateUrl rpc." + "description": "Request message for the Billing.CreateBillingGroup rpc." }, - "v1GetCostAttributesResponse": { + "v1CreateBillingGroupRequestInvoice": { "type": "object", "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/definitions/costv1CostAttribute" - }, - "description": "The cost attributes." + "aws": { + "$ref": "#/definitions/v1CreateBillingGroupRequestInvoiceVendor", + "title": "AWS invoice settings" + }, + "azure": { + "$ref": "#/definitions/v1CreateBillingGroupRequestInvoiceVendor", + "title": "Azure invoice settings" + }, + "gcp": { + "$ref": "#/definitions/v1CreateBillingGroupRequestInvoiceVendor", + "title": "GCP invoice settings" } }, - "description": "Response message for the Cost.GetCostAttributes rpc." + "title": "Vendor invoice setttings" }, - "v1GetCostGroupAllocationRequest": { + "v1CreateBillingGroupRequestInvoiceVendor": { "type": "object", "properties": { - "category": { - "type": "string", - "description": "Required. The category to display on the cost group. Supports `fee` or `savings`." + "calcType": { + "type": "string" }, - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." + "discountRate": { + "type": "number", + "format": "double" }, - "startDate": { + "substitutionFee": { "type": "string" }, - "endDate": { + "substitutionFix": { + "type": "number", + "format": "double" + }, + "substitutionRate": { + "type": "number", + "format": "double" + }, + "supportFee": { "type": "string" - } - }, - "description": "Request message for the GetCostGroupAllocation rpc." - }, - "v1GetCostGroupAttributeRequest": { - "type": "object", - "properties": { - "vendor": { + }, + "supportRate": { + "type": "number", + "format": "double" + }, + "supportFix": { + "type": "number", + "format": "double" + }, + "taxRate": { + "type": "number", + "format": "double" + }, + "currency": { "type": "string" }, - "attributeType": { + "discountTargetUsage": { "type": "string" }, - "costGroupId": { + "substitutionFeeTargetUsage": { "type": "string" }, - "existingCombinations": { - "type": "array", - "items": { - "$ref": "#/definitions/coverCombinations" - }, - "description": "Optional, This is for Unit Cost. When present, the api will return all attributes except the combination in this item." + "discountCalcLogic": { + "type": "string" }, - "currentCombination": { - "$ref": "#/definitions/coverCombinations", - "description": "Optional, This is for Unit Cost. \nWhen present, the currentCombination field represents a combination that is not yet finalized. \nThis field is used to compare with existingCombinations to analyze both sets \nand determine the appropriate attributes to return." + "substitutionFeeCalcTarget": { + "type": "string" + }, + "substitutionFeeCalcType": { + "type": "string" + }, + "supportAmountTarget": { + "type": "string" + }, + "supportFeeCalcTarget": { + "type": "string" } }, - "title": "Request message for GetCostGroupAttribute" + "title": "Specific settings per vendor" }, - "v1GetCostGroupAttributeResponse": { + "v1CreateBudgetAlertsRequest": { "type": "object", "properties": { - "result": { - "type": "array", - "items": { - "$ref": "#/definitions/coverResult" - } + "vendor": { + "type": "string", + "description": "Required. At the moment, only `aws` is supported." }, - "tagData": { + "accounts": { "type": "array", "items": { - "$ref": "#/definitions/apicoverTagData" - } + "type": "string" + }, + "description": "Required. Lsit of accountId. For example, you set to [\"accountId1\",\"accountId2\",\"accountId3\"]." + }, + "notification": { + "$ref": "#/definitions/apiBudgetAlertNotification", + "description": "Required." + }, + "daily": { + "$ref": "#/definitions/apiDailyBudgetAlert", + "description": "Optional." + }, + "dailyRate": { + "$ref": "#/definitions/apiDailyRateIncreaseBudgetAlert", + "description": "Optional." + }, + "monthly": { + "$ref": "#/definitions/apiMonthlyBudgetAlert", + "description": "Optional." } }, - "title": "Response message for GetCostGroupAttribute" + "description": "Request message for the CreateBudgetAlerts rpc." }, - "v1GetCostGroupDetailsResponse": { + "v1CreateBudgetRequest": { "type": "object", "properties": { - "costGroupData": { - "$ref": "#/definitions/coverCostGroupData" + "budgetData": { + "$ref": "#/definitions/coverBudgetData" } - }, - "title": "Response message for GetCostGroupDetails" + } }, - "v1GetCostGroupFeeRequest": { + "v1CreateBudgetResponse": { "type": "object", "properties": { - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." - }, - "startTime": { - "type": "string" - }, - "endTime": { - "type": "string" + "budgetData": { + "$ref": "#/definitions/coverBudgetData" } - }, - "description": "Request message for the GetCostGroupFee rpc." + } }, - "v1GetCostGroupsResponse": { + "v1CreateCalculatorCostModifierResponse": { "type": "object", "properties": { - "costGroupData": { + "aws": { "type": "array", "items": { - "$ref": "#/definitions/coverCostGroupData" + "type": "object", + "$ref": "#/definitions/v1CalculatorCostModifier" + } + }, + "azure": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1CalculatorCostModifier" } } }, - "title": "Response message for GetCostGroups" + "description": "Response message for the Cost.CreateCalculatorCostModifier rpc." }, - "v1GetCostReductionRequest": { + "v1CreateChannelRequest": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "orgId": { - "type": "string", - "description": "Required. Organization Id." - }, - "reductionDisplay": { - "type": "string", - "title": "Required. Valid values: 'all', 'reservation', 'savingsplan'" - }, - "includeDetails": { - "type": "boolean", - "description": "Optional. If set to \"true\", details of the RI or SP list is returned. Default: false." - }, - "fromDate": { - "type": "string", - "description": "Optional. The start date of the displayed data. If not set, the first day of the current month will be used. Format: yyyy-mm-dd." - }, - "toDate": { - "type": "string", - "description": "Optional. The end date of the displayed data. If not set, current date will be used. Format: yyyy-mm-dd." - }, - "payerId": { - "type": "string", - "description": "Optional. Payer Id." - }, - "billingInternalId": { + "name": { "type": "string", - "description": "Optional. Billing group Id." + "title": "Required. Either actual email address or slack/msteams channel name" }, - "groupId": { + "type": { "type": "string", - "description": "Optional. Account group Id." + "description": "Required. email, slack, or msteams." }, - "costGroupId": { + "webhookUrl": { "type": "string", - "description": "Optional. Cost Group Id used in octo." - }, - "accounts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of Account Ids." - }, - "services": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of services." + "description": "Optional. Only needed for slack and msteams type." } }, - "title": "Request message for GetCostReduction" + "title": "Request message for CreateChannel" }, - "v1GetCostReductionResponse": { + "v1CreateChannelResponse": { "type": "object", "properties": { - "orgId": { - "type": "string" - }, - "awsCostReductions": { - "$ref": "#/definitions/awsAwsCostReductions" + "channelData": { + "$ref": "#/definitions/coverChannelData" } }, - "title": "Response message for GetCostReduction" + "title": "Response message for CreateChannel" }, - "v1GetCostUsageRequest": { + "v1CreateCloudWatchMetricsStreamRequest": { "type": "object", "properties": { - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." - }, - "startTime": { - "type": "string", - "description": "Optional. If not set, the first day of the current month will be used. Format: `yyyymmdd`." - }, - "endTime": { - "type": "string", - "description": "Optional. If not set, current date will be used. Format: `yyyymmdd`." - }, - "groupByMonth": { - "type": "boolean", - "description": "Optional. If set to true, return data grouped by month within the date range. \nIf you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`. \nYou can also use `groupByColumns` while setting this to true." - }, - "limit": { - "type": "string", - "format": "int64", - "description": "Optional. If set, returns only the services or accounts with the highest cost or usage\nDefault value is 0." - }, - "category": { + "target": { "type": "string", - "description": "Optional. Valid values are `cost` and `usage`. \nDefault value is `cost`. Used only when limit is not 0." - }, - "groupBy": { + "description": "Required. The target AWS account to validate." + } + }, + "description": "Request message for the Admin.CreateCloudWatchMetricsStream rpc." + }, + "v1CreateCostFiltersResponse": { + "type": "object", + "properties": { + "filterId": { "type": "string", - "description": "Optional. Valid values are `service` and `account`. Only `service` is supported for now \nDefault value is `service`. Used only when limit is not 0." - }, - "includeZeroCost": { - "type": "boolean", - "description": "Optional. If set to true, return all available data including the data with zero cost.\nDefault value is `false` which means that only data with non-zero cost are returned." - }, - "awsOptions": { - "$ref": "#/definitions/v1GetCostUsageRequestAwsOptions", - "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." - }, - "azureOptions": { - "$ref": "#/definitions/v1GetCostUsageRequestAzureOptions", - "description": "Optional. Valid only for the `azure` vendor. Azure-specific options." + "description": "Required. Filter Id." + } + }, + "description": "Response message for the CreateCostFilters rpc." + }, + "v1CreateCostGroupRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "gcpOptions": { - "$ref": "#/definitions/v1GetCostUsageRequestGcpOptions", - "description": "Optional. Valid only for the `gcp` vendor. gcp-specific options." + "description": { + "type": "string" }, - "azurecspOptions": { - "$ref": "#/definitions/v1GetCostUsageRequestAzureCspOptions", - "description": "Optional. Valid only for the `azurecsp` vendor. AzureCsp-specific options." + "image": { + "type": "string" }, - "customOptions": { - "$ref": "#/definitions/v1GetCostUsageRequestCustomOptions", - "description": "Optional. For custom selection when creating cost groups.\nThis field allows custom options for specifying criteria for cost group creation." + "icon": { + "type": "string" }, - "includeForecast": { - "type": "boolean", - "title": "Optional. If set to true, include cost forecast" + "colorTheme": { + "type": "string" }, - "currency": { - "type": "string", - "description": "Optional. If not set, default value is `USD`." + "combinations": { + "$ref": "#/definitions/coverCombinations" } - } + }, + "title": "Request message for CreateCostGroup" }, - "v1GetCostUsageRequestAwsOptions": { + "v1CreateCostGroupResponse": { "type": "object", "properties": { - "groupByColumns": { - "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. \nValid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, and `resourceId`. \nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `productCode,region`. \nYour input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/aws/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." - }, - "groupAccounts": { - "type": "boolean", - "description": "Optional. If set to true, group all input accounts into one." - }, - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." - }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - }, - "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc. Discarded when `groupByColumns` field is set or if `groupByMonth` is true." - }, - "tagKey": { - "type": "string", - "description": "Optional. Tag key, only used when groupBy is set to `tag`." + "costGroupData": { + "$ref": "#/definitions/coverCostGroupData" } - } + }, + "title": "Response message for CreateCostGroup" }, - "v1GetCostUsageRequestAzureCspOptions": { + "v1CreateCustomFieldRequest": { "type": "object", "properties": { - "groupByColumns": { - "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. \nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and location data, you can set this field to `serviceName,location`." - }, - "groupAccounts": { - "type": "boolean", - "description": "Optional. If set to true, group all input projects into one." - }, - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." - }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - }, - "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "key": { + "type": "string" }, - "tagKey": { - "type": "string", - "description": "Optional. Tag key, only used when groupBy is set to `tag`." + "description": { + "type": "string" } } }, - "v1GetCostUsageRequestAzureOptions": { + "v1CreateCustomizedBillingServiceRequest": { "type": "object", "properties": { - "groupByColumns": { + "name": { "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. \nValid values are `accountId`, `serviceName`, `serviceTier`, `location`, `product`, `partNumber`, `resourceGuid`, `offerId`, `consumedService`, `departmentId`, `departmentName`, `resourceGroup`, `enrollment`, `additionalInfo`\nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and location data, you can set this field to `serviceName,location`." - }, - "groupAccounts": { - "type": "boolean", - "description": "Optional. If set to true, group all input subscription into one." + "title": "Required. [blueapi.api.ripple.CustomizedBillingService.name]" }, - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "description": { + "type": "string", + "title": "Optional. [blueapi.api.ripple.CustomizedBillingService.description]" }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - }, - "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "config": { + "$ref": "#/definitions/rippleMethodConfig", + "title": "Required. [blueapi.api.ripple.CustomizedBillingService.MethodConfig]" } - } + }, + "description": "Request message for the Billing.CreateCustomizedBillingService rpc." }, - "v1GetCostUsageRequestCustomOptions": { + "v1CreateDefaultCostAccessRequest": { "type": "object", "properties": { - "groupByColumns": { + "target": { "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. \nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and location data, you can set this field to `serviceName,location`." - }, - "groupAccounts": { - "type": "boolean", - "description": "Optional. If set to true, group all input projects into one." - }, - "filters": { + "description": "Required. The target AWS account to validate." + } + }, + "description": "Request message for the Admin.CreateDefaultCostAccess rpc." + }, + "v1CreateDefaultNotificationChannelRequest": { + "type": "object", + "description": "Request message for the Admin.CreateDefaultNotificationChannel rpc." + }, + "v1CreateDiscountExpirationAlertRequest": { + "type": "object", + "properties": { + "frequencies": { "type": "array", "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + "type": "string", + "format": "int64" }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "title": "Required if the alertEnabled is set to true\nSupported values are the following:\n[0, 7, 30, 60, 90]" }, - "tagFilters": { + "costGroups": { "type": "array", "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + "type": "string" }, - "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "title": "Required. Cost Group Id" }, - "labelFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - } + "alertEnabled": { + "type": "boolean", + "description": "required. Switch in enabling alert." }, - "projectLabelFilters": { + "channels": { "type": "array", "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - } + "type": "string" + }, + "description": "required. Array of notificationChannel Ids from DynamoDB. Existing in ripple." }, - "tagKey": { + "name": { "type": "string", - "description": "Optional. Tag key, only used when groupBy is set to `tag`." + "title": "required. Name of alert" } - } + }, + "title": "Request message for CreateDiscountExpirationAlert" }, - "v1GetCostUsageRequestGcpOptions": { + "v1CreateGroupRootUserRequest": { "type": "object", "properties": { - "groupByColumns": { + "email": { "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. \nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and location data, you can set this field to `serviceName,location`." - }, - "groupAccounts": { - "type": "boolean", - "description": "Optional. If set to true, group all input projects into one." + "description": "The email address of the user being created." }, - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "password": { + "type": "string", + "title": "The password of the user being created. A value will be generated if not is provided for this field" }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - }, - "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "groupId": { + "type": "string", + "description": "The ID of the group to which the user will be added. This must either be a billing group ID or an access group ID." }, - "labelFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - } + "groupType": { + "type": "string", + "description": "The type of group which is represented by the group ID. Valid values include \"billing_group\" or \"access_group\"." }, - "projectLabelFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" - } + "inputType": { + "type": "string", + "description": "This value determines whether the password should be auto-generated or if the plaintext value received with the request should be used. A value of \"Auto\" will result in an auto-generated password whereas a value of \"Custom\" will result in the password included with the request being used." }, - "tagKey": { + "plan": { "type": "string", - "description": "Optional. Tag key, only used when groupBy is set to `tag`." + "description": "The plan associated with the root-user account. Valid values include \"trial\", \"limited3\" and \"limited4\"." + }, + "emailNotification": { + "type": "boolean", + "description": "Whether or not a notification should be sent to the provided email after the user has been created." + }, + "meta": { + "$ref": "#/definitions/apiFeatureFlags", + "description": "A collection of feature flags and whether or not they should be enabled. For a full list of such flags, see https://labs.alphaus.cloud/docs/blueapi/apis/iam/." } - } + }, + "title": "Request message for the Iam.CreateGroupRootUser rpc" }, - "v1GetCoverageOndemandRequest": { + "v1CreateIdentityProviderRequest": { "type": "object", "properties": { - "vendor": { + "name": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "description": "Required. The IdP name." }, - "orgId": { + "type": { "type": "string", - "description": "Required. Organization Id." + "description": "Required. Value is `saml`." }, - "period": { + "metadata": { "type": "string", - "title": "Required. Available values: day, hour" - }, - "fromDate": { + "description": "Required. The contents of the metadata file from your IdP." + } + }, + "description": "Request message for the Iam.CreateIdentityProvider rpc." + }, + "v1CreateInvoiceServiceDiscountsRequest": { + "type": "object", + "properties": { + "name": { "type": "string", - "description": "Optional. The start date of the displayed data. If not set, the first day of the current month will be used. Format: yyyy-mm-dd." + "title": "Required. [blueapi.api.ripple.v1.InvoiceServiceDiscounts.name]" }, - "toDate": { + "description": { "type": "string", - "description": "Optional. The end date of the displayed data. If not set, current date will be used. Format: yyyy-mm-dd." + "title": "Optional. [blueapi.api.ripple.v1.InvoiceServiceDiscounts.description]" }, - "payerId": { + "setting": { + "$ref": "#/definitions/v1InvoiceServiceDiscountsSetting", + "title": "Required. [blueapi.api.ripple.v1.InvoiceServiceDiscounts.InvoiceServiceDiscountsSetting]" + } + }, + "description": "Request message for the Billing.CreateInvoiceServiceDiscounts rpc." + }, + "v1CreateIpFilterRequest": { + "type": "object", + "properties": { + "value": { "type": "string", - "description": "Optional. Payer Id." + "description": "Required. The IP input to filter, either blacklist or whitelist. Should be in CIDR format (i.e. `1.2.3.4/32`)." }, - "billingInternalId": { + "type": { "type": "string", - "description": "Optional. Billing group Id." + "description": "Optional. Can be `whitelist` or `blacklist`. Defaults to `blacklist` if empty." }, - "groupId": { + "rootUser": { "type": "string", - "description": "Optional. Account group Id." + "description": "Optional. If `rootUser` is valid and `subUser` is empty, filter is for this rootuser. If both `rootUser` and `subUser` inputs are empty, filter is at global scope." }, - "costGroupId": { + "subUser": { "type": "string", - "title": "Optional. Cost Group Id, currently used in octo" + "description": "Optional. If `subuser` is valid, filter is for this subuser; `rootUser` value is discarded. If both `rootUser` and `subUser` inputs are empty, filter is at global scope." + } + }, + "description": "Request message for the Iam.CreateIpFilter rpc." + }, + "v1CreateMemberRequest": { + "type": "object", + "properties": { + "email": { + "type": "string" }, - "accounts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of Account Ids." + "password": { + "type": "string" }, - "services": { + "name": { + "type": "string" + }, + "costgroups": { "type": "array", "items": { "type": "string" - }, - "description": "Optional. List of services." + } } }, - "title": "Request message for GetCoverageOndemand" + "title": "Request message for CreateMember" }, - "v1GetCoverageOndemandResponse": { + "v1CreateMemberResponse": { "type": "object", "properties": { - "orgId": { - "type": "string" + "userData": { + "$ref": "#/definitions/coverUserData" + } + }, + "title": "Response message for CreateMember" + }, + "v1CreateNotificationChannelRequest": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Required. Name of the notification channel." }, - "ondemandData": { + "type": { + "type": "string", + "description": "Required. Valid values: `email`, `slack`, `msteams`." + }, + "email": { + "$ref": "#/definitions/apiEmailChannel", + "description": "Required if type = `email`." + }, + "slack": { + "$ref": "#/definitions/apiSlackChannel", + "description": "Required if type = `slack`." + }, + "msteams": { + "$ref": "#/definitions/apiMSTeamsChannel", + "description": "Required if type = `msteams`." + }, + "product": { + "type": "string", + "description": "Optional. For Octo use only: `octo`." + } + }, + "description": "Request message for the Admin.CreateNotificationChannel rpc." + }, + "v1CreateNotificationRequest": { + "type": "object", + "properties": { + "notificationType": { + "type": "string", + "description": "Required\nValid values:\n`InvoiceCalculationStarted`,\n`InvoiceCalculationFinished`,\n`CurUpdatedAfterInvoice`.\n`AccountBudgetAlert`." + }, + "channels": { "type": "array", "items": { - "$ref": "#/definitions/apiOndemandData" - } + "type": "string" + }, + "title": "Required" + }, + "enabled": { + "type": "boolean", + "title": "Required" + }, + "account": { + "$ref": "#/definitions/adminv1NotificationAccount", + "description": "Optional. only available Wave(Pro)." } }, - "title": "Response message for GetCoverageOndemand" + "description": "Request message for the Admin.CreateNotificationTypeChannels rpc." }, - "v1GetCoverageOptionsRequest": { + "v1CreateOrgRequest": { "type": "object", "properties": { - "vendor": { + "email": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "title": "Required. Organization's email" }, - "orgId": { + "description": { "type": "string", - "description": "Required. Organization Id." + "title": "Required. Organization's description or company name" }, - "period": { + "password": { "type": "string", - "description": "Required. Available values: day, hour." + "description": "Optional. User can decide to let the system generates the password." }, - "fromDate": { + "name": { "type": "string", - "description": "Optional. The start date of the displayed data. If not set, the first day of the current month will be used. Format: yyyy-mm-dd." + "title": "To be used for onboarding profile" }, - "toDate": { - "type": "string", - "description": "Optional. The end date of the displayed data. If not set, current date will be used. Format: yyyy-mm-dd." + "role": { + "type": "string" }, - "payerId": { - "type": "string", - "description": "Optional. Payer Id." + "usage": { + "type": "string" }, - "billingInternalId": { - "type": "string", - "description": "Optional. Billing group Id." + "intention": { + "type": "string" }, - "groupId": { - "type": "string", - "description": "Optional. Account group Id." + "isAuth0Signup": { + "type": "boolean" }, - "costGroupId": { + "customerId": { "type": "string", - "title": "Optional. Cost Group Id" - }, - "accounts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of Account Ids." + "title": "Optional. Customer Id from AWS marketplace" }, - "services": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of services." + "locale": { + "type": "string", + "description": "Optional. User locale. Default value is en if not supplied." }, - "currency": { + "auth0UserId": { "type": "string", - "description": "Optional. If not set, default value is `USD`." + "description": "Optional. Auth0 user id for users registering using social login." } }, - "title": "Request message for GetCoverageOptions" + "description": "Request message for the Organization.CreateOrg rpc." }, - "v1GetCoverageOptionsResponse": { + "v1CreateOrgResponse": { "type": "object", "properties": { - "orgId": { - "type": "string" + "org": { + "$ref": "#/definitions/rippleOrg" }, - "optionsData": { - "type": "array", - "items": { - "$ref": "#/definitions/apiOptionsData" - } + "password": { + "type": "string" } }, - "title": "Response message for GetCoverageOptions" + "description": "Response message for the Organization.CreateOrg rpc." }, - "v1GetCurrentViewResponse": { + "v1CreatePayerAccountRequestAwsOptions": { "type": "object", "properties": { - "viewData": { - "$ref": "#/definitions/coverViewData" + "id": { + "type": "string", + "description": "Required. The id of the management account." + }, + "name": { + "type": "string", + "description": "Optional. The name, or description of the management account. This is set to `id` when not specified." + }, + "bucketName": { + "type": "string", + "description": "Required. S3 Bucket name." + }, + "prefix": { + "type": "string", + "description": "Optional. Prefix." + }, + "reportName": { + "type": "string", + "description": "Required. Report name." + }, + "roleArn": { + "type": "string", + "description": "Required. Role ARN for Alphaus to assume for access." } }, - "title": "Response message for GetCurrentView" + "description": "See [https://help.alphaus.cloud/en/articles/3612555-ripple-aws-things-you-need-to-prepare-before-starting] for more information.\n\nSee [https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html] for more information. Requirements include: Additional report details = 'Include Resource IDS' enabled, Prefix = non-empty (recommendation only), Time granularity = 'Hourly', File format = 'text/csv'." }, - "v1GetCustomerSubscriptionStatusResponse": { + "v1CreateProfilingRequest": { "type": "object", "properties": { - "dateRegistered": { + "name": { "type": "string" }, - "subscriptionExpiry": { + "role": { "type": "string" }, - "daysLeft": { - "type": "integer", - "format": "int32" - }, - "isSubscribed": { - "type": "boolean" - }, - "isExpired": { - "type": "boolean" + "usage": { + "type": "string" }, - "plan": { + "intention": { "type": "string" }, - "amount": { + "companyName": { "type": "string" }, - "paymentOption": { + "emailAddress": { "type": "string" }, - "paymentMethod": { + "linkSource": { "type": "string" }, - "credit": { - "type": "number", - "format": "double" + "hasSubscribedUpdates": { + "type": "boolean" } } }, - "v1GetCustomizedBillingServiceBillingGroupResponse": { + "v1CreateProfilingResponse": { + "type": "object" + }, + "v1CreateProformaCurRequest": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "Required. [blueapi.api.ripple.CustomizedBillingService.id]", - "required": [ - "id" - ] - }, - "vendor": { + "payerId": { "type": "string", - "description": "Required. vendor that applied to the CustomizedBillingService config.", - "required": [ - "vendor" - ] - }, - "chargingTarget": { - "$ref": "#/definitions/rippleChargingTarget", - "title": "Required. [blueapi.api.ripple.ChargingTarget]" + "description": "Required." }, - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/blueapiapiAccount" - }, - "description": "Optional. accounts that applied to the CustomizedBillingService config." - } - }, - "description": "Response message for the Billing.GetCustomizedBillingServiceBillingGroup rpc.\n\nIf there is no account information, it indicates that it is applied to BillingGroup.", - "required": [ - "id", - "vendor" - ] - }, - "v1GetDefaultCostAccessTemplateUrlResponse": { - "type": "object", - "properties": { - "launchUrl": { + "billingInternalId": { "type": "string", - "description": "The CloudFormation launch url. Open it in your browser." + "description": "Required." }, - "templateUrl": { + "reportName": { "type": "string", - "description": "The latest CloudFormation template. The version is included in the filename." + "description": "Required." }, - "stackName": { + "s3BucketName": { "type": "string", - "description": "The default stack name used. Can be modified." + "title": "Optional. Default value: `alphaus-proforma-cur-export`" }, - "principal": { + "s3Prefix": { "type": "string", - "description": "The AWS account that will receive the access. Do not change." + "title": "Optional. Default value: `pre`" }, - "externalId": { + "s3Region": { "type": "string", - "description": "The external id for this role. Do not change." + "title": "Optional. Default value: `us-east-1`" } }, - "description": "Response message for the Admin.GetDefaultCostAccessTemplateUrl rpc." + "title": "Request message for Admin.CreateProformaCur rpc" }, - "v1GetDiscountRecommendationsRequest": { + "v1CreateResellerRequest": { "type": "object", "properties": { - "costGroupId": { + "groupId": { "type": "string", - "description": "Required." + "description": "Required. You can set billing internal id or access group id." }, - "awsInputs": { - "$ref": "#/definitions/coverAwsInputs", - "title": "AWS Inputs" + "email": { + "type": "string", + "description": "Required." }, - "azureInputs": { - "$ref": "#/definitions/coverAzureInputs", - "title": "NOT SUPPORTED YET" + "password": { + "type": "string", + "description": "Required.\n\nWe recommend a password length of 8~32 characters. If you send 0 characters, a password will be generated automatically." }, - "gcpInputs": { - "$ref": "#/definitions/coverGcpInputs", - "title": "NOT SUPPORTED YET" - } - }, - "title": "Request message for GetDiscountRecomemendations" - }, - "v1GetDiscountRecommendationsResponse": { - "type": "object", - "properties": { - "awsRecommendations": { - "$ref": "#/definitions/coverAwsDiscountRecommendations" + "notification": { + "type": "boolean", + "description": "Required. If valid, you will be notified via email address." }, - "azureRecommendations": { - "$ref": "#/definitions/coverAzureDiscountRecommendations" + "waveConfig": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rippleResellerConfig" + }, + "title": "Optional. Feature Config. If not set config value, use default config" }, - "gcpRecommendations": { - "$ref": "#/definitions/coverGcpDiscountRecommendations" - } - }, - "title": "Response message for GetDiscountRecommendations" - }, - "v1GetFavoriteViewsResponse": { - "type": "object", - "properties": { - "favorites": { + "aquaConfig": { "type": "array", "items": { - "$ref": "#/definitions/coverFavorites" - } + "type": "object", + "$ref": "#/definitions/rippleResellerConfig" + }, + "title": "Optional. Feature Config. If not set config value, use default config" } }, - "title": "Response message for GetFavoriteViews" + "description": "Request message for the CreateReseller rpc." }, - "v1GetForecastsResponse": { + "v1CreateRoleRequest": { "type": "object", "properties": { - "data": { - "$ref": "#/definitions/apiBillingGroupForecast" + "name": { + "type": "string", + "description": "Required. The name of the role to create. Role names should have at least 6 characters in length and 32 characters maximum. It should also be alphanumeric. Hyphens and underscores are allowed in between. The regular expression used for validation is `^[A-Za-z0-9][A-Za-z0-9_-]*[A-Za-z0-9]$`." + }, + "namespace": { + "type": "string", + "description": "Required. The namespace where this role will belong." + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required. The list of permissions to attach to this role." } }, - "description": "Response message for GetForecasts per billing group." + "description": "Request message for the Iam.CreateRole rpc." }, - "v1GetFreeFormatResponse": { + "v1CreateUnitTypeRequest": { "type": "object", "properties": { - "groupId": { - "type": "string" - }, - "vendor": { + "unitName": { "type": "string" }, - "freeFormat": { + "unitItems": { "type": "array", "items": { - "$ref": "#/definitions/v1FreeFormItem" + "type": "object", + "$ref": "#/definitions/coverUnitItem" } + }, + "description": { + "type": "string" } } }, - "v1GetInfoResponse": { + "v1CreateUnitTypeResponse": { "type": "object", "properties": { - "response": { - "type": "string" + "unitCostData": { + "$ref": "#/definitions/coverUnitCostData" } - }, - "description": "Response message for the Pricing.GetInfo rpc." + } }, - "v1GetInvoiceRequest": { + "v1CreateUserRequest": { "type": "object", "properties": { - "date": { + "name": { + "type": "string", + "description": "Required. Min: 4, max: 18, allowed characters: letters, numbers, `_` (underscore), `.` (period) and `-` (hyphen) characters." + }, + "password": { "type": "string", - "description": "Required. Month to get invoice. Format: `yyyymm`." + "description": "Required. Minimum of 8 characters." }, - "groupId": { + "email": { "type": "string", - "description": "Required.\n\nFor Ripple, only billing internal ids are supported at the moment. You can set it to a single group\n\nImplied as the parent billing group for Wave(Pro) users." + "description": "Optional. Email address of the subuser." + }, + "nickName": { + "type": "string", + "description": "Optional. Nickname or description. It is set to 'name' if empty." } }, - "description": "Request message for the Cost.GetInvoiceRequest rpc." + "description": "Request message for the Iam.CreateUser rpc." }, - "v1GetMSPDefaultMetaResponse": { + "v1CreateUserRoleMappingRequest": { "type": "object", "properties": { - "defaultMeta": { + "subUser": { + "type": "string", + "description": "Optional. The subuser to map the roles. Defaults to caller if not set." + }, + "roles": { "type": "array", "items": { - "type": "string" - } + "type": "object", + "$ref": "#/definitions/v1MapRole" + }, + "description": "Required. The roles to map to the user. Limited to 5 items." } - } + }, + "description": "Request message for the Iam.CreateUserRoleMapping rpc." }, - "v1GetMemberCostGroupResponse": { + "v1CreateUserRoleMappingResponse": { "type": "object", "properties": { - "costGroups": { + "success": { "type": "array", "items": { - "$ref": "#/definitions/coverMemberCostGroup" + "type": "string" + } + }, + "failed": { + "type": "array", + "items": { + "type": "string" + } + }, + "filters": { + "type": "array", + "items": { + "type": "string" } } }, - "title": "Response message for GetMemberCostGroup" + "description": "Response message for the Iam.CreateUserRoleMapping rpc." }, - "v1GetMemberDetailsResponse": { + "v1CreateViewRequest": { "type": "object", "properties": { - "userData": { - "$ref": "#/definitions/coverUserData" + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "isPrivate": { + "type": "boolean" + }, + "isEditable": { + "type": "boolean" + }, + "icon": { + "type": "string" + }, + "reportType": { + "type": "string" + }, + "colorTheme": { + "type": "string" + }, + "reportPeriod": { + "type": "string" } }, - "title": "Response message for GetMemberDetails" + "title": "Request message for CreateView" }, - "v1GetMembersResponse": { + "v1CreateViewResponse": { "type": "object", "properties": { - "userData": { - "type": "array", - "items": { - "$ref": "#/definitions/coverUserData" - } + "viewData": { + "$ref": "#/definitions/coverViewData" } }, - "title": "Response message for GetMembers" + "title": "Response message for CreateView" }, - "v1GetMonthOnMonthCostForecastResponse": { + "v1Criteria": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/apiMonthOnMonthCostForecast" + "and": { + "type": "object", + "additionalProperties": { + "type": "string" } - }, - "timestamp": { - "type": "string" } }, - "title": "Response message for GetMonthOnMonthCostForecast" + "description": "A map of \"key:value\" attribute filters. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc." }, - "v1GetMonthToDateCostForecastResponse": { + "v1CustomField": { "type": "object", "properties": { "id": { - "type": "string" - }, - "budget": { - "type": "number", - "format": "double" + "type": "string", + "description": "Unique identifier for the custom field, automatically generated and immutable." }, - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/apiMonthToDateCostForecast" - } + "key": { + "type": "string", + "title": "Descriptive name of the custom field" }, - "timestamp": { - "type": "string" + "description": { + "type": "string", + "title": "Detailed description of the custom field" } - }, - "title": "Response message for GetMonthToDateCostForecast" + } }, - "v1GetMonthlyCostForecastResponse": { + "v1DataAccess": { "type": "object", "properties": { - "id": { - "type": "string" + "target": { + "type": "string", + "title": "Billing Id for GCP, Account Id for Azure" }, - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/apiMonthlyCostForecast" - } + "orgId": { + "type": "string", + "title": "Org Id" }, - "timestamp": { + "gcpOptions": { + "$ref": "#/definitions/coverGcpOptions", + "title": "GCP Options" + }, + "azureOptions": { + "$ref": "#/definitions/apicoverAzureOptions", + "title": "Azure Options" + }, + "awsOptions": { + "$ref": "#/definitions/apicoverAwsOptions" + }, + "accountType": { + "type": "string", + "title": "Account type, linked or payer" + }, + "lastUpdate": { + "type": "string", + "title": "Last Update" + }, + "createTime": { + "type": "string", + "title": "Time Created" + }, + "vendor": { "type": "string" } }, - "title": "Response message for GetMonthlyCostForecast" + "title": "Message Response for GetDataAccess. For Azure and GCP" }, - "v1GetOrgFiscalMonthResponse": { + "v1DefaultCostAccess": { "type": "object", "properties": { - "fiscalMonth": { - "type": "string" + "target": { + "type": "string", + "description": "The queried target account." }, - "dateRegistered": { - "type": "string" - } - } - }, - "v1GetOrgUpdateCurrencyResponse": { - "type": "object", - "properties": { - "orgId": { - "type": "string" + "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." }, - "updateCurrency": { + "status": { "type": "string", - "format": "int64" + "description": "This can be `latest`, `outdated`, or some error information." }, - "lastUpdate": { - "type": "string" + "lastUpdated": { + "type": "string", + "description": "The last updated timestamp, RFC3339 UTC." } - } + }, + "description": "Response message for the Admin.GetDefaultCostAccess, Admin.CreateDefaultCostAccess rpc." }, - "v1GetPayerAccountImportHistoryResponse": { + "v1DeleteAccountAccessResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "The queried account id." - }, - "month": { - "type": "string", - "description": "The queried UTC month." - }, - "timestamps": { - "type": "array", - "items": { - "type": "string" - }, - "title": "List of timestamps in RFC3339 format with the `T` separator. Example: `2019-10-12T07:20:50.52Z`" + "targetId": { + "type": "string" } }, - "description": "Response message for the Cost.GetPayerAccountImportHistory rpc." + "description": "Response message for the DeleteAccountAccess rpc." }, - "v1GetPayerProformaReportsResponse": { + "v1DeleteAlertResponse": { "type": "object", "properties": { - "reports": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ProformaReports" - } + "id": { + "type": "string" } }, - "description": "Response message for Cost.GetPayerProformaReports rpc." + "title": "Response message for DeleteAlert" }, - "v1GetPayersResponse": { + "v1DeleteBudgetResponse": { "type": "object", "properties": { - "payers": { - "type": "array", - "items": { - "type": "string" - } + "id": { + "type": "string" } - }, - "title": "Response message for GetPayers" + } }, - "v1GetPricingRequest": { + "v1DeleteChannelResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. Cloud vendor, only `aws` and `azure` are currently supported." - }, - "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.\nSupported regions can be listed using `/{vendor}/services` endpoint. For usage information visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices.\nView all available AWS services by region at https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/.\nView 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.\nSupported 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.\nAll columns will be returned if this array is empty.\nSupported columns can be listed using `/{vendor}/services` endpoint. For usage information visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetSupportedServices." + "id": { + "type": "string" } }, - "description": "Request message for Pricing.GetPricing rpc." + "title": "Response message for DeleteChannel" }, - "v1GetPricingResponse": { + "v1DeleteCostGroupResponse": { "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": { - "$ref": "#/definitions/pricingPricingData" - }, - "description": "Array of pricing items details. Maximum number of items returned per call is 1000." + "costGroupId": { + "type": "string" } }, - "description": "Response message for Pricing.GetPricing rpc." + "title": "Response message for DeleteCostGroup" }, - "v1GetRecommendationResponse": { + "v1DeleteMemberResponse": { "type": "object", "properties": { - "recommendationData": { - "$ref": "#/definitions/apicoverAWSRecommendations" + "userId": { + "type": "string" } - } + }, + "title": "Response message for DeleteMember" }, - "v1GetRecommendationV2Response": { + "v1DeleteUnitTypeResponse": { "type": "object", "properties": { - "data": { - "$ref": "#/definitions/recommendationRecommendationData" + "id": { + "type": "string" } } }, - "v1GetRecommendationsRequest": { + "v1DeleteViewResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "orgId": { - "type": "string", - "description": "Required. Organization Id." - }, - "accounts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. List of Account Ids." - }, - "costGroupId": { - "type": "string", - "description": "Required. For OCTO only." - }, - "awsOptions": { - "$ref": "#/definitions/v1GetRecommendationsRequestAwsOptions", - "title": "Required if vendor = 'aws'" + "viewId": { + "type": "string" } }, - "title": "Request message for GetRecommendations" + "title": "Response message for DeleteView" }, - "v1GetRecommendationsRequestAwsOptions": { + "v1DiscountExpiryAlertData": { "type": "object", "properties": { - "recommendationType": { - "type": "string", - "description": "Required. Valid values: 'reservation', 'rightsizing', 'scheduling'. Only 'reservation' is supported for now." + "id": { + "type": "string" }, - "type": { - "type": "string", - "title": "For recommendationType = 'reservation'. Optional. Valid values: 'combined', 'individual'\nDefault: 'combined'" + "orgId": { + "type": "string" }, - "riServices": { + "alertEnabled": { + "type": "boolean" + }, + "frequencies": { "type": "array", "items": { - "type": "string" - }, - "description": "For recommendationType = 'reservation'. Optional. List of Services [\"AmazonEC2\", \"AmazonRDS\", \"AmazonElastiCache\", \"AmazonES\", \"AmazonRedshift\"]. Default: Empty list." + "type": "string", + "format": "int64" + } }, - "spServices": { + "costGroups": { "type": "array", "items": { - "type": "string" - }, - "description": "For recommendationType = 'reservation'. Optional. List of Services [\"AmazonECS\", \"AmazonEKS\", \"AWSLambda\"]. Default: Empty list." - }, - "purchaseEC2SavingsPlan": { - "type": "boolean", - "description": "For recommendationType = 'reservation'. Optional. If set to \"true\", recommends EC2 Instance Savings Plan that will cover usage not covered by RI. Default: false." - }, - "ec2SpProductFamily": { - "type": "string", - "description": "For recommendationType = 'reservation'. Optional. Valid values: 'EC2Instance', 'Compute'. Default: 'EC2Instance'." - }, - "term": { - "type": "string", - "description": "For recommendationType = 'reservation'. Optional. Valid values: '1yr', '3yr'. Default: '1yr'." + "type": "object", + "$ref": "#/definitions/coverAlertCostGroup" + } }, - "offeringClass": { - "type": "string", - "description": "For recommendationType = 'reservation'. Optional. Valid values: 'standard', 'convertible'. Default: 'standard'." + "details": { + "type": "string" }, - "paymentOption": { - "type": "string", - "description": "For recommendationType = 'reservation'. Optional. Valid values: 'allUpfront', 'partialUpfront', 'noUpfront'. Default: 'allUpfront'." + "channels": { + "$ref": "#/definitions/coverAlertChannels" }, - "coveragePercentage": { - "type": "number", - "format": "double", - "description": "For recommendationType = 'reservation'. Optional. Percentage of the usage (in NormalizedUnits) to be covered by Reserved Instance or Savings Plan. Default: 100." + "name": { + "type": "string" } } }, - "v1GetRecommendationsResponse": { + "v1ExchangeRates": { "type": "object", "properties": { - "orgId": { + "month": { "type": "string" }, - "awsRecommendations": { - "$ref": "#/definitions/awsAwsRecommendations" + "exchangeRate": { + "type": "number", + "format": "float" + }, + "date": { + "type": "string" } - }, - "title": "Request message for GetRecommendations" + } }, - "v1GetRegionsResponse": { + "v1ExecuteOptimizationResponse": { + "type": "object" + }, + "v1ExportAccountInvoiceServiceDiscountsRequest": { "type": "object", "properties": { - "regions": { - "type": "array", - "items": { - "type": "string" - } + "format": { + "type": "string", + "description": "Required. At the moment, `CSV` is supported." + }, + "language": { + "type": "string", + "description": "Optional. At the moment, `ja`,`en` is supported.\n\nUsually the language of the user information is used, \nbut it may be a different language due to cahce.\nIn that case, you can use this option to change the language of CSV." } }, - "title": "Response message for GetRegions" + "description": "Request message for the ExportAccountInvoiceServiceDiscounts rpc.", + "required": [ + "format" + ] }, - "v1GetReportSummaryResponse": { + "v1ExportAuditLogsRequest": { "type": "object", - "properties": { - "costGroupId": { - "type": "string" - }, - "startDate": { - "type": "string" - }, - "endDate": { - "type": "string" - }, - "executiveSummary": { - "$ref": "#/definitions/coverExecutiveSummary" + "properties": { + "format": { + "type": "string", + "description": "Required. At the moment, `CSV`,`JSON` is supported." }, - "optimizationRecommendationSummary": { - "$ref": "#/definitions/coverOptimizationRecommendationSummary" + "startTime": { + "type": "string", + "description": "Required. The UTC date to start data from. If not set, the first day of the current year will be used. Format: `yyyymmdd`." }, - "savingsSummary": { - "$ref": "#/definitions/coverSavingsSummary" + "endTime": { + "type": "string", + "description": "Required. The UTC date to end data from. If not set, the first day of the current year will be used. Format: `yyyymmdd`." } - } + }, + "description": "Request message for the ExportAuditLogs rpc." }, - "v1GetRightSizingRecommendationResponse": { + "v1ExportBillingGroupInvoiceServiceDiscountsRequest": { "type": "object", "properties": { - "resource": { - "type": "array", - "items": { - "$ref": "#/definitions/coverResourceData" - } + "format": { + "type": "string", + "description": "Required. At the moment, `CSV` is supported." + }, + "language": { + "type": "string", + "description": "Optional. At the moment, `ja`,`en` is supported.\n\nUsually the language of the user information is used, \nbut it may be a different language due to cahce.\nIn that case, you can use this option to change the language of CSV." } }, - "title": "Response message for GetRightSizingRecommendation" + "description": "Request message for the ExportBillingGroupInvoiceServiceDiscounts rpc.", + "required": [ + "format" + ] }, - "v1GetServicesResponse": { + "v1ExportCostFiltersFileResponse": { "type": "object", "properties": { - "services": { - "type": "array", - "items": { - "type": "string" - } + "url": { + "type": "string", + "description": "Required. URL of exported file." } }, - "title": "Response message for GetServices" + "description": "Response message for the ExportCostFiltersFile rpc." }, - "v1GetSupportedServicesResponse": { + "v1ExportData": { "type": "object", "properties": { - "supportedServices": { - "type": "array", - "items": { - "$ref": "#/definitions/v1SupportedService" - }, - "description": "Suported services, regions, and attributes that can be used to specify which pricing data to retrieve from `/{vendor}/pricing`.\nFor usage information, visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetPricing." + "content": { + "type": "string", + "description": "Base64 encoded value." + }, + "downloadedRows": { + "type": "string", + "format": "int64", + "description": "Downloaded content lines." + }, + "totalRows": { + "type": "string", + "format": "int64", + "description": "Total of content lines." } }, - "description": "Response message for Pricing.GetSupportedServices rpc." + "description": "ExportData resource definition." }, - "v1GetTagsResponse": { + "v1ExportInvoiceFileResponse": { "type": "object", "properties": { - "tagData": { - "type": "array", - "items": { - "$ref": "#/definitions/apicoverTagData" - } + "url": { + "type": "string", + "description": "Required. URL of exported file.\n\ncsv columns set `group vendor resourceId resourceName type serviceName currency cost`" } }, - "title": "Response message for GetTags" + "description": "Response message for the ExportInvoiceFile rpc." }, - "v1GetUnitTypeResponse": { + "v1ExportServiceDiscountsRequest": { "type": "object", "properties": { - "unitCostData": { - "$ref": "#/definitions/coverUnitCostData" + "format": { + "type": "string", + "description": "Required. At the moment, `CSV` is supported." + }, + "language": { + "type": "string", + "description": "Optional. At the moment, `ja`,`en` is supported.\n\nUsually the language of the user information is used, \nbut it may be a different language due to cahce.\nIn that case, you can use this option to change the language of CSV." } - } + }, + "description": "Request message for the ExportServiceDiscounts rpc.", + "required": [ + "format" + ] }, - "v1GetUserDetailsResponse": { + "v1FeatureSetting": { "type": "object", "properties": { - "userData": { - "$ref": "#/definitions/coverUserData" + "featureId": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" } }, - "title": "Response message for GetUserDetails" + "title": "For rpc UpdateWaveFeature" }, - "v1GetUserProfileResponse": { + "v1FeeItem": { "type": "object", "properties": { - "hasCreatedProfile": { - "type": "boolean" - }, - "name": { + "vendor": { "type": "string" }, - "role": { + "month": { "type": "string" }, - "usage": { + "product": { "type": "string" }, - "intention": { + "account": { "type": "string" }, - "companyName": { + "type": { "type": "string" }, - "emailAddress": { + "cost": { + "type": "number", + "format": "double" + } + }, + "description": "Response message wrapper for cost group fees." + }, + "v1FreeFormItem": { + "type": "object", + "properties": { + "label": { "type": "string" }, - "linkSource": { - "type": "string" + "unitCost": { + "type": "string", + "format": "int64" }, - "hasSubscribedUpdates": { + "total": { + "type": "string", + "format": "int64" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "enabled": { "type": "boolean" } } }, - "v1GetUtilizationResponse": { + "v1GetAccessGroupResponse": { "type": "object", "properties": { - "orgId": { - "type": "string" + "accessGroup": { + "$ref": "#/definitions/billingv1AccessGroup" + } + }, + "description": "Response message for the Billing.GetAccessGroup rpc." + }, + "v1GetAccountAccessTemplateUrlResponse": { + "type": "object", + "properties": { + "launchUrl": { + "type": "string", + "description": "The CloudFormation launch url. Open it in your browser." }, - "utilizationData": { - "type": "array", - "items": { - "$ref": "#/definitions/blueapiapiUtilizationData" - } + "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." } }, - "title": "Response message for GetUtilization" + "description": "Response message for the GetAccountAccessTemplateUrlResponse rpc." }, - "v1GetViewsResponse": { + "v1GetAccountBudgetResponse": { "type": "object", "properties": { - "viewList": { - "type": "array", - "items": { - "$ref": "#/definitions/coverViewList" - } + "data": { + "$ref": "#/definitions/blueapiapiBudget" } }, - "title": "Response message for GetViews" + "title": "Response message for GetAccountBudget" }, - "v1GetWaveFeaturesResponse": { + "v1GetAccountGroupResponse": { "type": "object", "properties": { - "settings": { + "acctGroup": { + "$ref": "#/definitions/apiAccountGroup" + } + }, + "description": "Response message for the Admin.GetAccountGroup rpc." + }, + "v1GetAccountsResponse": { + "type": "object", + "properties": { + "accounts": { "type": "array", "items": { - "$ref": "#/definitions/v1WaveFeature" + "type": "string" } } - } + }, + "title": "Response message for GetAccounts" }, - "v1GroupServiceDiscountsExport": { + "v1GetAlertDetailsResponse": { "type": "object", "properties": { - "data": { - "$ref": "#/definitions/v1ExportData" + "alertData": { + "$ref": "#/definitions/coverAlertData" } }, - "description": "GroupServiceDiscountsExport resource definition.\n`Group` refer to `BillingGroup`.\n\ndata is [blueapi.api.ripple.v1.ExportData]\n\ncontent. Base64 encoded value.\nFor example,\ncontent :`YmlsbGluZ0dyb3VwSWQsYmlsbGluZ0dyb3VwTmFtZSxTZXJ2aWNlIFByZW1pdW1zJkRpc2NvdW50cw0K`\nDecoding this value by en, get `billingGroupId,billingGroupName,Service Premiums\u0026Discounts`.\ncontent :`6KuL5rGC44Kw44Or44O844OXSUQs6KuL5rGC44Kw44Or44O844OX5ZCNLOOCteODvOODk+OCueWJsuW8leODu+WJsuWil+ioreWumg0K`\nDecoding this value by ja, get `請求グループID,請求グループ名,サービス割引・割増設定`.\n\ndownloadedRows. Downloaded content lines.\n\ntotalRows.Total of content lines." + "title": "Response message for GetAlertDetails" }, - "v1ImportCurFilesRequest": { + "v1GetAlertsResponse": { "type": "object", "properties": { - "month": { - "type": "string", - "description": "Optional. The UTC month to import. If empty, it defaults to the current month. Format is `yyyymm`. For example, June 2021 will be `202106`." - }, - "filter": { - "type": "string", - "description": "Optional. A comma-separated list of management accounts to import. If empty, all CURs associated with all your management accounts will be imported." + "alertData": { + "$ref": "#/definitions/coverAlertData" } }, - "description": "Request message for the Cost.ImportCurFiles rpc." + "title": "Response message for GetAlerts" }, - "v1InviteMemberRequest": { + "v1GetAnomalyinCostGroupRequest": { "type": "object", "properties": { - "email": { - "type": "array", - "items": { - "type": "string" - } - }, - "isResend": { - "type": "boolean" + "costGroupId": { + "type": "string" }, - "inviteAsAdmin": { - "type": "boolean" + "startDate": { + "type": "string", + "title": "Start date for detecting anomalies. Valid format: YYYYMMDD" + }, + "endDate": { + "type": "string", + "title": "End date for detection anomalies. Valid format: YYYYMMDD" } }, - "title": "Request message for InviteMember" + "title": "Request message for getting anomaly" }, - "v1InviteMemberResponse": { + "v1GetAssetsSummaryResponse": { "type": "object", "properties": { - "email": { + "summary": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/v1AssetsSummary" } + }, + "recommendationSummary": { + "type": "string", + "title": "Format: JSON String" } - }, - "title": "Response message for InviteMember" + } }, - "v1InvoiceConnectedBillingGroups": { + "v1GetBillingGroupResponse": { "type": "object", "properties": { - "billingInternalId": { - "type": "string" - }, - "billingGroupId": { - "type": "string" - }, - "billingGroupName": { - "type": "string" + "billingGroup": { + "$ref": "#/definitions/v1BillingGroup" } }, - "title": "Response message to be used for ListInvoiceTemplateResponse" + "description": "Response message for the Billing.GetBillingGroup rpc." }, - "v1InvoiceServiceDiscountsSetting": { + "v1GetBillingSettingResponse": { "type": "object", "properties": { - "awsDetails": { + "yearMonth": { "type": "array", "items": { - "$ref": "#/definitions/v1InvoiceServiceDiscountsSettingDetails" + "type": "object", + "$ref": "#/definitions/rippleYearMonth" }, - "description": "The invoice service discounts setting details." + "description": "List of available yearmonth." }, - "azureDetails": { - "type": "array", - "items": { - "$ref": "#/definitions/v1InvoiceServiceDiscountsSettingDetails" - }, - "description": "The invoice service discounts setting details." + "roundingMethod": { + "$ref": "#/definitions/rippleRounding", + "description": "Rounding method." }, - "gcpDetails": { + "exportRoundingMethod": { + "$ref": "#/definitions/rippleRounding", + "description": "Rounding method for Export CSV." + }, + "invoiceLayout": { + "$ref": "#/definitions/rippleInvoiceLayout", + "description": "Invoice layout." + }, + "invoiceDueDate": { + "$ref": "#/definitions/rippleDueDate", + "description": "Invoice due date." + }, + "supportCurrency": { "type": "array", "items": { - "$ref": "#/definitions/v1InvoiceServiceDiscountsSettingDetails" + "type": "string" }, - "description": "The invoice service discounts setting details." + "description": "List of available currency." } }, - "description": "InvoiceServiceDiscountsSetting resource definition." + "description": "Response message for the GetBillingSetting rpc." }, - "v1InvoiceServiceDiscountsSettingDetails": { + "v1GetBreakevenPointResponse": { "type": "object", "properties": { - "code": { - "type": "string", - "title": "The vendor service code.\naws: ProductCode\nazure: ServiceCode\ngcp: ServiceName\n`otherServices`: The code to specify other services as a whole, regardless of vendor.\nFor exmaple: Other services set at 1%.\n{\"code\":\"otherServices\", \"value\":0.01}", - "required": [ - "code" - ] - }, - "name": { - "type": "string", - "description": "The vendor service name.", - "readOnly": true - }, - "value": { - "type": "number", - "format": "double", - "description": "Value associated with the set premiums or discounts." + "orgId": { + "type": "string" }, - "calculationScope": { - "type": "boolean", - "description": "The calculation scope.\ndefault is `disabled`.\nIf enabled, Usage and any lineitem type including Fee are included in the calculation.\nIf disabled, only the Usage is included in the calculation." + "awsCostBreakeven": { + "$ref": "#/definitions/awsAwsCostBreakeven" } }, - "description": "InvoiceServiceDiscountsSettingDetails resource definition.", - "required": [ - "code" - ] + "title": "Response message for GetBreakevenPoint" }, - "v1IpFilter": { + "v1GetBudgetResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "IP filter item id. Note that this name is transcient and is not fixed. However, you can use any of its permutations to endpoints that accept it, such as the `DELETE:/iam/v?/ipfilters/{id}` endpoint, without issues." - }, - "scope": { - "type": "string", - "description": "Can be `global`, `rootuser`, or `subuser`." - }, - "target": { - "type": "string", - "description": "The target of the filter. If global scope, this is usually empty. Rootuser name for rootuser scope, and subuser name for subuser scope. For subuser targets, format is `rootuser/subuser`." - }, - "type": { - "type": "string", - "description": "The type of IP filter. It could be `whitelist` or `blacklist`." - }, - "value": { - "type": "string", - "description": "The IP filter value. Should be in CIDR format." + "budgetData": { + "$ref": "#/definitions/coverBudgetData" } } }, - "v1ListAccountAccessRequest": { + "v1GetCalculatorConfigResponse": { "type": "object", - "description": "Request message for the ListAccountAccess rpc." + "properties": { + "aws": { + "$ref": "#/definitions/awsCalculatorConfig" + } + }, + "description": "Response message for the Cost.GetCalculatorConfig rpc." }, - "v1ListAccountGroupsResponse": { + "v1GetCategoriesResponse": { "type": "object", "properties": { - "accountGroups": { + "category": { "type": "array", "items": { - "$ref": "#/definitions/apiAccountGroup" + "type": "object", + "$ref": "#/definitions/coverCategory" } } - }, - "description": "Response message for the Admin.ListAccountGroups rpc." + } }, - "v1ListAccountInvoiceServiceDiscountsRequest": { + "v1GetChannelDetailsResponse": { "type": "object", "properties": { - "groupId": { - "type": "string", - "description": "Required.\n\nFor Ripple, only billing internal ids are supported at the moment. You can set it to a single group\n\nImplied as the parent billing group for Wave(Pro) users." + "channelData": { + "$ref": "#/definitions/coverChannelData" } }, - "description": "Request message for the ListAccountInvoiceServiceDiscounts rpc." + "title": "Response message for GetChannelDetails" }, - "v1ListAccountUsageRequest": { + "v1GetChannelsRequest": { "type": "object", "properties": { - "startDate": { - "type": "string" - }, - "endDate": { - "type": "string" + "type": { + "type": "string", + "title": "Optional. Use email, slack, or msteams to filter the type of channels\nOtherwise, it returns all channels" } }, - "description": "Request message for the RestoreAccountUsage rpc." + "title": "Request message for GetChannels" }, - "v1ListAssetsFilters": { + "v1GetChannelsResponse": { "type": "object", "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "channelData": { + "$ref": "#/definitions/coverChannelData" } - } + }, + "title": "Response message for GetChannels" }, - "v1ListAssetsRequest": { + "v1GetCloudWatchMetricsStreamTemplateUrlResponse": { "type": "object", "properties": { - "costGroupId": { + "launchUrl": { "type": "string", - "description": "Required. Cost Group Id." + "description": "The CloudFormation launch url. Open it in your browser." }, - "startMonth": { + "templateUrl": { "type": "string", - "description": "Optional. If not set, current month will be used. Format: `yyyymm`." + "description": "The latest CloudFormation template. The version is included in the filename." }, - "endMonth": { + "stackName": { "type": "string", - "description": "Optional. If not set, current month will be used. Format: `yyyymm`." - }, - "withRecommendation": { - "type": "boolean", - "title": "Optional. If true, returns only all assets with recommendation" - }, - "awsOptions": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ListAssetsFilters" - }, - "description": "Optional. For AWS-specific filter options." + "description": "The default stack name used. Can be modified." }, - "awsPropertiesOptions": { + "externalId": { + "type": "string", + "description": "The external id for this role. Do not change." + } + }, + "description": "Response message for the Admin.GetCloudWatchMetricsStreamTemplateUrl rpc." + }, + "v1GetCostAttributesResponse": { + "type": "object", + "properties": { + "items": { "type": "array", "items": { - "$ref": "#/definitions/v1ListAssetsFilters" + "type": "object", + "$ref": "#/definitions/costv1CostAttribute" }, - "description": "Optional. For AWS-specific properties filter options." + "description": "The cost attributes." } }, - "description": "Request message for the Asset.ListResources rpc." + "description": "Response message for the Cost.GetCostAttributes rpc." }, - "v1ListAwsDailyRunHistoryRequest": { + "v1GetCostGroupAllocationRequest": { "type": "object", "properties": { - "month": { + "category": { "type": "string", - "description": "Optional. If empty, defaults to current UTC month. Format: yyyymm." + "description": "Required. The category to display on the cost group. Supports `fee` or `savings`." }, - "groupId": { + "costGroupId": { "type": "string", - "description": "Optional. If not empty, query for this group. At the moment, only `billingInternalId`s are supported." + "description": "Required. Cost Group Id." + }, + "startDate": { + "type": "string" + }, + "endDate": { + "type": "string" } }, - "description": "Request message for the Billing.ListAwsCalculationHistory rpc." + "description": "Request message for the GetCostGroupAllocation rpc." }, - "v1ListBudgetsRequest": { + "v1GetCostGroupAttributeRequest": { "type": "object", "properties": { - "includeSpendAndForecast": { - "type": "boolean", - "title": "Optional. Set to true to include monthly spending and forecast within the budget period" + "vendor": { + "type": "string" }, - "costGroup": { - "type": "string", - "description": "Optional. Cost group ID. Return budgets under this specific cost group." - } - } - }, - "v1ListBudgetsResponse": { - "type": "object", - "properties": { - "budgetData": { - "$ref": "#/definitions/coverBudgetData" + "attributeType": { + "type": "string" + }, + "costGroupId": { + "type": "string" + }, + "existingCombinations": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCombinations" + }, + "description": "Optional, This is for Unit Cost. When present, the api will return all attributes except the combination in this item." + }, + "currentCombination": { + "$ref": "#/definitions/coverCombinations", + "description": "Optional, This is for Unit Cost. \nWhen present, the currentCombination field represents a combination that is not yet finalized. \nThis field is used to compare with existingCombinations to analyze both sets \nand determine the appropriate attributes to return." } - } + }, + "title": "Request message for GetCostGroupAttribute" }, - "v1ListCalculationsHistoryAwsResponse": { + "v1GetCostGroupAttributeResponse": { "type": "object", "properties": { - "operations": { + "result": { "type": "array", "items": { - "$ref": "#/definitions/protosOperation" + "type": "object", + "$ref": "#/definitions/coverResult" + } + }, + "tagData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apicoverTagData" } } }, - "description": "AWS-specific response message for the Cost.ListCalculationsHistory rpc. Should be compatible with the Operations API." + "title": "Response message for GetCostGroupAttribute" }, - "v1ListCalculationsHistoryResponse": { + "v1GetCostGroupDetailsResponse": { "type": "object", "properties": { - "aws": { - "$ref": "#/definitions/v1ListCalculationsHistoryAwsResponse" + "costGroupData": { + "$ref": "#/definitions/coverCostGroupData" } }, - "description": "Response message for the Cost.ListCalculationsHistory rpc." + "title": "Response message for GetCostGroupDetails" }, - "v1ListCalculationsSchedulesResponse": { + "v1GetCostGroupFeeRequest": { "type": "object", "properties": { - "schedules": { - "type": "array", - "items": { - "$ref": "#/definitions/v1CalculationsSchedule" - } + "costGroupId": { + "type": "string", + "description": "Required. Cost Group Id." + }, + "startTime": { + "type": "string" + }, + "endTime": { + "type": "string" } }, - "description": "Response message for the Cost.ListCalculationsSchedules rpc." + "description": "Request message for the GetCostGroupFee rpc." }, - "v1ListCalculatorRunningAccountsRequest": { + "v1GetCostGroupsResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "month": { - "type": "string", - "description": "Optional. The UTC month to query. Defaults to current month if empty. Format is `yyyymm`. For example, June 2021 will be `202106`." + "costGroupData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverCostGroupData" + } } }, - "description": "Request message for the Cost.ListCalculatorRunningAccounts rpc." + "title": "Response message for GetCostGroups" }, - "v1ListCalculatorRunningAccountsResponse": { + "v1GetCostReductionResponse": { "type": "object", "properties": { - "aws": { - "$ref": "#/definitions/ListCalculatorRunningAccountsResponseAwsRunningAccount", - "description": "AWS-specific entry." + "orgId": { + "type": "string" + }, + "awsCostReductions": { + "$ref": "#/definitions/awsAwsCostReductions" } }, - "description": "Response message for the Cost.ListCalculatorRunningAccounts rpc." + "title": "Response message for GetCostReduction" }, - "v1ListCostFilters": { + "v1GetCostUsageRequest": { "type": "object", "properties": { - "filterId": { + "costGroupId": { "type": "string", - "description": "Required. Filter Id." + "description": "Required. Cost Group Id." }, - "filterName": { + "startTime": { "type": "string", - "description": "Required. Filter Name." + "description": "Optional. If not set, the first day of the current month will be used. Format: `yyyymmdd`." }, - "vendor": { + "endTime": { "type": "string", - "description": "Required. Vendor." + "description": "Optional. If not set, current date will be used. Format: `yyyymmdd`." }, - "groupId": { + "groupByMonth": { + "type": "boolean", + "description": "Optional. If set to true, return data grouped by month within the date range. \nIf you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`. \nYou can also use `groupByColumns` while setting this to true." + }, + "limit": { "type": "string", - "description": "Optional. If set, reads the usage-based cost details of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the usage-based cost details of the whole organization. Optional for AWS Wave(Pro)." + "format": "int64", + "description": "Optional. If set, returns only the services or accounts with the highest cost or usage\nDefault value is 0." }, - "accountId": { + "category": { "type": "string", - "description": "Optional. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the usage-based cost details of the whole organization." + "description": "Optional. Valid values are `cost` and `usage`. \nDefault value is `cost`. Used only when limit is not 0." + }, + "groupBy": { + "type": "string", + "description": "Optional. Valid values are `service` and `account`. Only `service` is supported for now \nDefault value is `service`. Used only when limit is not 0." + }, + "includeZeroCost": { + "type": "boolean", + "description": "Optional. If set to true, return all available data including the data with zero cost.\nDefault value is `false` which means that only data with non-zero cost are returned." }, "awsOptions": { - "$ref": "#/definitions/v1ReadCostsRequestAwsOptions", + "$ref": "#/definitions/v1GetCostUsageRequestAwsOptions", "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + }, + "azureOptions": { + "$ref": "#/definitions/v1GetCostUsageRequestAzureOptions", + "description": "Optional. Valid only for the `azure` vendor. Azure-specific options." + }, + "gcpOptions": { + "$ref": "#/definitions/v1GetCostUsageRequestGcpOptions", + "description": "Optional. Valid only for the `gcp` vendor. gcp-specific options." + }, + "azurecspOptions": { + "$ref": "#/definitions/v1GetCostUsageRequestAzureCspOptions", + "description": "Optional. Valid only for the `azurecsp` vendor. AzureCsp-specific options." + }, + "customOptions": { + "$ref": "#/definitions/v1GetCostUsageRequestCustomOptions", + "description": "Optional. For custom selection when creating cost groups.\nThis field allows custom options for specifying criteria for cost group creation." + }, + "includeForecast": { + "type": "boolean", + "title": "Optional. If set to true, include cost forecast" + }, + "currency": { + "type": "string", + "description": "Optional. If not set, default value is `USD`." } - }, - "description": "Response message for the ListCostFilters rpc." + } }, - "v1ListCostFiltersResponse": { + "v1GetCostUsageRequestAwsOptions": { "type": "object", "properties": { - "costFilters": { + "groupByColumns": { + "type": "string", + "description": "Optional. A comma-separated list of columns to aggregate the data into. \nValid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, and `resourceId`. \nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `productCode,region`. \nYour input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/aws/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." + }, + "groupAccounts": { + "type": "boolean", + "description": "Optional. If set to true, group all input accounts into one." + }, + "filters": { "type": "array", "items": { - "$ref": "#/definitions/v1ListCostFilters" - } + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + }, + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc. Discarded when `groupByColumns` field is set or if `groupByMonth` is true." + }, + "tagKey": { + "type": "string", + "description": "Optional. Tag key, only used when groupBy is set to `tag`." } - }, - "description": "Response message for the ListCostFilters rpc." + } }, - "v1ListFeesRequest": { + "v1GetCostUsageRequestAzureCspOptions": { "type": "object", "properties": { - "month": { - "type": "string" + "groupByColumns": { + "type": "string", + "description": "Optional. A comma-separated list of columns to aggregate the data into. \nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and location data, you can set this field to `serviceName,location`." + }, + "groupAccounts": { + "type": "boolean", + "description": "Optional. If set to true, group all input projects into one." + }, + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + }, + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + }, + "tagKey": { + "type": "string", + "description": "Optional. Tag key, only used when groupBy is set to `tag`." } - }, - "description": "Request message for the ListFees rpc." + } }, - "v1ListIdentityProvidersResponse": { + "v1GetCostUsageRequestAzureOptions": { "type": "object", "properties": { - "data": { + "groupByColumns": { + "type": "string", + "description": "Optional. A comma-separated list of columns to aggregate the data into. \nValid values are `accountId`, `serviceName`, `serviceTier`, `location`, `product`, `partNumber`, `resourceGuid`, `offerId`, `consumedService`, `departmentId`, `departmentName`, `resourceGroup`, `enrollment`, `additionalInfo`\nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and location data, you can set this field to `serviceName,location`." + }, + "groupAccounts": { + "type": "boolean", + "description": "Optional. If set to true, group all input subscription into one." + }, + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + }, + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + } + } + }, + "v1GetCostUsageRequestCustomOptions": { + "type": "object", + "properties": { + "groupByColumns": { + "type": "string", + "description": "Optional. A comma-separated list of columns to aggregate the data into. \nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and location data, you can set this field to `serviceName,location`." + }, + "groupAccounts": { + "type": "boolean", + "description": "Optional. If set to true, group all input projects into one." + }, + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + }, + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + }, + "labelFilters": { "type": "array", "items": { - "$ref": "#/definitions/ListIdentityProvidersResponseIdentityProvider" + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" } - } - }, - "description": "Response message for the Iam.ListIdentityProviders rpc." - }, - "v1ListInvoiceRequest": { - "type": "object", - "properties": { - "groupId": { - "type": "string", - "description": "Optional. billing internal id." - } - }, - "description": "Request message for the ListInvoice rpc." - }, - "v1ListInvoiceResponse": { - "type": "object", - "properties": { - "billingInternalId": { - "type": "string", - "description": "The billing internal id." - }, - "BillingGroupId": { - "type": "string", - "description": "The billing group id." }, - "BillingGroupName": { - "type": "string", - "description": "The billing group name." + "projectLabelFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + } }, - "date": { + "tagKey": { "type": "string", - "description": "The date." + "description": "Optional. Tag key, only used when groupBy is set to `tag`." } - }, - "description": "Response message for the ListInvoice rpc." - }, - "v1ListInvoiceServiceDiscountsRequest": { - "type": "object", - "description": "Request message for the ListInvoiceServiceDiscounts rpc." + } }, - "v1ListInvoiceStatusRequest": { + "v1GetCostUsageRequestGcpOptions": { "type": "object", "properties": { - "date": { + "groupByColumns": { "type": "string", - "description": "Required. Month to get invoice status. Format: `yyyymm`." - } - }, - "description": "Request message for the ListInvoiceStatus rpc." - }, - "v1ListInvoiceTemplateResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" + "description": "Optional. A comma-separated list of columns to aggregate the data into. \nA special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and location data, you can set this field to `serviceName,location`." }, - "description": { - "type": "string" + "groupAccounts": { + "type": "boolean", + "description": "Optional. If set to true, group all input projects into one." }, - "created": { - "type": "string" + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestOptionsFilters] for more information on each filter item. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." }, - "updated": { - "type": "string" + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + }, + "description": "Optional. A list of filtering options specific for tags. \nMultiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." }, - "numberOfConnected": { - "type": "integer", - "format": "int32" + "labelFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" + } }, - "connectedBillingGroup": { + "projectLabelFilters": { "type": "array", "items": { - "$ref": "#/definitions/v1InvoiceConnectedBillingGroups" + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestOptionsFilters" } }, - "invoices": { - "$ref": "#/definitions/v1BillingGroupInvoiceSettings" + "tagKey": { + "type": "string", + "description": "Optional. Tag key, only used when groupBy is set to `tag`." } - }, - "description": "Response message for ListInvoiceTemplate rpc." + } }, - "v1ListNotificationChannelsResponse": { + "v1GetCoverageOndemandResponse": { "type": "object", "properties": { - "channels": { + "orgId": { + "type": "string" + }, + "ondemandData": { "type": "array", "items": { - "$ref": "#/definitions/apiNotificationChannel" + "type": "object", + "$ref": "#/definitions/apiOndemandData" } } }, - "description": "Response message for the Admin.ListNotificationChannels rpc." + "title": "Response message for GetCoverageOndemand" }, - "v1ListNotificationsResponse": { + "v1GetCoverageOptionsResponse": { "type": "object", "properties": { - "notifications": { + "orgId": { + "type": "string" + }, + "optionsData": { "type": "array", "items": { - "$ref": "#/definitions/blueapiapiNotification" + "type": "object", + "$ref": "#/definitions/apiOptionsData" } } }, - "description": "Response message for the Admin.ListNotifications rpc." + "title": "Response message for GetCoverageOptions" }, - "v1ListPermissionsResponse": { + "v1GetCurrentViewResponse": { "type": "object", "properties": { - "permissions": { - "type": "array", - "items": { - "$ref": "#/definitions/apiPermission" - } + "viewData": { + "$ref": "#/definitions/coverViewData" } }, - "description": "Response message for the Iam.ListPermissions rpc." + "title": "Response message for GetCurrentView" }, - "v1ListRecommendationResponse": { + "v1GetCustomerSubscriptionStatusResponse": { "type": "object", "properties": { - "recommendationId": { - "type": "string" - }, - "recommendation": { - "type": "string" - }, - "service": { - "type": "string" - }, - "estimatedMonthlySaving": { - "type": "number", - "format": "double" - }, - "estimatedMonthlyCost": { - "type": "number", - "format": "double" - }, - "scoring": { - "type": "string" - }, - "vendor": { - "type": "string" - }, - "category": { + "dateRegistered": { "type": "string" }, - "optimizationStatus": { + "subscriptionExpiry": { "type": "string" }, - "errorMessage": { - "type": "string" + "daysLeft": { + "type": "integer", + "format": "int32" }, - "accountId": { - "type": "string" + "isSubscribed": { + "type": "boolean" }, - "accountName": { - "type": "string" + "isExpired": { + "type": "boolean" }, - "instanceName": { + "plan": { "type": "string" }, - "instanceId": { + "amount": { "type": "string" }, - "instanceType": { + "paymentOption": { "type": "string" }, - "region": { + "paymentMethod": { "type": "string" }, - "commitment": { + "credit": { "type": "number", "format": "double" + } + } + }, + "v1GetCustomizedBillingServiceBillingGroupResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "Required. [blueapi.api.ripple.CustomizedBillingService.id]" }, - "spType": { - "type": "string" + "vendor": { + "type": "string", + "description": "Required. vendor that applied to the CustomizedBillingService config." }, - "numberToPurchase": { + "chargingTarget": { + "$ref": "#/definitions/rippleChargingTarget", + "title": "Required. [blueapi.api.ripple.ChargingTarget]" + }, + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/blueapiapiAccount" + }, + "description": "Optional. accounts that applied to the CustomizedBillingService config." + } + }, + "description": "Response message for the Billing.GetCustomizedBillingServiceBillingGroup rpc.\n\nIf there is no account information, it indicates that it is applied to BillingGroup.", + "required": [ + "id", + "vendor", + "chargingTarget" + ] + }, + "v1GetDefaultCostAccessTemplateUrlResponse": { + "type": "object", + "properties": { + "launchUrl": { "type": "string", - "format": "int64" + "description": "The CloudFormation launch url. Open it in your browser." }, - "riType": { - "type": "string" + "templateUrl": { + "type": "string", + "description": "The latest CloudFormation template. The version is included in the filename." }, - "type": { - "type": "string" + "stackName": { + "type": "string", + "description": "The default stack name used. Can be modified." }, - "source": { - "type": "string" + "principal": { + "type": "string", + "description": "The AWS account that will receive the access. Do not change." }, - "dateRecommended": { - "type": "string" + "externalId": { + "type": "string", + "description": "The external id for this role. Do not change." + } + }, + "description": "Response message for the Admin.GetDefaultCostAccessTemplateUrl rpc." + }, + "v1GetDiscountRecommendationsRequest": { + "type": "object", + "properties": { + "costGroupId": { + "type": "string", + "description": "Required." }, - "recommendationGroup": { - "type": "string" + "awsInputs": { + "$ref": "#/definitions/coverAwsInputs", + "title": "AWS Inputs" }, - "lastUpdatedAt": { - "type": "string" + "azureInputs": { + "$ref": "#/definitions/coverAzureInputs", + "title": "NOT SUPPORTED YET" }, - "purchaseOption": { - "$ref": "#/definitions/ListRecommendationResponsePurchaseOption" + "gcpInputs": { + "$ref": "#/definitions/coverGcpInputs", + "title": "NOT SUPPORTED YET" } - } + }, + "title": "Request message for GetDiscountRecomemendations" }, - "v1ListRecommendationV2Request": { + "v1GetDiscountRecommendationsResponse": { "type": "object", "properties": { - "costgroupId": { - "type": "string" - }, - "dateRangeStart": { - "type": "string" - }, - "dateRangeEnd": { - "type": "string" + "awsRecommendations": { + "$ref": "#/definitions/coverAwsDiscountRecommendations" }, - "rateSettings": { - "$ref": "#/definitions/ListRecommendationV2RequestRateSettings" + "azureRecommendations": { + "$ref": "#/definitions/coverAzureDiscountRecommendations" }, - "currency": { - "type": "string", - "description": "Optional. If not set, default value is `USD`." + "gcpRecommendations": { + "$ref": "#/definitions/coverGcpDiscountRecommendations" } - } + }, + "title": "Response message for GetDiscountRecommendations" }, - "v1ListRolesResponse": { + "v1GetFavoriteViewsResponse": { "type": "object", "properties": { - "roles": { + "favorites": { "type": "array", "items": { - "$ref": "#/definitions/apiRole" + "type": "object", + "$ref": "#/definitions/coverFavorites" } } }, - "description": "Response message for the Iam.ListRoles rpc." + "title": "Response message for GetFavoriteViews" }, - "v1ListUnitTypesResponse": { + "v1GetForecastsResponse": { "type": "object", "properties": { - "unitCostData": { + "data": { + "$ref": "#/definitions/apiBillingGroupForecast" + } + }, + "description": "Response message for GetForecasts per billing group." + }, + "v1GetFreeFormatResponse": { + "type": "object", + "properties": { + "groupId": { + "type": "string" + }, + "vendor": { + "type": "string" + }, + "freeFormat": { "type": "array", "items": { - "$ref": "#/definitions/coverUnitCostData" + "type": "object", + "$ref": "#/definitions/v1FreeFormItem" } } } }, - "v1ListUsageCostsDriftRequest": { + "v1GetInfoResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "billingInternalId": { - "type": "string", - "description": "Optional. If empty, returns all billing groups." - }, - "month": { - "type": "string", - "description": "Optional. If empty, defaults to current UTC month. Format: yyyymm." + "response": { + "type": "string" } }, - "description": "Request message for the Billing.ListUsageCostsDrift rpc." + "description": "Response message for the Pricing.GetInfo rpc." }, - "v1ListUserRoleMappingsResponse": { + "v1GetMSPDefaultMetaResponse": { "type": "object", "properties": { - "userRoleMappings": { + "defaultMeta": { "type": "array", "items": { - "$ref": "#/definitions/apiUserRoleMapping" + "type": "string" + } + } + } + }, + "v1GetMemberCostGroupResponse": { + "type": "object", + "properties": { + "costGroups": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverMemberCostGroup" } } }, - "description": "Response message for the Iam.ListUserRoleMappings rpc." + "title": "Response message for GetMemberCostGroup" }, - "v1MFAUser": { + "v1GetMemberDetailsResponse": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "string" + "userData": { + "$ref": "#/definitions/coverUserData" } - } + }, + "title": "Response message for GetMemberDetails" }, - "v1MFAUsersInfoResponse": { + "v1GetMembersResponse": { "type": "object", "properties": { - "users": { + "userData": { "type": "array", "items": { - "$ref": "#/definitions/v1MFAUser" + "type": "object", + "$ref": "#/definitions/coverUserData" } } }, - "description": "Response message for the MFAUsersInfoResponse rpc." + "title": "Response message for GetMembers" }, - "v1MapRole": { + "v1GetMonthOnMonthCostForecastResponse": { "type": "object", "properties": { - "namespace": { + "id": { "type": "string" }, - "role": { + "data": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiMonthOnMonthCostForecast" + } + }, + "timestamp": { "type": "string" } - } + }, + "title": "Response message for GetMonthOnMonthCostForecast" }, - "v1MarkAsExecutedRequest": { + "v1GetMonthToDateCostForecastResponse": { "type": "object", "properties": { "id": { + "type": "string" + }, + "budget": { + "type": "number", + "format": "double" + }, + "data": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/apiMonthToDateCostForecast" } + }, + "timestamp": { + "type": "string" } - } - }, - "v1MarkAsExecutedResponse": { - "type": "object" + }, + "title": "Response message for GetMonthToDateCostForecast" }, - "v1ModifyResourceTypeRequest": { + "v1GetMonthlyCostForecastResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. Cloud vendor." - }, - "accountId": { - "type": "string", - "description": "Required. Account Id." - }, - "resourceId": { - "type": "string", - "description": "Required. The resource Id." + "id": { + "type": "string" }, - "resourceType": { - "type": "string", - "description": "Required. The recommended resource type." + "data": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiMonthlyCostForecast" + } }, - "region": { - "type": "string", - "description": "Required. Resource region." + "timestamp": { + "type": "string" } }, - "title": "Request message for ModifyResourceType" + "title": "Response message for GetMonthlyCostForecast" }, - "v1ModifyResourceTypeResponse": { + "v1GetOrgFiscalMonthResponse": { "type": "object", "properties": { - "accountId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { + "fiscalMonth": { "type": "string" }, - "region": { + "dateRegistered": { "type": "string" } - }, - "title": "Response message for ModifyResourceType" + } }, - "v1OnboardOrgRequest": { + "v1GetOrgUpdateCurrencyResponse": { "type": "object", "properties": { - "email": { + "orgId": { "type": "string" }, - "password": { - "type": "string" + "updateCurrency": { + "type": "string", + "format": "int64" }, - "name": { + "lastUpdate": { "type": "string" + } + } + }, + "v1GetPayerAccountImportHistoryResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The queried account id." }, - "orgId": { - "type": "string" + "month": { + "type": "string", + "description": "The queried UTC month." + }, + "timestamps": { + "type": "array", + "items": { + "type": "string" + }, + "title": "List of timestamps in RFC3339 format with the `T` separator. Example: `2019-10-12T07:20:50.52Z`" } }, - "title": "Request message for OnboardOrg" + "description": "Response message for the Cost.GetPayerAccountImportHistory rpc." + }, + "v1GetPayerProformaReportsResponse": { + "type": "object", + "properties": { + "reports": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ProformaReports" + } + } + }, + "description": "Response message for Cost.GetPayerProformaReports rpc." }, - "v1OnboardOrgResponse": { + "v1GetPayersResponse": { "type": "object", "properties": { - "userData": { - "$ref": "#/definitions/coverUserData" + "payers": { + "type": "array", + "items": { + "type": "string" + } } }, - "title": "Response message for OnboardOrg" + "title": "Response message for GetPayers" }, - "v1OptimizationHistoryResponse": { + "v1GetPricingResponse": { "type": "object", "properties": { - "executedRecommendationDetails": { + "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": { - "$ref": "#/definitions/coverExecutedRecommendationDetails" - } + "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." + }, + "v1GetRecommendationResponse": { + "type": "object", + "properties": { + "recommendationData": { + "$ref": "#/definitions/apicoverAWSRecommendations" } } }, - "v1OverViewOptionSection": { + "v1GetRecommendationV2Response": { "type": "object", "properties": { - "sppDiscountCost": { - "type": "number", - "format": "double", - "description": "The spp discount cost." + "data": { + "$ref": "#/definitions/recommendationRecommendationData" } - }, - "description": "OverViewOptionSection resource definition." + } }, - "v1OverViewSection": { + "v1GetRecommendationsRequestAwsOptions": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "The id. id:OverViewSection." - }, - "name": { + "recommendationType": { "type": "string", - "description": "The name. name:OverViewSection." + "description": "Required. Valid values: 'reservation', 'rightsizing', 'scheduling'. Only 'reservation' is supported for now." }, - "currency": { + "type": { "type": "string", - "description": "The currency." + "title": "For recommendationType = 'reservation'. Optional. Valid values: 'combined', 'individual'\nDefault: 'combined'" }, - "invoiceCost": { - "type": "number", - "format": "double", - "description": "The invoice cost." + "riServices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "For recommendationType = 'reservation'. Optional. List of Services [\"AmazonEC2\", \"AmazonRDS\", \"AmazonElastiCache\", \"AmazonES\", \"AmazonRedshift\"]. Default: Empty list." }, - "procurementCost": { - "type": "number", - "format": "double", - "description": "The procurement cost." + "spServices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "For recommendationType = 'reservation'. Optional. List of Services [\"AmazonECS\", \"AmazonEKS\", \"AWSLambda\"]. Default: Empty list." }, - "profitCost": { - "type": "number", - "format": "double", - "description": "The profit cost." + "purchaseEC2SavingsPlan": { + "type": "boolean", + "description": "For recommendationType = 'reservation'. Optional. If set to \"true\", recommends EC2 Instance Savings Plan that will cover usage not covered by RI. Default: false." }, - "options": { - "$ref": "#/definitions/v1OverViewOptionSection", - "description": "The options." + "ec2SpProductFamily": { + "type": "string", + "description": "For recommendationType = 'reservation'. Optional. Valid values: 'EC2Instance', 'Compute'. Default: 'EC2Instance'." }, - "periodOverPeriod": { - "$ref": "#/definitions/v1PeriodOverPeriodSection", - "description": "The period over period." + "term": { + "type": "string", + "description": "For recommendationType = 'reservation'. Optional. Valid values: '1yr', '3yr'. Default: '1yr'." }, - "awsSection": { - "$ref": "#/definitions/v1VendorOverViewSection", - "description": "The aws section." + "offeringClass": { + "type": "string", + "description": "For recommendationType = 'reservation'. Optional. Valid values: 'standard', 'convertible'. Default: 'standard'." }, - "azureSection": { - "$ref": "#/definitions/v1VendorOverViewSection", - "description": "The azure section." + "paymentOption": { + "type": "string", + "description": "For recommendationType = 'reservation'. Optional. Valid values: 'allUpfront', 'partialUpfront', 'noUpfront'. Default: 'allUpfront'." }, - "gcpSection": { - "$ref": "#/definitions/v1VendorOverViewSection", - "description": "The gcp section." + "coveragePercentage": { + "type": "number", + "format": "double", + "description": "For recommendationType = 'reservation'. Optional. Percentage of the usage (in NormalizedUnits) to be covered by Reserved Instance or Savings Plan. Default: 100." } - }, - "description": "OverViewSection resource definition." + } }, - "v1PartnerToken": { + "v1GetRecommendationsResponse": { "type": "object", "properties": { - "token": { + "orgId": { "type": "string" + }, + "awsRecommendations": { + "$ref": "#/definitions/awsAwsRecommendations" } - } + }, + "title": "Request message for GetRecommendations" }, - "v1PeriodOverPeriodOptionSection": { + "v1GetRegionsResponse": { "type": "object", "properties": { - "sppDiscountCost": { - "type": "number", - "format": "double", - "description": "The spp discount cost." - }, - "sppDiscountCostPoP": { - "type": "number", - "format": "double", - "title": "The spp discount cost Period-over-Period.\nRepresents a comparison of costs over a specified period of time.\ncurrently, supported `Month-over-Month`" + "regions": { + "type": "array", + "items": { + "type": "string" + } } }, - "description": "PeriodOverPeriodOptionSection resource definition." + "title": "Response message for GetRegions" }, - "v1PeriodOverPeriodSection": { + "v1GetReportSummaryResponse": { "type": "object", "properties": { - "invoiceCost": { - "type": "number", - "format": "double", - "title": "The invoice cost" - }, - "procurementCost": { - "type": "number", - "format": "double", - "title": "The procurement cost" + "costGroupId": { + "type": "string" }, - "profitCost": { - "type": "number", - "format": "double", - "title": "The profit cost" + "startDate": { + "type": "string" }, - "invoiceCostPoP": { - "type": "number", - "format": "double", - "title": "The invoice cost Period-over-Period.\nRepresents a comparison of costs over a specified period of time.\ncurrently, supported `Month-over-Month`" + "endDate": { + "type": "string" }, - "procurementCostPoP": { - "type": "number", - "format": "double", - "title": "The procurement cost Period-over-Period.\nRepresents a comparison of costs over a specified period of time.\ncurrently, supported `Month-over-Month`" + "executiveSummary": { + "$ref": "#/definitions/coverExecutiveSummary" }, - "profitCostPoP": { - "type": "number", - "format": "double", - "title": "The profit cost Period-over-Period.\nRepresents a comparison of costs over a specified period of time.\ncurrently, supported `Month-over-Month`" + "optimizationRecommendationSummary": { + "$ref": "#/definitions/coverOptimizationRecommendationSummary" }, - "options": { - "$ref": "#/definitions/v1PeriodOverPeriodOptionSection", - "description": "The options cost Period-over-Period." + "savingsSummary": { + "$ref": "#/definitions/coverSavingsSummary" + } + } + }, + "v1GetRightSizingRecommendationResponse": { + "type": "object", + "properties": { + "resource": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverResourceData" + } } }, - "description": "PeriodOverPeriodSection resource definition." + "title": "Response message for GetRightSizingRecommendation" }, - "v1Preference": { - "type": "object" + "v1GetServicesResponse": { + "type": "object", + "properties": { + "services": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "title": "Response message for GetServices" }, - "v1ProcessAuth0UserRequest": { + "v1GetSupportedServicesResponse": { "type": "object", "properties": { - "source": { - "type": "string" - }, - "customerId": { - "type": "string" - }, - "email": { - "type": "string" - }, - "subuserId": { - "type": "string" + "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`.\nFor usage information, visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetPricing." } }, - "title": "Request message for AddUserFromAuth0asRoot rpc" + "description": "Response message for Pricing.GetSupportedServices rpc." + }, + "v1GetTagsResponse": { + "type": "object", + "properties": { + "tagData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apicoverTagData" + } + } + }, + "title": "Response message for GetTags" + }, + "v1GetUnitTypeResponse": { + "type": "object", + "properties": { + "unitCostData": { + "$ref": "#/definitions/coverUnitCostData" + } + } }, - "v1ProcessAuth0UserResponse": { + "v1GetUserDetailsResponse": { "type": "object", "properties": { - "isAuthorized": { - "type": "boolean" + "userData": { + "$ref": "#/definitions/coverUserData" } }, - "title": "Response message wrapper for adding user from Auth0 as root" + "title": "Response message for GetUserDetails" }, - "v1ProformaCur": { + "v1GetUserProfileResponse": { "type": "object", "properties": { - "orgId": { + "hasCreatedProfile": { + "type": "boolean" + }, + "name": { "type": "string" }, - "payerId": { + "role": { "type": "string" }, - "billingInternalId": { + "usage": { "type": "string" }, - "reportName": { + "intention": { "type": "string" }, - "bucketName": { + "companyName": { "type": "string" }, - "prefix": { + "emailAddress": { "type": "string" }, - "timeCreated": { + "linkSource": { "type": "string" + }, + "hasSubscribedUpdates": { + "type": "boolean" } } }, - "v1ProformaReports": { + "v1GetUtilizationResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "payer account id" - }, - "billingInternalId": { - "type": "string", - "title": "billing group internal id" - }, - "billingGroupName": { - "type": "string", - "title": "billing group name" - }, - "bucketName": { - "type": "string", - "title": "s3 bucket name" - }, - "prefix": { - "type": "string", - "title": "s3 report prefix" + "orgId": { + "type": "string" }, - "reportName": { + "utilizationData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/blueapiapiUtilizationData" + } + } + }, + "title": "Response message for GetUtilization" + }, + "v1GetViewsResponse": { + "type": "object", + "properties": { + "viewList": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverViewList" + } + } + }, + "title": "Response message for GetViews" + }, + "v1GetWaveFeaturesResponse": { + "type": "object", + "properties": { + "settings": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1WaveFeature" + } + } + } + }, + "v1GroupServiceDiscountsExport": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/v1ExportData" + } + }, + "description": "GroupServiceDiscountsExport resource definition.\n`Group` refer to `BillingGroup`.\n\ndata is [blueapi.api.ripple.v1.ExportData]\n\ncontent. Base64 encoded value.\nFor example,\ncontent :`YmlsbGluZ0dyb3VwSWQsYmlsbGluZ0dyb3VwTmFtZSxTZXJ2aWNlIFByZW1pdW1zJkRpc2NvdW50cw0K`\nDecoding this value by en, get `billingGroupId,billingGroupName,Service Premiums\u0026Discounts`.\ncontent :`6KuL5rGC44Kw44Or44O844OXSUQs6KuL5rGC44Kw44Or44O844OX5ZCNLOOCteODvOODk+OCueWJsuW8leODu+WJsuWil+ioreWumg0K`\nDecoding this value by ja, get `請求グループID,請求グループ名,サービス割引・割増設定`.\n\ndownloadedRows. Downloaded content lines.\n\ntotalRows.Total of content lines." + }, + "v1ImportCurFilesRequest": { + "type": "object", + "properties": { + "month": { "type": "string", - "title": "report name" + "description": "Optional. The UTC month to import. If empty, it defaults to the current month. Format is `yyyymm`. For example, June 2021 will be `202106`." }, - "roleArn": { + "filter": { "type": "string", - "title": "role arn" + "description": "Optional. A comma-separated list of management accounts to import. If empty, all CURs associated with all your management accounts will be imported." } - } + }, + "description": "Request message for the Cost.ImportCurFiles rpc." }, - "v1ProxyCreateCompletionRequest": { + "v1InviteMemberRequest": { "type": "object", "properties": { - "params": { - "type": "object" + "email": { + "type": "array", + "items": { + "type": "string" + } + }, + "isResend": { + "type": "boolean" + }, + "inviteAsAdmin": { + "type": "boolean" } }, - "description": "Request message for the ProxyCreateCompletion rpc." + "title": "Request message for InviteMember" }, - "v1ProxyCreateCompletionResponse": { + "v1InviteMemberResponse": { "type": "object", "properties": { - "line": { - "type": "string" + "email": { + "type": "array", + "items": { + "type": "string" + } } }, - "description": "Response message for the ProxyCreateCompletion rpc." + "title": "Response message for InviteMember" }, - "v1PublishViewRequest": { + "v1InvoiceConnectedBillingGroups": { "type": "object", "properties": { - "viewId": { - "type": "string", - "description": "Required. View Id." + "billingInternalId": { + "type": "string" + }, + "billingGroupId": { + "type": "string" + }, + "billingGroupName": { + "type": "string" } }, - "title": "Request message for PublishView" + "title": "Response message to be used for ListInvoiceTemplateResponse" }, - "v1PublishViewResponse": { + "v1InvoiceServiceDiscountsSetting": { "type": "object", "properties": { - "url": { - "type": "string" + "awsDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1InvoiceServiceDiscountsSettingDetails" + }, + "description": "The invoice service discounts setting details." + }, + "azureDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1InvoiceServiceDiscountsSettingDetails" + }, + "description": "The invoice service discounts setting details." + }, + "gcpDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1InvoiceServiceDiscountsSettingDetails" + }, + "description": "The invoice service discounts setting details." } }, - "title": "Response message for PublishView" + "description": "InvoiceServiceDiscountsSetting resource definition." }, - "v1ReadAccountOriginalResourcesRequest": { + "v1InvoiceServiceDiscountsSettingDetails": { "type": "object", "properties": { - "vendor": { + "code": { + "type": "string", + "title": "The vendor service code.\naws: ProductCode\nazure: ServiceCode\ngcp: ServiceName\n`otherServices`: The code to specify other services as a whole, regardless of vendor.\nFor exmaple: Other services set at 1%.\n{\"code\":\"otherServices\", \"value\":0.01}" + }, + "name": { "type": "string", - "description": "Required. At the moment, only `aws`.`gcp`,`azure` is supported." + "description": "The vendor service name.", + "readOnly": true + }, + "value": { + "type": "number", + "format": "double", + "description": "Value associated with the set premiums or discounts." + }, + "calculationScope": { + "type": "boolean", + "description": "The calculation scope.\ndefault is `disabled`.\nIf enabled, Usage and any lineitem type including Fee are included in the calculation.\nIf disabled, only the Usage is included in the calculation." } }, - "description": "Request message for the ReadAccountOriginalResources rpc." + "description": "InvoiceServiceDiscountsSettingDetails resource definition.", + "required": [ + "code" + ] }, - "v1ReadAdjustmentsRequest": { + "v1IpFilter": { "type": "object", "properties": { - "vendor": { + "id": { "type": "string", - "description": "Required. At the moment, only `aws` or `azure` is supported." + "description": "IP filter item id. Note that this name is transcient and is not fixed. However, you can use any of its permutations to endpoints that accept it, such as the `DELETE:/iam/v?/ipfilters/{id}` endpoint, without issues." }, - "groupId": { + "scope": { "type": "string", - "description": "Optional. At the moment, only billing internal ids are supported. If set, reads the non-usage-based adjustment details of this group. Valid only if `accountId` is not set. If both `groupId` and `accountId` are not set, reads the adjustment details of the whole organization. Only valid for Ripple users. Implied (or discarded) for Wave(Pro) users." + "description": "Can be `global`, `rootuser`, or `subuser`." }, - "accountId": { + "target": { "type": "string", - "description": "Optional. If set, reads the non-usaged-based adjustment details of this account. Also invalidates the `groupId` value even if set. If both `groupId` and `accountId` are not set, reads the adjustment details of the whole organization." + "description": "The target of the filter. If global scope, this is usually empty. Rootuser name for rootuser scope, and subuser name for subuser scope. For subuser targets, format is `rootuser/subuser`." }, - "startTime": { + "type": { "type": "string", - "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`." + "description": "The type of IP filter. It could be `whitelist` or `blacklist`." }, - "endTime": { + "value": { "type": "string", - "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." - }, - "awsOptions": { - "$ref": "#/definitions/v1ReadAdjustmentsRequestAwsOptions", - "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + "description": "The IP filter value. Should be in CIDR format." + } + } + }, + "v1ListAccountAccessRequest": { + "type": "object", + "description": "Request message for the ListAccountAccess rpc." + }, + "v1ListAccountGroupsResponse": { + "type": "object", + "properties": { + "accountGroups": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiAccountGroup" + } } }, - "description": "Request message for the Cost.ReadAdjustments rpc." + "description": "Response message for the Admin.ListAccountGroups rpc." }, - "v1ReadAdjustmentsRequestAwsOptions": { + "v1ListAccountUsageRequest": { "type": "object", "properties": { - "toCurrency": { - "type": "string", - "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." + "startDate": { + "type": "string" + }, + "endDate": { + "type": "string" } - } + }, + "description": "Request message for the RestoreAccountUsage rpc." }, - "v1ReadBudgetAlertsRequest": { + "v1ListAssetsFilters": { "type": "object", "properties": { - "fieldMask": { - "type": "string", - "description": "Optional." + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } } - }, - "description": "Request message for the ReadBudgetAlerts rpc." + } }, - "v1ReadCostAttributesRequest": { + "v1ListAssetsRequest": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "groupId": { + "costGroupId": { "type": "string", - "description": "Optional. If set, reads the cost attributes of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the cost attributes of the whole organization. Optional for AWS Wave(Pro)." + "description": "Required. Cost Group Id." }, - "accountId": { + "startMonth": { "type": "string", - "description": "Optional. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the cost attributes of the whole organization." + "description": "Optional. If not set, current month will be used. Format: `yyyymm`." }, - "startTime": { + "endMonth": { "type": "string", - "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20200101`." + "description": "Optional. If not set, current month will be used. Format: `yyyymm`." }, - "endTime": { - "type": "string", - "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + "withRecommendation": { + "type": "boolean", + "title": "Optional. If true, returns only all assets with recommendation" }, "awsOptions": { - "$ref": "#/definitions/v1ReadCostAttributesRequestAwsOptions", - "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ListAssetsFilters" + }, + "description": "Optional. For AWS-specific filter options." }, - "azureOptions": { - "$ref": "#/definitions/v1ReadCostAttributesRequestAzureOptions" + "awsPropertiesOptions": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ListAssetsFilters" + }, + "description": "Optional. For AWS-specific properties filter options." } }, - "description": "Request message for the Cost.ReadCostAttributes rpc." + "description": "Request message for the Asset.ListResources rpc." }, - "v1ReadCostAttributesRequestAwsOptions": { + "v1ListAwsDailyRunHistoryRequest": { "type": "object", "properties": { - "dimensions": { + "month": { "type": "string", - "description": "Optional. A comma-separated list of dimensions to query. Valid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, `resourceId`, `tags`, and `costCategories`. Sequence doesn't matter. An empty value implies all attributes will be returned." + "description": "Optional. If empty, defaults to current UTC month. Format: yyyymm." + }, + "groupId": { + "type": "string", + "description": "Optional. If not empty, query for this group. At the moment, only `billingInternalId`s are supported." } - } + }, + "description": "Request message for the Billing.ListAwsCalculationHistory rpc." }, - "v1ReadCostAttributesRequestAzureOptions": { + "v1ListBudgetsRequest": { "type": "object", "properties": { - "customerId": { - "type": "string", - "description": "Optional. The Azure customer id to which the modifier is applied. A comma-separated list of customers is also valid." - }, - "subscriptionId": { - "type": "string", - "description": "Optional. The Azure subscription id to which the modifier is applied. A comma-separated list of subscriptions is also valid." + "includeSpendAndForecast": { + "type": "boolean", + "title": "Optional. Set to true to include monthly spending and forecast within the budget period" }, - "entitlementId": { + "costGroup": { "type": "string", - "description": "Optional. The Azure entitlement id to which the modifier is applied. A comma-separated list of entitlements is also valid." + "description": "Optional. Cost group ID. Return budgets under this specific cost group." } } }, - "v1ReadCostsRequest": { + "v1ListBudgetsResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. Supported vendors are `aws`,`azure` and `gcp`." - }, - "groupId": { - "type": "string", - "description": "Optional. If set, reads the usage-based cost details of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the usage-based cost details of the whole organization. Optional for AWS Wave(Pro)." - }, - "accountId": { - "type": "string", - "description": "Optional. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the usage-based cost details of the whole organization." - }, - "startTime": { - "type": "string", - "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20200101`." - }, - "endTime": { - "type": "string", - "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." - }, - "awsOptions": { - "$ref": "#/definitions/v1ReadCostsRequestAwsOptions", - "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." - }, - "gcpOptions": { - "$ref": "#/definitions/v1ReadCostsRequestGcpOptions", - "description": "Optional. Valid only for the `gcp` vendor. GCP-specific options." - }, - "azureOptions": { - "$ref": "#/definitions/v1ReadCostsRequestAzureOptions", - "description": "Optional. Valid only for the `azure` vendor. Azure-specific options." + "budgetData": { + "$ref": "#/definitions/coverBudgetData" } - }, - "description": "Request message for the Cost.ReadCosts rpc." + } }, - "v1ReadCostsRequestAwsOptions": { + "v1ListCalculationsHistoryAwsResponse": { "type": "object", "properties": { - "groupByColumns": { - "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, and `resourceId`. A special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `productCode,region`. Your input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/aws/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." - }, - "groupByMonth": { - "type": "boolean", - "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`. You can also use `groupByColumns` while setting this to true." - }, - "groupAccounts": { - "type": "boolean", - "description": "Optional. If set to true, group all input accounts into one." - }, - "groupByTagKey": { - "type": "string", - "description": "Optional. Required if groupByColumn is set to tag." - }, - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestAwsOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." - }, - "tagFilters": { + "operations": { "type": "array", "items": { - "$ref": "#/definitions/v1ReadCostsRequestAwsOptionsTagFilters" - }, - "description": "Optional. A list of filtering options specific for tags. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc. Discarded when `groupByColumns` field is set or if `groupByMonth` is true." - }, - "includeTags": { - "type": "boolean", - "title": "Optional. If set to true, stream will include resource tags. Discarded when `groupByColumns` field is set to `none`. `IncludeTags` is set to `false` if `groupByColumns` includes `tags` and `GroupByTagKey` has a value" - }, - "includeCostCategories": { - "type": "boolean", - "description": "Optional. If set to true, stream will include resource cost category information. Discarded when `groupByColumns` field is set to `none`." - }, - "toCurrency": { - "type": "string", - "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." - }, - "forceLatest": { - "type": "boolean", - "description": "Optional. If set to true, always get the up-to-date calculation results. This data isn't necessarily in-sync with your invoice data as AWS could still have updated your CUR files even after you created your invoices. By default, returned data are those that are always in-sync with your invoices.\n\nThis field is discarded for Wave(Pro) users. You will always get the latest data that is in-sync with your invoices." - }, - "noCache": { - "type": "boolean", - "description": "If true, force API to not use cached data." - }, - "includeAdjustments": { - "type": "boolean", - "description": "WORK-IN-PROGRESS: Optional. If set to true, include adjustment entries in the output. Adjustments include fees, discounts, credits, etc. The output here is the same as the ReadAdjustments API." + "type": "object", + "$ref": "#/definitions/protosOperation" + } } }, - "description": "AWS-specific options for ReadCostsRequest." + "description": "AWS-specific response message for the Cost.ListCalculationsHistory rpc. Should be compatible with the Operations API." }, - "v1ReadCostsRequestAwsOptionsFilters": { + "v1ListCalculationsHistoryResponse": { "type": "object", "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "aws": { + "$ref": "#/definitions/v1ListCalculationsHistoryAwsResponse" } }, - "description": "A map of \"key:value\" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." + "description": "Response message for the Cost.ListCalculationsHistory rpc." }, - "v1ReadCostsRequestAwsOptionsTagFilters": { + "v1ListCalculationsSchedulesResponse": { "type": "object", "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" + "schedules": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1CalculationsSchedule" } } }, - "description": "A map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." + "description": "Response message for the Cost.ListCalculationsSchedules rpc." }, - "v1ReadCostsRequestAzureOptions": { + "v1ListCalculatorRunningAccountsResponse": { "type": "object", "properties": { - "groupByColumns": { - "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `serviceName`, `productName`, `region`, `chargeType`, `description`, `billableQuantity`, `effectiveUnitPrice`, `timeInterval`, `billingType`, `alternateId` and `domainName`. A special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `serviceName,region`. Your input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/azure/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." - }, - "groupByMonth": { - "type": "boolean", - "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`. You can also use `groupByColumns` while setting this to true." - }, - "noCache": { - "type": "boolean", - "description": "If true, force API to not use cached data." - }, - "toCurrency": { - "type": "string", - "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." + "aws": { + "$ref": "#/definitions/ListCalculatorRunningAccountsResponseAwsRunningAccount", + "description": "AWS-specific entry." } }, - "description": "Azure-specific options for ReadCostsRequest." + "description": "Response message for the Cost.ListCalculatorRunningAccounts rpc." }, - "v1ReadCostsRequestGcpOptions": { + "v1ListCostFiltersResponse": { "type": "object", - "properties": { - "groupByColumns": { - "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `service`, `sku`, `region`, `zone`, and `usageUnit`. A special value of `none` is also supported, which means query by date or month per account only." - }, - "groupByMonth": { - "type": "boolean", - "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`." - }, - "groupAccounts": { - "type": "boolean", - "description": "Optional. If set to true, group all input accounts into one. Valid only if `groupByMonth` is true." - }, - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestGcpOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestGcpOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." - }, - "includeInvoiceMonth": { - "type": "boolean", - "description": "Optional. If set to true, stream will include invoice month. Discarded when `groupByColumns` field is set to `none`.\n\nThe last usage occurrence of invoice month based on endTime is set to endTime.\nFor example, (Assumption: Last usage start time 2022-02-01 01:00:00 UTC) If you set to \"endTime:20210131\", automatically set to \"endTime:20220101\". Ignored if the batch calculation for invoice month has not been completed." - }, - "includeCredits": { - "type": "boolean", - "description": "Optional. If set to true, stream will include credits{\"creditsType\",\"creditsName\"}. Discarded when `groupByColumns` field is set to `none`." - }, - "rounding": { - "type": "boolean", - "description": "Optional. If set to true, round the cost data to a rounded format. It will be rounded off in the unit specified by `groupByColumns`." - }, - "noCache": { - "type": "boolean", - "description": "If true, force API to not use cached data." + "properties": { + "costFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/costv1ListCostFilters" + } } }, - "description": "GCP-specific options for ReadCostsRequest." + "description": "Response message for the ListCostFilters rpc." }, - "v1ReadCostsRequestGcpOptionsFilters": { + "v1ListFeesRequest": { "type": "object", "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "month": { + "type": "string" } }, - "description": "A map of \"key:value\" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `service` to return only `Compute Engine`, set to `{\"service\":\"eq:Compute Engine\"}` or `{\"service\":\"Compute Engine\"}`. You can also use a regular expression like `{\"service\":\"re:Compute Engine|Cloud Storage\"}`, which means return all Compute Engine or Cloud Storage lineitems. Or reverse regexp, such as `{\"service\":\"!re:^Cloud Engine$\"}`, which means return all items except `Cloud Engine`." + "description": "Request message for the ListFees rpc." }, - "v1ReadCostsRequestOptionsFilters": { + "v1ListIdentityProvidersResponse": { "type": "object", "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" + "data": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ListIdentityProvidersResponseIdentityProvider" } } }, - "description": "A map of \"key:value\" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." + "description": "Response message for the Iam.ListIdentityProviders rpc." }, - "v1ReadCustomizedBillingServicesRequest": { + "v1ListInvoiceRequest": { "type": "object", "properties": { - "fieldMask": { + "groupId": { "type": "string", - "description": "Optional. Get only the value that set fieldMask.\n\nsee more info: https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/field_mask.proto" + "description": "Optional. billing internal id." } }, - "description": "Request message for the Billing.ReadCustomizedBillingServices rpc." + "description": "Request message for the ListInvoice rpc." }, - "v1ReadInvoiceAdjustmentsRequest": { + "v1ListInvoiceResponse": { "type": "object", "properties": { - "vendor": { + "billingInternalId": { "type": "string", - "description": "Required. At the moment, only `aws`,`azure`,`gcp` is supported." + "description": "The billing internal id." }, - "accountId": { + "BillingGroupId": { "type": "string", - "description": "Required." + "description": "The billing group id." }, - "month": { + "BillingGroupName": { "type": "string", - "description": "Optional. The UTC month to query. If empty, defaults to current month. Format is `yyyymm`. For example, June 2021 will be `202106`." + "description": "The billing group name." }, - "feeType": { + "date": { "type": "string", - "description": "Optional. If empty, defaults to all fee type. At the moment, only `Fee`,`Refund`,`Credit`,`SppDiscount`,`EdpDiscount`,`BundledDiscount` is supported." + "description": "The date." } }, - "description": "Request message for the Billing.ReadInvoiceAdjustments rpc." + "description": "Response message for the ListInvoice rpc." }, - "v1ReadInvoiceCostsRequest": { + "v1ListInvoiceServiceDiscountsRequest": { "type": "object", - "properties": { - "startTime": { - "type": "string", - "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20240101`." - }, - "endTime": { - "type": "string", - "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." - }, - "toCurrency": { - "type": "string", - "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." - } - }, - "description": "Request message for the ReadInvoiceCosts rpc." + "description": "Request message for the ListInvoiceServiceDiscounts rpc." }, - "v1ReadInvoiceGroupCostsRequest": { + "v1ListInvoiceTemplateResponse": { "type": "object", "properties": { - "startTime": { - "type": "string", - "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20240101`." + "id": { + "type": "string" }, - "endTime": { - "type": "string", - "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + "name": { + "type": "string" }, - "toCurrency": { - "type": "string", - "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." + "description": { + "type": "string" }, - "limit": { + "created": { + "type": "string" + }, + "updated": { + "type": "string" + }, + "numberOfConnected": { "type": "integer", - "format": "int32", - "description": "Optional. Number of acquisitions. default:10." + "format": "int32" + }, + "connectedBillingGroup": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1InvoiceConnectedBillingGroups" + } + }, + "invoices": { + "$ref": "#/definitions/v1BillingGroupInvoiceSettings" } }, - "description": "Request message for the ReadInvoiceGroupCosts rpc." + "description": "Response message for ListInvoiceTemplate rpc." }, - "v1ReadInvoiceIdsRequest": { + "v1ListNotificationChannelsResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "month": { - "type": "string", - "description": "Optional. The UTC month to query. If empty, defaults to current month. Format is `yyyymm`. For example, July 2024 will be `202407`." + "channels": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiNotificationChannel" + } } }, - "description": "Request message for the ReadInvoiceIds rpc." + "description": "Response message for the Admin.ListNotificationChannels rpc." }, - "v1ReadInvoiceIdsResponse": { + "v1ListNotificationsResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "The invoice id" + "notifications": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/blueapiapiNotification" + } } }, - "description": "Response message for the ReadInvoiceIds rpc." + "description": "Response message for the Admin.ListNotifications rpc." }, - "v1ReadInvoiceOverviewsRequest": { + "v1ListPermissionsResponse": { "type": "object", "properties": { - "startTime": { - "type": "string", - "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20240101`." - }, - "endTime": { - "type": "string", - "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." - }, - "toCurrency": { - "type": "string", - "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." + "permissions": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiPermission" + } } }, - "description": "Request message for the ReadInvoiceOverviews rpc." + "description": "Response message for the Iam.ListPermissions rpc." }, - "v1ReadNonTagCostsRequest": { + "v1ListRecommendationResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "recommendationId": { + "type": "string" }, - "billingInternalId": { - "type": "string", - "description": "Required. The billing internal id to stream." + "recommendation": { + "type": "string" }, - "startTime": { - "type": "string", - "description": "Optional. Timestamp to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`." + "service": { + "type": "string" }, - "endTime": { - "type": "string", - "description": "Optional. Timestamp to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + "estimatedMonthlySaving": { + "type": "number", + "format": "double" + }, + "estimatedMonthlyCost": { + "type": "number", + "format": "double" + }, + "scoring": { + "type": "string" }, - "groupByMonths": { - "type": "boolean", - "description": "Optional. Group services and costs by months in the range of `startTime` and `endTime`. If not set, daily data will be returned." - } - }, - "description": "Request message for the Cost.ReadNonTagCosts rpc." - }, - "v1ReadServiceDiscountsServicesRequest": { - "type": "object", - "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws`,`azure`,`gcp` is supported." - } - }, - "description": "Request message for the ReadServiceDiscountsServices rpc." - }, - "v1ReadTagCostsRequest": { - "type": "object", - "properties": { "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "type": "string" }, - "billingInternalId": { - "type": "string", - "description": "Required. The billing internal id to stream." + "category": { + "type": "string" }, - "startTime": { - "type": "string", - "description": "Optional. Timestamp to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`." + "optimizationStatus": { + "type": "string" }, - "endTime": { - "type": "string", - "description": "Optional. Timestamp to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + "errorMessage": { + "type": "string" }, - "groupByMonths": { - "type": "boolean", - "description": "Optional. Group services and costs by months in the range of `startTime` and `endTime`. If not set, daily data will be returned." + "accountId": { + "type": "string" }, - "awsOptions": { - "$ref": "#/definitions/v1ReadTagCostsRequestAwsOptions", - "description": "Optional. Valid only for the `aws` vendor. AWS-specific options." - } - }, - "description": "Request message for the Cost.ReadTagCosts rpc." - }, - "v1ReadTagCostsRequestAwsOptions": { - "type": "object", - "properties": { - "tagId": { - "type": "string", - "description": "Optional. If set, only return data for this tagId." + "accountName": { + "type": "string" + }, + "instanceName": { + "type": "string" + }, + "instanceId": { + "type": "string" + }, + "instanceType": { + "type": "string" + }, + "region": { + "type": "string" }, - "groupByColumns": { - "type": "string", - "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, and `resourceId`. A special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `productCode,region`. Your input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/aws/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." + "commitment": { + "type": "number", + "format": "double" }, - "groupByMonth": { - "type": "boolean", - "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`. You can also use `groupByColumns` while setting this to true." + "spType": { + "type": "string" }, - "filters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadCostsRequestAwsOptionsFilters" - }, - "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + "numberToPurchase": { + "type": "string", + "format": "int64" }, - "tagFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReadTagCostsRequestAwsOptionsTagFilters" - }, - "description": "Optional. A list of filtering options specific for tags. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc. Discarded when `groupByColumns` field is set or if `groupByMonth` is true." + "riType": { + "type": "string" }, - "includeTags": { - "type": "boolean", - "description": "Optional. If set to true, stream will include resource tags. Discarded when `groupByColumns` field is set to `none`." + "type": { + "type": "string" }, - "includeCostCategories": { - "type": "boolean", - "description": "Optional. If set to true, stream will include resource cost category information. Discarded when `groupByColumns` field is set to `none`." + "source": { + "type": "string" }, - "toCurrency": { - "type": "string", - "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." + "dateRecommended": { + "type": "string" }, - "forceLatest": { - "type": "boolean", - "description": "Optional. If set to true, always get the up-to-date calculation results. This data isn't necessarily in-sync with your invoice data as AWS could still have updated your CUR files even after you created your invoices. By default, returned data are those that are always in-sync with your invoices.\n\nThis field is discarded for Wave(Pro) users. You will always get the latest data that is in-sync with your invoices." + "recommendationGroup": { + "type": "string" }, - "noCache": { - "type": "boolean", - "description": "If true, force API to not use cached data." + "lastUpdatedAt": { + "type": "string" }, - "tagIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. If set, only return data list tags." + "purchaseOption": { + "$ref": "#/definitions/ListRecommendationResponsePurchaseOption" } } }, - "v1ReadTagCostsRequestAwsOptionsTagFilters": { - "type": "object", - "properties": { - "andFilters": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "description": "A map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." - }, - "v1ReadUntaggedGroupsRequest": { + "v1ListRecommendationV2Request": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported.", - "required": [ - "vendor" - ] + "costgroupId": { + "type": "string" }, - "fieldMask": { + "dateRangeStart": { + "type": "string" + }, + "dateRangeEnd": { + "type": "string" + }, + "rateSettings": { + "$ref": "#/definitions/ListRecommendationV2RequestRateSettings" + }, + "currency": { "type": "string", - "description": "Optional. Get only the value that set fieldMask.\n\nsee more info: https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/field_mask.proto" + "description": "Optional. If not set, default value is `USD`." } - }, - "description": "Request message for the Billing.ReadUntaggedGroups rpc.", - "required": [ - "vendor" - ] + } }, - "v1RefreshPartnerTokenRequest": { + "v1ListRolesResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Required. Partner id or audience for the token." - }, - "token": { - "type": "string", - "description": "Required. The previous (old) token to be refreshed." + "roles": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiRole" + } } }, - "description": "Request message for the Iam.RefreshPartnerToken rpc." + "description": "Response message for the Iam.ListRoles rpc." }, - "v1RegisterAccountRequest": { + "v1ListUnitTypesResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. Cloud vendor." - }, - "accountId": { - "type": "string", - "description": "Required. The AWS account Id." - }, - "accountName": { - "type": "string", - "title": "The account name" + "unitCostData": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverUnitCostData" + } } - }, - "description": "Request message for the RegisterAccount rpc." + } }, - "v1RegisterAccounts": { + "v1ListUserRoleMappingsResponse": { "type": "object", "properties": { - "enabled": { - "type": "boolean", - "description": "Optional.\nIf enabled, any additional accounts will be automatically enrolled into the billing group.\nIf disabled, register the account manually.\n\nFor GCP, Register projectId under the specific Sub billing account.\nFor AWS, Register accountId under the specific payer account into the billing group" - }, - "accountId": { - "type": "string", - "description": "Optional. AccountId to be used for registration into the billing group." + "userRoleMappings": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiUserRoleMapping" + } } }, - "title": "Register Accounts definition" + "description": "Response message for the Iam.ListUserRoleMappings rpc." }, - "v1RegisterDataAccessRequest": { + "v1MFAUser": { "type": "object", "properties": { - "vendor": { - "type": "string", - "title": "Vendor (Azure/GCP)" - }, - "target": { - "type": "string", - "title": "Billing Id for GCP, Account Id for Azure" + "id": { + "type": "string" }, - "accountType": { - "type": "string", - "title": "Account type (payer/linked)" + "name": { + "type": "string" }, - "gcpOptions": { - "$ref": "#/definitions/coverGcpOptions", - "title": "GCP Options. Specific for GCP" + "type": { + "type": "string" }, - "azureOptions": { - "$ref": "#/definitions/apicoverAzureOptions", - "title": "Azure Options. Specific for Azure" + "status": { + "type": "string" }, - "awsOptions": { - "$ref": "#/definitions/apicoverAwsOptions", - "title": "Aws Options. Specific for Aws" + "createdAt": { + "type": "string" } - }, - "description": "Request message for Register Data Access. For azure and gcp." + } }, - "v1RegisterNewUserRequest": { + "v1MFAUsersInfoResponse": { "type": "object", "properties": { - "email": { - "type": "string", - "title": "required email" - }, - "password": { - "type": "string", - "title": "required password" - }, - "name": { - "type": "string", - "title": "required user Name" - }, - "company": { - "type": "string", - "title": "required company name" - }, - "role": { - "type": "string", - "title": "required company role" - }, - "amount": { - "type": "string", - "title": "optional company monthly cloud usage" - }, - "intention": { - "type": "string", - "title": "optional intention" + "users": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1MFAUser" + } } }, - "title": "Request message for RegisterNewUser" + "description": "Response message for the MFAUsersInfoResponse rpc." }, - "v1RegisterNewUserResponse": { + "v1MapRole": { "type": "object", "properties": { - "isAuthorized": { - "type": "boolean" + "namespace": { + "type": "string" + }, + "role": { + "type": "string" } } }, - "v1RemoveAccountInvoiceServiceDiscountsRequest": { + "v1MarkAsExecutedRequest": { "type": "object", "properties": { - "groupId": { - "type": "string", - "description": "Required.\n\nFor Ripple, only billing internal ids are supported at the moment. You can set it to a single group\n\nImplied as the parent billing group for Wave(Pro) users." - }, - "accounts": { + "id": { "type": "array", "items": { - "$ref": "#/definitions/v1AccountServiceDiscounts" - }, - "description": "Required." + "type": "string" + } } } }, - "v1RemoveCostGroupMemberRequest": { + "v1MarkAsExecutedResponse": { + "type": "object" + }, + "v1ModifyResourceTypeResponse": { "type": "object", "properties": { - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." + "accountId": { + "type": "string" }, - "userId": { - "type": "string", - "description": "Required. User Id." + "resourceId": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "region": { + "type": "string" } }, - "title": "Request message for RemoveCostGroupMember" + "title": "Response message for ModifyResourceType" }, - "v1RemoveCostGroupMemberResponse": { + "v1OnboardOrgRequest": { "type": "object", "properties": { - "costGroupId": { + "email": { "type": "string" }, - "userId": { + "password": { + "type": "string" + }, + "name": { + "type": "string" + }, + "orgId": { "type": "string" } }, - "title": "Response message for RemoveCostGroupMember" + "title": "Request message for OnboardOrg" }, - "v1RemoveFavoriteRequest": { + "v1OnboardOrgResponse": { "type": "object", "properties": { - "viewId": { - "type": "string", - "description": "Required. View Id." + "userData": { + "$ref": "#/definitions/coverUserData" } }, - "title": "Request message for RemoveFavorite" + "title": "Response message for OnboardOrg" }, - "v1RemoveFavoriteResponse": { + "v1OptimizationHistoryResponse": { "type": "object", "properties": { - "viewId": { - "type": "string" + "executedRecommendationDetails": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coverExecutedRecommendationDetails" + } + } + } + }, + "v1OverViewOptionSection": { + "type": "object", + "properties": { + "sppDiscountCost": { + "type": "number", + "format": "double", + "description": "The spp discount cost." } }, - "title": "Response message for RemoveFavorite" + "description": "OverViewOptionSection resource definition." }, - "v1RemoveSideMenuFavoriteRequest": { + "v1OverViewSection": { "type": "object", "properties": { - "viewId": { + "id": { "type": "string", - "description": "Required. View Id." + "description": "The id. id:OverViewSection." }, - "menuItemId": { - "type": "string" + "name": { + "type": "string", + "description": "The name. name:OverViewSection." + }, + "currency": { + "type": "string", + "description": "The currency." + }, + "invoiceCost": { + "type": "number", + "format": "double", + "description": "The invoice cost." + }, + "procurementCost": { + "type": "number", + "format": "double", + "description": "The procurement cost." + }, + "profitCost": { + "type": "number", + "format": "double", + "description": "The profit cost." + }, + "options": { + "$ref": "#/definitions/v1OverViewOptionSection", + "description": "The options." + }, + "periodOverPeriod": { + "$ref": "#/definitions/v1PeriodOverPeriodSection", + "description": "The period over period." + }, + "awsSection": { + "$ref": "#/definitions/v1VendorOverViewSection", + "description": "The aws section." + }, + "azureSection": { + "$ref": "#/definitions/v1VendorOverViewSection", + "description": "The azure section." + }, + "gcpSection": { + "$ref": "#/definitions/v1VendorOverViewSection", + "description": "The gcp section." } }, - "title": "Request message for RemoveSideMenuFavorite" + "description": "OverViewSection resource definition." }, - "v1RemoveSideMenuFavoriteResponse": { + "v1PartnerToken": { "type": "object", "properties": { - "viewId": { + "token": { "type": "string" } - }, - "title": "Response message for RemoveSideMenuFavorite" + } }, - "v1ResetPasswordRequest": { + "v1PeriodOverPeriodOptionSection": { "type": "object", "properties": { - "userId": { - "type": "string", - "description": "Required. UserId." + "sppDiscountCost": { + "type": "number", + "format": "double", + "description": "The spp discount cost." + }, + "sppDiscountCostPoP": { + "type": "number", + "format": "double", + "title": "The spp discount cost Period-over-Period.\nRepresents a comparison of costs over a specified period of time.\ncurrently, supported `Month-over-Month`" } }, - "title": "Request message for ResetPassword" + "description": "PeriodOverPeriodOptionSection resource definition." }, - "v1ResetPasswordResponse": { + "v1PeriodOverPeriodSection": { "type": "object", "properties": { - "userId": { - "type": "string" + "invoiceCost": { + "type": "number", + "format": "double", + "title": "The invoice cost" + }, + "procurementCost": { + "type": "number", + "format": "double", + "title": "The procurement cost" + }, + "profitCost": { + "type": "number", + "format": "double", + "title": "The profit cost" + }, + "invoiceCostPoP": { + "type": "number", + "format": "double", + "title": "The invoice cost Period-over-Period.\nRepresents a comparison of costs over a specified period of time.\ncurrently, supported `Month-over-Month`" + }, + "procurementCostPoP": { + "type": "number", + "format": "double", + "title": "The procurement cost Period-over-Period.\nRepresents a comparison of costs over a specified period of time.\ncurrently, supported `Month-over-Month`" + }, + "profitCostPoP": { + "type": "number", + "format": "double", + "title": "The profit cost Period-over-Period.\nRepresents a comparison of costs over a specified period of time.\ncurrently, supported `Month-over-Month`" + }, + "options": { + "$ref": "#/definitions/v1PeriodOverPeriodOptionSection", + "description": "The options cost Period-over-Period." } }, - "title": "Response message for ResetPassword" + "description": "PeriodOverPeriodSection resource definition." }, - "v1ResetUserPasswordRequest": { + "v1Preference": { + "type": "object" + }, + "v1ProcessAuth0UserRequest": { "type": "object", "properties": { - "previousPassword": { + "source": { "type": "string" }, - "newPassword": { + "customerId": { + "type": "string" + }, + "email": { + "type": "string" + }, + "subuserId": { "type": "string" } }, - "title": "Request message for ResetUserPassword" + "title": "Request message for AddUserFromAuth0asRoot rpc" }, - "v1ResetUserPasswordResponse": { + "v1ProcessAuth0UserResponse": { "type": "object", "properties": { - "userData": { - "$ref": "#/definitions/coverUserData" + "isAuthorized": { + "type": "boolean" } }, - "title": "Response message for ResetUserPassword" + "title": "Response message wrapper for adding user from Auth0 as root" }, - "v1ResolveAWSMarketplaceTokenForOnboardingRequest": { + "v1ProformaCur": { "type": "object", "properties": { - "registrationToken": { + "orgId": { "type": "string" - } - } - }, - "v1ResolveAWSMarketplaceTokenForOnboardingResponse": { - "type": "object", - "properties": { - "isAllowedToOnboard": { - "type": "boolean" }, - "customerId": { + "payerId": { "type": "string" - } - } - }, - "v1ResolveCostGroupCombinationsResponse": { - "type": "object", - "properties": { - "costGroupId": { + }, + "billingInternalId": { "type": "string" }, - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/apicoverAccount" - } + "reportName": { + "type": "string" + }, + "bucketName": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "timeCreated": { + "type": "string" } } }, - "v1Resource": { + "v1ProformaReports": { "type": "object", "properties": { - "date": { - "type": "string", - "title": "Format is `yyyy-mm`" - }, - "orgId": { - "type": "string", - "title": "Organization ID" - }, - "vendor": { - "type": "string", - "description": "Only `aws` is supported for now." - }, - "account": { + "id": { "type": "string", - "title": "Resource owner account" + "title": "payer account id" }, - "service": { + "billingInternalId": { "type": "string", - "description": "Only `AmazonEC2` is supported for now." + "title": "billing group internal id" }, - "resourceId": { + "billingGroupName": { "type": "string", - "title": "Resource unique identifier" + "title": "billing group name" }, - "resourceType": { + "bucketName": { "type": "string", - "title": "Only `AWS::EC2::Instance` is supported for now" - }, - "cost": { - "type": "number", - "format": "double", - "description": "Cost incurred for the resource on specified month." + "title": "s3 bucket name" }, - "properties": { + "prefix": { "type": "string", - "title": "Format: JSON String" + "title": "s3 report prefix" }, - "recommendation": { + "reportName": { "type": "string", - "title": "Format: JSON String" + "title": "report name" + }, + "roleArn": { + "type": "string", + "title": "role arn" } } }, - "v1ResourceAccount": { + "v1ProxyCreateCompletionRequest": { "type": "object", "properties": { - "payerId": { - "type": "string" - }, - "customerId": { + "params": { + "type": "object" + } + }, + "description": "Request message for the ProxyCreateCompletion rpc." + }, + "v1ProxyCreateCompletionResponse": { + "type": "object", + "properties": { + "line": { "type": "string" - }, - "registered": { - "type": "boolean" } - } + }, + "description": "Response message for the ProxyCreateCompletion rpc." }, - "v1RestoreAccountUsageRequest": { + "v1PublishViewRequest": { "type": "object", "properties": { - "allocationId": { + "viewId": { "type": "string", - "description": "Required. The account usage to restore." + "description": "Required. View Id." } }, - "description": "Request message for the RestoreAccountUsage rpc." + "title": "Request message for PublishView" }, - "v1RestoreFeeRequest": { + "v1PublishViewResponse": { "type": "object", "properties": { - "feeId": { - "type": "string", - "description": "Required. The fee to restore." + "url": { + "type": "string" } }, - "description": "Request message for the RestoreFee rpc." + "title": "Response message for PublishView" }, - "v1RestoreSavingsRequest": { + "v1ReadAdjustmentsRequestAwsOptions": { "type": "object", "properties": { - "id": { + "toCurrency": { "type": "string", - "description": "Required. The item to restore." + "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." } - }, - "description": "Request message for the RestoreSavings rpc." + } }, - "v1SaveNotificationSettingsRequest": { + "v1ReadBudgetAlertsRequest": { "type": "object", "properties": { - "enabled": { - "type": "boolean", - "description": "Required. Enable or disable notifications globally." - }, - "defaultChannel": { + "fieldMask": { "type": "string", - "description": "Optional. If non-empty, set this notification channel id as the default channel." + "description": "Optional." } }, - "description": "Request message for the Admin.SaveNotificationSettings rpc." + "description": "Request message for the ReadBudgetAlerts rpc." }, - "v1SavingsDetails": { + "v1ReadCostAttributesRequestAwsOptions": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "orgId": { - "type": "string" - }, - "vendor": { - "type": "string" - }, - "account": { - "type": "string" + "dimensions": { + "type": "string", + "description": "Optional. A comma-separated list of dimensions to query. Valid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, `resourceId`, `tags`, and `costCategories`. Sequence doesn't matter. An empty value implies all attributes will be returned." + } + } + }, + "v1ReadCostAttributesRequestAzureOptions": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Optional. The Azure customer id to which the modifier is applied. A comma-separated list of customers is also valid." }, - "month": { - "type": "string" + "subscriptionId": { + "type": "string", + "description": "Optional. The Azure subscription id to which the modifier is applied. A comma-separated list of subscriptions is also valid." }, - "type": { - "type": "string" + "entitlementId": { + "type": "string", + "description": "Optional. The Azure entitlement id to which the modifier is applied. A comma-separated list of entitlements is also valid." + } + } + }, + "v1ReadCostsRequestAwsOptions": { + "type": "object", + "properties": { + "groupByColumns": { + "type": "string", + "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, and `resourceId`. A special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `productCode,region`. Your input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/aws/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." }, - "arn": { - "type": "string" + "groupByMonth": { + "type": "boolean", + "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`. You can also use `groupByColumns` while setting this to true." }, - "productCode": { - "type": "string" + "groupAccounts": { + "type": "boolean", + "description": "Optional. If set to true, group all input accounts into one." }, - "offerClass": { - "type": "string" + "groupByTagKey": { + "type": "string", + "description": "Optional. Required if groupByColumn is set to tag." }, - "ondemand": { - "type": "number", - "format": "double" + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestAwsOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." }, - "effectiveCost": { - "type": "number", - "format": "double" + "tagFilters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestAwsOptionsTagFilters" + }, + "description": "Optional. A list of filtering options specific for tags. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc. Discarded when `groupByColumns` field is set or if `groupByMonth` is true." }, - "savings": { - "type": "number", - "format": "double" + "includeTags": { + "type": "boolean", + "title": "Optional. If set to true, stream will include resource tags. Discarded when `groupByColumns` field is set to `none`. `IncludeTags` is set to `false` if `groupByColumns` includes `tags` and `GroupByTagKey` has a value" }, - "splitStatus": { - "type": "string" + "includeCostCategories": { + "type": "boolean", + "description": "Optional. If set to true, stream will include resource cost category information. Discarded when `groupByColumns` field is set to `none`." }, - "isAllocated": { - "type": "boolean" + "toCurrency": { + "type": "string", + "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." }, - "isApplied": { - "type": "boolean" + "forceLatest": { + "type": "boolean", + "description": "Optional. If set to true, always get the up-to-date calculation results. This data isn't necessarily in-sync with your invoice data as AWS could still have updated your CUR files even after you created your invoices. By default, returned data are those that are always in-sync with your invoices.\n\nThis field is discarded for Wave(Pro) users. You will always get the latest data that is in-sync with your invoices." }, - "source": { - "type": "string" + "noCache": { + "type": "boolean", + "description": "If true, force API to not use cached data." }, - "lastUpdate": { - "type": "string" + "includeAdjustments": { + "type": "boolean", + "description": "WORK-IN-PROGRESS: Optional. If set to true, include adjustment entries in the output. Adjustments include fees, discounts, credits, etc. The output here is the same as the ReadAdjustments API." } }, - "description": "Response message for ListSavings, RestoreSavings, SimulateSavings rpc." + "description": "AWS-specific options for ReadCostsRequest." }, - "v1Service": { + "v1ReadCostsRequestAwsOptionsFilters": { "type": "object", "properties": { - "serviceCode": { - "type": "string", - "description": "The service code." - }, - "serviceName": { - "type": "string", - "description": "The service name." + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, - "description": "Service resource definition.\nServices of each vendor available for Service Discounts." + "description": "A map of \"key:value\" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." }, - "v1ServiceDiscountsExport": { + "v1ReadCostsRequestAwsOptionsTagFilters": { "type": "object", "properties": { - "data": { - "$ref": "#/definitions/v1ExportData", - "description": "content. Base64 encoded value.\nFor example, content :``\nDecoding this value, get ``.\n\ndownloadedRows. Downloaded content lines.\n\ntotalRows.Total of content lines.", - "title": "data is [blueapi.api.ripple.v1.ExportData]" + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, - "description": "ServiceDiscountsExport resource definition." + "description": "A map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." }, - "v1SetCostGroupAnomalyOptionsRequest": { + "v1ReadCostsRequestAzureOptions": { "type": "object", "properties": { - "costGroupId": { + "groupByColumns": { "type": "string", - "description": "Required. Cost Group Id." + "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `serviceName`, `productName`, `region`, `chargeType`, `description`, `billableQuantity`, `effectiveUnitPrice`, `timeInterval`, `billingType`, `alternateId` and `domainName`. A special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `serviceName,region`. Your input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/azure/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." + }, + "groupByMonth": { + "type": "boolean", + "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`. You can also use `groupByColumns` while setting this to true." + }, + "noCache": { + "type": "boolean", + "description": "If true, force API to not use cached data." + }, + "toCurrency": { + "type": "string", + "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." + } + }, + "description": "Azure-specific options for ReadCostsRequest." + }, + "v1ReadCostsRequestGcpOptions": { + "type": "object", + "properties": { + "groupByColumns": { + "type": "string", + "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `service`, `sku`, `region`, `zone`, and `usageUnit`. A special value of `none` is also supported, which means query by date or month per account only." + }, + "groupByMonth": { + "type": "boolean", + "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`." + }, + "groupAccounts": { + "type": "boolean", + "description": "Optional. If set to true, group all input accounts into one. Valid only if `groupByMonth` is true." + }, + "filters": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestGcpOptionsFilters" + }, + "description": "Optional. A list of filtering options. See [ReadCostsRequestGcpOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." + }, + "includeInvoiceMonth": { + "type": "boolean", + "description": "Optional. If set to true, stream will include invoice month. Discarded when `groupByColumns` field is set to `none`.\n\nThe last usage occurrence of invoice month based on endTime is set to endTime.\nFor example, (Assumption: Last usage start time 2022-02-01 01:00:00 UTC) If you set to \"endTime:20210131\", automatically set to \"endTime:20220101\". Ignored if the batch calculation for invoice month has not been completed." }, - "threshold": { - "type": "number", - "format": "float", - "title": "Required" + "includeCredits": { + "type": "boolean", + "description": "Optional. If set to true, stream will include credits{\"creditsType\",\"creditsName\"}. Discarded when `groupByColumns` field is set to `none`." }, - "isPercentage": { + "rounding": { "type": "boolean", - "description": "Required. When set to true, the threshold is a percentage to the actual cost. Otherwise, it is a fixed amount." + "description": "Optional. If set to true, round the cost data to a rounded format. It will be rounded off in the unit specified by `groupByColumns`." }, - "pastDataInMonths": { - "type": "string", - "format": "int64", - "description": "Optional. The number of past months to be used in training the model. Note: This will affect the results of anomaly detection. Default and max is 9 while min is 1." + "noCache": { + "type": "boolean", + "description": "If true, force API to not use cached data." } - } + }, + "description": "GCP-specific options for ReadCostsRequest." }, - "v1SetCostGroupAnomalyOptionsResponse": { + "v1ReadCostsRequestGcpOptionsFilters": { "type": "object", "properties": { - "costGroupId": { - "type": "string" - }, - "anomalyOptions": { - "$ref": "#/definitions/coverAnomalyOptions" + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } } - } + }, + "description": "A map of \"key:value\" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `service` to return only `Compute Engine`, set to `{\"service\":\"eq:Compute Engine\"}` or `{\"service\":\"Compute Engine\"}`. You can also use a regular expression like `{\"service\":\"re:Compute Engine|Cloud Storage\"}`, which means return all Compute Engine or Cloud Storage lineitems. Or reverse regexp, such as `{\"service\":\"!re:^Cloud Engine$\"}`, which means return all items except `Cloud Engine`." }, - "v1SetCostGroupEventIndicatorRequest": { + "v1ReadCostsRequestOptionsFilters": { "type": "object", "properties": { - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." - }, - "anomaly": { - "type": "boolean", - "title": "Required. Only anomaly is supported as of now" - }, - "visualBuilder": { - "type": "boolean", - "title": "Optional. Temporary storage of cost group creation UI preference" + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } } - } + }, + "description": "A map of \"key:value\" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you like to filter `productCode` to return only `AmazonEC2`, set to `{\"productCode\":\"eq:AmazonEC2\"}` or `{\"productCode\":\"AmazonEC2\"}`. You can also use a regular expression like `{\"productCode\":\"re:AmazonEC2|AmazonRDS\"}`, which means return all AmazonEC2 or AmazonRDS lineitems. Or reverse regexp, such as `{\"productCode\":\"!re:^AmazonEC2$\"}`, which means return all items except `AmazonEC2`." }, - "v1SetCostGroupEventIndicatorResponse": { + "v1ReadCustomizedBillingServicesRequest": { "type": "object", "properties": { - "costGroupId": { - "type": "string" - }, - "eventIndicator": { - "$ref": "#/definitions/coverEventIndicator" + "fieldMask": { + "type": "string", + "description": "Optional. Get only the value that set fieldMask.\n\nsee more info: https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/field_mask.proto" } - } + }, + "description": "Request message for the Billing.ReadCustomizedBillingServices rpc." }, - "v1SetCustomizedBillingServiceBillingGroupRequest": { + "v1ReadInvoiceCostsRequest": { "type": "object", "properties": { - "groupId": { + "startTime": { "type": "string", - "description": "Required. billing internal id in billing group.", - "required": [ - "groupId" - ] + "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20240101`." }, - "vendor": { + "endTime": { "type": "string", - "description": "Required. At the moment, `aws`,`azure`,`gcp` is supported.", - "required": [ - "vendor" - ] + "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." }, - "setting": { - "type": "array", - "items": { - "$ref": "#/definitions/SetCustomizedBillingServiceBillingGroupRequestCustomizedBillingServiceBillingSetting" - }, - "description": "Required. customized billing service setting.", - "required": [ - "setting" - ] + "toCurrency": { + "type": "string", + "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." } }, - "description": "Request message for the Billing.SetCustomizedBillingServiceBillingGroup rpc.", - "required": [ - "groupId", - "vendor", - "setting" - ] + "description": "Request message for the ReadInvoiceCosts rpc." }, - "v1SetOrgFiscalMonthRequest": { + "v1ReadInvoiceGroupCostsRequest": { "type": "object", "properties": { - "fiscalMonth": { + "startTime": { "type": "string", - "title": "Required. Fiscal month. Valid inputs are: \"01 - 12\"" - } - } - }, - "v1SetOrgFiscalMonthResponse": { - "type": "object", - "properties": { - "fiscalMonth": { - "type": "string" + "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20240101`." + }, + "endTime": { + "type": "string", + "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + }, + "toCurrency": { + "type": "string", + "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." + }, + "limit": { + "type": "integer", + "format": "int32", + "description": "Optional. Number of acquisitions. default:10." } - } + }, + "description": "Request message for the ReadInvoiceGroupCosts rpc." }, - "v1SetOrgUpdateCurrencyRequest": { + "v1ReadInvoiceIdsResponse": { "type": "object", "properties": { - "updateCurrency": { + "id": { "type": "string", - "format": "int64", - "title": "Required. Day of the month. Valid inputs are: \"1 - 31\"" + "title": "The invoice id" } - } + }, + "description": "Response message for the ReadInvoiceIds rpc." }, - "v1SetOrgUpdateCurrencyResponse": { + "v1ReadInvoiceOverviewsRequest": { "type": "object", "properties": { - "updateCurrency": { + "startTime": { "type": "string", - "format": "int64" + "description": "Optional. The UTC date to start streaming data from. If not set, the first day of the current month will be used. Format: `yyyymmdd`. The oldest supported date is `20240101`." + }, + "endTime": { + "type": "string", + "description": "Optional. The UTC date to end the streaming data. If not set, current date will be used. Format: `yyyymmdd`." + }, + "toCurrency": { + "type": "string", + "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." } - } + }, + "description": "Request message for the ReadInvoiceOverviews rpc." }, - "v1SupportedService": { + "v1ReadTagCostsRequestAwsOptions": { "type": "object", "properties": { - "service": { + "tagId": { "type": "string", - "description": "AWS or Azure services only as of now." + "description": "Optional. If set, only return data for this tagId." }, - "regions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Array of regions supported for the specific service." + "groupByColumns": { + "type": "string", + "description": "Optional. A comma-separated list of columns to aggregate the data into. Valid values are `productCode`, `serviceCode`, `region`, `zone`, `usageType`, `instanceType`, `operation`, `invoiceId`, `description`, and `resourceId`. A special value of `none` is also supported, which means query by date or month per account only.\n\nFor example, if you only want the services and region data, you can set this field to `productCode,region`. Your input sequence doesn't matter (although the sequence above is recommended) as the actual sequence is already fixed in the return data (see the definition in https://github.com/alphauslabs/blueapi/blob/main/api/aws/cost.proto), which is generic to specific, top to bottom. Invalid values are discarded. Excluded columns will be empty." }, - "attributes": { + "groupByMonth": { + "type": "boolean", + "description": "Optional. If set to true, return data grouped by month within the date range. If you want data that is grouped per account per month, set this to `true`, then set `groupByColumns` to `none`. You can also use `groupByColumns` while setting this to true." + }, + "filters": { "type": "array", "items": { - "$ref": "#/definitions/v1Attribute" + "type": "object", + "$ref": "#/definitions/v1ReadCostsRequestAwsOptionsFilters" }, - "description": "Array of attributes that can be used as key-value pairs for filtering." + "description": "Optional. A list of filtering options. See [ReadCostsRequestAwsOptionsFilters] for more information on each filter item. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc." }, - "columns": { + "tagFilters": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/v1ReadTagCostsRequestAwsOptionsTagFilters" }, - "description": "Array of column names that can be used to specify what columns should `/{vendor}/pricing` return.\nFor usage information, visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetPricing." - } - } - }, - "v1Tags": { - "type": "object", - "properties": { - "key": { - "type": "string" + "description": "Optional. A list of filtering options specific for tags. Multiple filter items will use the logical 'or' operator, e.g. filter1 || filter2 || filter3, etc. Discarded when `groupByColumns` field is set or if `groupByMonth` is true." }, - "values": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1TagsAddingSetting": { - "type": "object", - "properties": { - "groupId": { - "type": "string" + "includeTags": { + "type": "boolean", + "description": "Optional. If set to true, stream will include resource tags. Discarded when `groupByColumns` field is set to `none`." }, - "customerId": { - "type": "string" + "includeCostCategories": { + "type": "boolean", + "description": "Optional. If set to true, stream will include resource cost category information. Discarded when `groupByColumns` field is set to `none`." }, - "tagKeys": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1TerminateResourceRequest": { - "type": "object", - "properties": { - "vendor": { + "toCurrency": { "type": "string", - "description": "Required. Cloud vendor." + "description": "Optional. Set to US dollars (USD) by default (AWS CUR's default currency). You can set it to the desired three-letter currency symbol (i.e. JPY, EUR, GBP), in which case, it will use the latest exchange rates provided by https://fixer.io. If you prefer a custom exchange rate, you can append the rate to the currency's three-letter symbol. For example, `JPY:110.622` for the Japanese Yen. Note that the exchange rate should be against the US dollar (USD)." }, - "accountId": { - "type": "string", - "description": "Required. Account Id." + "forceLatest": { + "type": "boolean", + "description": "Optional. If set to true, always get the up-to-date calculation results. This data isn't necessarily in-sync with your invoice data as AWS could still have updated your CUR files even after you created your invoices. By default, returned data are those that are always in-sync with your invoices.\n\nThis field is discarded for Wave(Pro) users. You will always get the latest data that is in-sync with your invoices." }, - "resourceId": { - "type": "string", - "description": "Required. The resource Id." + "noCache": { + "type": "boolean", + "description": "If true, force API to not use cached data." }, - "region": { - "type": "string", - "description": "Required. Resource region." + "tagIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If set, only return data list tags." } - }, - "title": "Request message for TerminateResource" + } }, - "v1TerminateResourceResponse": { + "v1ReadTagCostsRequestAwsOptionsTagFilters": { "type": "object", "properties": { - "accountId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "region": { - "type": "string" + "andFilters": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, - "title": "Response message for TerminateResource" + "description": "A map of \"key:value\" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either \"eq:\" (equal), \"re:\" (regular expressions based on https://github.com/google/re2), or \"!re:\" (reverse \"re:\"). No prefix is the same as \"eq:\". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 \u0026\u0026 mapfilter2 \u0026\u0026 mapfilter3, etc.\n\nFor example, if you want to query lineitems with the tag `project:MY_PROJECT`, set to `{\"project\":\"MY_PROJECT\"}`. You can also use regular expressions for tag values, such as `{\"name\":\"re:[A-Za-z0-9]*\"}`." }, - "v1ThirdProfitItemSection": { + "v1RegisterAccounts": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "The id." + "enabled": { + "type": "boolean", + "description": "Optional.\nIf enabled, any additional accounts will be automatically enrolled into the billing group.\nIf disabled, register the account manually.\n\nFor GCP, Register projectId under the specific Sub billing account.\nFor AWS, Register accountId under the specific payer account into the billing group" }, - "name": { + "accountId": { "type": "string", - "description": "The name." - }, - "profit": { - "type": "number", - "format": "double", - "description": "The profit cost." + "description": "Optional. AccountId to be used for registration into the billing group." } }, - "description": "ThirdProfitItemSection resource definition." + "title": "Register Accounts definition" }, - "v1TotalDetailSection": { + "v1RegisterDataAccessRequest": { "type": "object", "properties": { - "TrueUnblended": { - "type": "number", - "format": "double", - "description": "The true unblended cost." + "vendor": { + "type": "string", + "title": "Vendor (Azure/GCP)" }, - "sppDiscount": { - "type": "number", - "format": "double", - "description": "The spp discount cost." + "target": { + "type": "string", + "title": "Billing Id for GCP, Account Id for Azure" }, - "thirdProfitItem": { - "type": "number", - "format": "double", - "description": "The third profit item cost." + "accountType": { + "type": "string", + "title": "Account type (payer/linked)" + }, + "gcpOptions": { + "$ref": "#/definitions/coverGcpOptions", + "title": "GCP Options. Specific for GCP" + }, + "azureOptions": { + "$ref": "#/definitions/apicoverAzureOptions", + "title": "Azure Options. Specific for Azure" + }, + "awsOptions": { + "$ref": "#/definitions/apicoverAwsOptions", + "title": "Aws Options. Specific for Aws" } }, - "description": "TotalDetailSection resource definition." + "description": "Request message for Register Data Access. For azure and gcp." }, - "v1TotalSection": { + "v1RegisterNewUserRequest": { "type": "object", "properties": { - "id": { + "email": { "type": "string", - "description": "The id. id:TotalSection." + "title": "required email" }, - "name": { + "password": { "type": "string", - "description": "The name. name:TotalSection." + "title": "required password" }, - "currency": { + "name": { "type": "string", - "description": "The currency." + "title": "required user Name" }, - "yearMonth": { + "company": { "type": "string", - "title": "The year-month. format: yyyymm" - }, - "invoiceCost": { - "type": "number", - "format": "double", - "description": "The invoice cost." - }, - "procurementCost": { - "type": "number", - "format": "double", - "description": "The procurement cost." - }, - "profitCost": { - "type": "number", - "format": "double", - "description": "The profit cost." - }, - "totalDeital": { - "$ref": "#/definitions/v1TotalDetailSection", - "description": "The total detail." - }, - "thirdProfitItem": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ThirdProfitItemSection" - }, - "description": "The third profit item." + "title": "required company name" }, - "awsSection": { - "$ref": "#/definitions/v1VendorTotalSection", - "description": "The aws section." + "role": { + "type": "string", + "title": "required company role" }, - "azureSection": { - "$ref": "#/definitions/v1VendorTotalSection", - "description": "The azure section." + "amount": { + "type": "string", + "title": "optional company monthly cloud usage" }, - "gcpSection": { - "$ref": "#/definitions/v1VendorTotalSection", - "description": "The gcp section." + "intention": { + "type": "string", + "title": "optional intention" } }, - "description": "TotalSection resource definition." + "title": "Request message for RegisterNewUser" }, - "v1TransferOrganizationResponse": { + "v1RegisterNewUserResponse": { "type": "object", "properties": { - "target": { - "type": "string" + "isAuthorized": { + "type": "boolean" } } }, - "v1UndoExecutedRecommendationRequest": { + "v1RemoveCostGroupMemberResponse": { "type": "object", "properties": { - "id": { - "type": "array", - "items": { - "type": "string" - } + "costGroupId": { + "type": "string" + }, + "userId": { + "type": "string" } - } - }, - "v1UndoExecutedRecommendationResponse": { - "type": "object" + }, + "title": "Response message for RemoveCostGroupMember" }, - "v1UpdateAccessGroupRequest": { + "v1RemoveFavoriteRequest": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Required. access group id." - }, - "name": { - "type": "string", - "description": "Optional. access group name. Set only the name to be changed.\n\nWe recommend the name length of 1~60 characters." - }, - "description": { + "viewId": { "type": "string", - "description": "Optional. access group description. Set only the description to be changed.\n\nWe recommend the description length of 0~150 characters." - }, - "billingGroups": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. Billing group to be included in the access group.\n\nYou can only include billing groups with the same calculation type and currency type.\nSet only the billingGroups to be changed.\nSpecify the billingInternalIds. For example: [`billingInternalId1`,`billingInternalId2`,`billingInternalId3`]" + "description": "Required. View Id." } }, - "description": "Request message for the UpdateAccessGroup rpc." + "title": "Request message for RemoveFavorite" }, - "v1UpdateAccountBudgetAlertsRequest": { + "v1RemoveFavoriteResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "id": { - "type": "string", - "title": "Required. Account Id" - }, - "budgetAlert": { - "$ref": "#/definitions/apiwaveBudgetAlert", - "description": "Required. Budget alert setting.\n\nSet only the setting value to be changed.\nFor example, If you want to change only daily value, set `{\"budget\":[{\"id\":\"daily\",\"value\":100,\"enabled\":true}}` as a parameter\nThe same goes for notification. If you want to change only email value, set `{\"notification\":[{\"id\":\"email\",\"destination\":\"budgetalert-example@alphaus.cloud\",\"enabled\":true}}` as a parameter" + "viewId": { + "type": "string" } }, - "title": "Request message for UpdateAccountBudgetAlerts" + "title": "Response message for RemoveFavorite" }, - "v1UpdateAccountBudgetRequest": { + "v1RemoveSideMenuFavoriteResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "budgetId": { - "type": "string", - "title": "Required. Budget Id" - }, - "data": { - "$ref": "#/definitions/blueapiapiBudget" + "viewId": { + "type": "string" } }, - "title": "Request message for UpdateAccountBudget" + "title": "Response message for RemoveSideMenuFavorite" }, - "v1UpdateAccountInvoiceServiceDiscountsRequest": { + "v1ResetPasswordRequest": { "type": "object", "properties": { - "groupId": { + "userId": { "type": "string", - "description": "Required.\n\nFor Ripple, only billing internal ids are supported at the moment. You can set it to a single group\n\nImplied as the parent billing group for Wave(Pro) users." - }, - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/v1AccountServiceDiscounts" - }, - "description": "Required." + "description": "Required. UserId." } }, - "description": "Request message for the UpdateAccountInvoiceServiceDiscounts rpc." + "title": "Request message for ResetPassword" }, - "v1UpdateAccountInvoiceServiceDiscountsResponse": { + "v1ResetPasswordResponse": { "type": "object", "properties": { - "accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/v1AccountServiceDiscounts" - } + "userId": { + "type": "string" } }, - "description": "Response message for the UpdateAccountInvoiceServiceDiscounts rpc." + "title": "Response message for ResetPassword" }, - "v1UpdateAccountRequest": { + "v1ResetUserPasswordRequest": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required." - }, - "id": { - "type": "string", - "description": "Required." + "previousPassword": { + "type": "string" }, - "name": { - "type": "string", - "description": "Optional." + "newPassword": { + "type": "string" + } + }, + "title": "Request message for ResetUserPassword" + }, + "v1ResetUserPasswordResponse": { + "type": "object", + "properties": { + "userData": { + "$ref": "#/definitions/coverUserData" + } + }, + "title": "Response message for ResetUserPassword" + }, + "v1ResolveAWSMarketplaceTokenForOnboardingRequest": { + "type": "object", + "properties": { + "registrationToken": { + "type": "string" } - }, - "description": "Request message for the Cost.UpdateAccount rpc." + } }, - "v1UpdateAdjustmentConfigRequest": { + "v1ResolveAWSMarketplaceTokenForOnboardingResponse": { "type": "object", "properties": { - "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "isAllowedToOnboard": { + "type": "boolean" }, - "config": { - "type": "array", - "items": { - "$ref": "#/definitions/apiConfigFilters" - }, - "description": "Optional." + "customerId": { + "type": "string" + } + } + }, + "v1ResolveCostGroupCombinationsResponse": { + "type": "object", + "properties": { + "costGroupId": { + "type": "string" }, "accounts": { "type": "array", "items": { - "$ref": "#/definitions/apiManagementAccount" - }, - "description": "Optional." + "type": "object", + "$ref": "#/definitions/apicoverAccount" + } } - }, - "description": "Request message for the Billing.UpdateAdjustmentConfig rpc." + } }, - "v1UpdateAlertDetailsRequest": { + "v1Resource": { "type": "object", "properties": { - "id": { + "date": { "type": "string", - "description": "Required. Alert ID." + "title": "Format is `yyyy-mm`" }, - "name": { + "orgId": { "type": "string", - "description": "If optional fields are not supplied, no changes occur.\nOptional." - }, - "fixedAmount": { - "type": "number", - "format": "float", - "description": "Both are optional." - }, - "percentage": { - "type": "number", - "format": "float" + "title": "Organization ID" }, - "granularity": { + "vendor": { "type": "string", - "description": "Optional. daily or monthly. Only 'daily' is supported for now." + "description": "Only `aws` is supported for now." }, - "costGroups": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. Cost group IDs." + "account": { + "type": "string", + "title": "Resource owner account" }, - "channels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. Channel IDs." - } - }, - "title": "Request message for UpdateAlertDetails" - }, - "v1UpdateAlertDetailsResponse": { - "type": "object", - "properties": { - "alertData": { - "$ref": "#/definitions/coverAlertData" - } - }, - "title": "Response message for UpdateAlertDetails" - }, - "v1UpdateAnomalyAlertRequest": { - "type": "object", - "properties": { - "id": { + "service": { "type": "string", - "title": "required. Id" + "description": "Only `AmazonEC2` is supported for now." }, - "name": { + "resourceId": { "type": "string", - "title": "required. alert name" + "title": "Resource unique identifier" }, - "alertEnabled": { - "type": "boolean", - "description": "required." + "resourceType": { + "type": "string", + "title": "Only `AWS::EC2::Instance` is supported for now" }, - "notificationChannels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "required. Notification Channel Ids." + "cost": { + "type": "number", + "format": "double", + "description": "Cost incurred for the resource on specified month." }, - "frequency": { + "properties": { "type": "string", - "description": "required. Frequency." + "title": "Format: JSON String" }, - "costGroupId": { + "recommendation": { "type": "string", - "title": "required. cost group id" + "title": "Format: JSON String" } } }, - "v1UpdateBillingGroupInvoiceTemplateRequest": { + "v1ResourceAccount": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "Required. The billing internal ID", - "required": [ - "id" - ] + "payerId": { + "type": "string" }, - "invoiceTemplateId": { - "type": "string", - "title": "Required. The invoice template ID to associate with the billing group", - "required": [ - "invoiceTemplateId" - ] + "customerId": { + "type": "string" + }, + "registered": { + "type": "boolean" } - }, - "title": "Request a message to update/create a billing group's invoice template", - "required": [ - "id", - "invoiceTemplateId" - ] + } }, - "v1UpdateBudgetAlertsRequest": { + "v1RestoreAccountUsageRequest": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "Required. budget alert id" - }, - "vendor": { + "allocationId": { "type": "string", - "description": "Required. At the moment, only `aws` is supported." - }, - "accounts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. Lsit of accountId. For example, you set to [\"accountId1\",\"accountId2\",\"accountId3\"]." - }, - "notification": { - "$ref": "#/definitions/apiBudgetAlertNotification", - "description": "Required." - }, - "daily": { - "$ref": "#/definitions/apiDailyBudgetAlert", - "description": "Optional." - }, - "dailyRate": { - "$ref": "#/definitions/apiDailyRateIncreaseBudgetAlert", - "description": "Optional." - }, - "monthly": { - "$ref": "#/definitions/apiMonthlyBudgetAlert", - "description": "Optional." + "description": "Required. The account usage to restore." } }, - "description": "Request message for the UpdateBudgetAlerts rpc." + "description": "Request message for the RestoreAccountUsage rpc." }, - "v1UpdateBudgetRequest": { + "v1RestoreFeeRequest": { "type": "object", "properties": { - "id": { + "feeId": { "type": "string", - "description": "Required. Budget ID." - }, - "budgetData": { - "$ref": "#/definitions/coverBudgetData" - } - } - }, - "v1UpdateBudgetResponse": { - "type": "object", - "properties": { - "budgetData": { - "$ref": "#/definitions/coverBudgetData" + "description": "Required. The fee to restore." } - } + }, + "description": "Request message for the RestoreFee rpc." }, - "v1UpdateChannelDetailsRequest": { + "v1RestoreSavingsRequest": { "type": "object", "properties": { "id": { "type": "string", - "description": "Required. Channel ID." - }, - "name": { - "type": "string", - "title": "If optional fields are not supplied, no changes occur.\nOptional. Either actual email address or slack/msteams channel name" - }, - "type": { - "type": "string", - "description": "Optional. email, slack, or msteams." - }, - "webhookUrl": { - "type": "string", - "description": "Optional. Only needed for slack and msteams type." + "description": "Required. The item to restore." } }, - "title": "Request message for UpdateChannelDetails" + "description": "Request message for the RestoreSavings rpc." }, - "v1UpdateChannelDetailsResponse": { + "v1SaveNotificationSettingsRequest": { "type": "object", "properties": { - "channelData": { - "$ref": "#/definitions/coverChannelData" + "enabled": { + "type": "boolean", + "description": "Required. Enable or disable notifications globally." + }, + "defaultChannel": { + "type": "string", + "description": "Optional. If non-empty, set this notification channel id as the default channel." } }, - "title": "Response message for UpdateChannelDetails" + "description": "Request message for the Admin.SaveNotificationSettings rpc." }, - "v1UpdateCostFiltersRequest": { + "v1SavingsDetails": { "type": "object", "properties": { + "id": { + "type": "string" + }, + "orgId": { + "type": "string" + }, "vendor": { - "type": "string", - "description": "Required. At the moment, only `aws` is supported." + "type": "string" + }, + "account": { + "type": "string" + }, + "month": { + "type": "string" + }, + "type": { + "type": "string" + }, + "arn": { + "type": "string" + }, + "productCode": { + "type": "string" + }, + "offerClass": { + "type": "string" + }, + "ondemand": { + "type": "number", + "format": "double" + }, + "effectiveCost": { + "type": "number", + "format": "double" + }, + "savings": { + "type": "number", + "format": "double" }, - "filterId": { - "type": "string", - "description": "Required. Filter Id." + "splitStatus": { + "type": "string" }, - "filterName": { - "type": "string", - "title": "Required. Filter Name. Specify characters between 1 ~ 100" + "isAllocated": { + "type": "boolean" }, - "groupId": { - "type": "string", - "description": "Required. If set, reads the usage-based cost details of this group. Only valid for Ripple users. Implied as the parent billing group for Wave(Pro) users.\n\nFor AWS Ripple, only billing internal ids are supported at the moment. Overriden when `accountId` is set to anything other than `*`. Set this and `accountId` to `*` to read the usage-based cost details of the whole organization. Optional for AWS Wave(Pro)." + "isApplied": { + "type": "boolean" }, - "accountId": { - "type": "string", - "description": "Required. You can set it to a single account or a comma-separated list of accounts.\n\nFor AWS, setting this will override `groupId`. Set this and `groupId` to `*` to read the usage-based cost details of the whole organization." + "source": { + "type": "string" }, - "awsOptions": { - "$ref": "#/definitions/v1ReadCostsRequestAwsOptions", - "description": "Required. Valid only for the `aws` vendor. AWS-specific options." - } - }, - "description": "Request message for the UpdateCostFilters rpc." - }, - "v1UpdateCostFiltersResponse": { - "type": "object", - "properties": { - "filterId": { - "type": "string", - "description": "Required. Filter Id." + "lastUpdate": { + "type": "string" } }, - "description": "Response message for the UpdateCostFilters rpc." + "description": "Response message for ListSavings, RestoreSavings, SimulateSavings rpc." }, - "v1UpdateCostGroupColorThemeRequest": { + "v1Service": { "type": "object", "properties": { - "costGroupId": { + "serviceCode": { "type": "string", - "description": "Required. Cost Group Id." + "description": "The service code." }, - "colorTheme": { + "serviceName": { "type": "string", - "description": "Required. Color Theme." + "description": "The service name." } }, - "title": "Request message for UpdateCostGroupColorTheme" + "description": "Service resource definition.\nServices of each vendor available for Service Discounts." }, - "v1UpdateCostGroupColorThemeResponse": { + "v1ServiceDiscountsExport": { "type": "object", "properties": { - "colorTheme": { - "type": "string" + "data": { + "$ref": "#/definitions/v1ExportData", + "description": "content. Base64 encoded value.\nFor example, content :``\nDecoding this value, get ``.\n\ndownloadedRows. Downloaded content lines.\n\ntotalRows.Total of content lines.", + "title": "data is [blueapi.api.ripple.v1.ExportData]" } }, - "title": "Response message for UpdateCostGroupColorTheme" + "description": "ServiceDiscountsExport resource definition." }, - "v1UpdateCostGroupCombinationsRequest": { + "v1SetCostGroupAnomalyOptionsResponse": { "type": "object", "properties": { "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." + "type": "string" }, - "combinations": { - "$ref": "#/definitions/coverCombinations" - } - }, - "title": "Request message for UpdateCostGroupCombinations" - }, - "v1UpdateCostGroupCombinationsResponse": { - "type": "object", - "properties": { - "combinations": { - "$ref": "#/definitions/coverCombinations" - } - }, - "title": "Response message for UpdateCostGroupCombinations" - }, - "v1UpdateCostGroupCreationUIRequest": { - "type": "object", - "properties": { - "useNewCostGroupCreationUI": { - "type": "boolean" + "anomalyOptions": { + "$ref": "#/definitions/coverAnomalyOptions" } } }, - "v1UpdateCostGroupCreationUIResponse": { + "v1SetCostGroupEventIndicatorResponse": { "type": "object", "properties": { - "userData": { - "$ref": "#/definitions/coverUserData" + "costGroupId": { + "type": "string" + }, + "eventIndicator": { + "$ref": "#/definitions/coverEventIndicator" } } }, - "v1UpdateCostGroupDescriptionRequest": { + "v1SetOrgFiscalMonthRequest": { "type": "object", "properties": { - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." - }, - "description": { + "fiscalMonth": { "type": "string", - "description": "Required. Description." + "title": "Required. Fiscal month. Valid inputs are: \"01 - 12\"" } - }, - "title": "Request message for UpdateCostGroupDescription" + } }, - "v1UpdateCostGroupDescriptionResponse": { + "v1SetOrgFiscalMonthResponse": { "type": "object", "properties": { - "description": { + "fiscalMonth": { "type": "string" } - }, - "title": "Response message for UpdateCostGroupDescription" + } }, - "v1UpdateCostGroupIconRequest": { + "v1SetOrgUpdateCurrencyRequest": { "type": "object", "properties": { - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." - }, - "icon": { + "updateCurrency": { "type": "string", - "description": "Required. Icon." + "format": "int64", + "title": "Required. Day of the month. Valid inputs are: \"1 - 31\"" } - }, - "title": "Request message for UpdateCostGroupIcon" + } }, - "v1UpdateCostGroupIconResponse": { + "v1SetOrgUpdateCurrencyResponse": { "type": "object", "properties": { - "icon": { - "type": "string" + "updateCurrency": { + "type": "string", + "format": "int64" } - }, - "title": "Response message for UpdateCostGroupIcon" + } }, - "v1UpdateCostGroupImageRequest": { + "v1SupportedService": { "type": "object", "properties": { - "costGroupId": { + "service": { "type": "string", - "description": "Required. Cost Group Id." + "description": "AWS or Azure services only as of now." }, - "image": { - "type": "string", - "description": "Required. Image." + "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.\nFor usage information, visit https://labs.alphaus.cloud/blueapidocs/#/Pricing/Pricing_GetPricing." } - }, - "title": "Request message for UpdateCostGroupImage" + } }, - "v1UpdateCostGroupImageResponse": { + "v1Tags": { "type": "object", "properties": { - "image": { + "key": { "type": "string" - } - }, - "title": "Response message for UpdateCostGroupImage" - }, - "v1UpdateCostGroupNameRequest": { - "type": "object", - "properties": { - "costGroupId": { - "type": "string", - "description": "Required. Cost Group Id." }, - "name": { - "type": "string", - "description": "Required. Name." + "values": { + "type": "array", + "items": { + "type": "string" + } } - }, - "title": "Request message for UpdateCostGroupName" + } }, - "v1UpdateCostGroupNameResponse": { + "v1TagsAddingSetting": { "type": "object", "properties": { - "name": { + "groupId": { + "type": "string" + }, + "customerId": { "type": "string" + }, + "tagKeys": { + "type": "array", + "items": { + "type": "string" + } } - }, - "title": "Response message for UpdateCostGroupName" + } }, - "v1UpdateCustomFieldRequest": { + "v1TerminateResourceResponse": { "type": "object", "properties": { - "id": { + "accountId": { "type": "string" }, - "key": { + "resourceId": { "type": "string" }, - "description": { + "region": { "type": "string" } - } + }, + "title": "Response message for TerminateResource" }, - "v1UpdateCustomizedBillingServiceRequest": { + "v1ThirdProfitItemSection": { "type": "object", "properties": { "id": { "type": "string", - "title": "Required. [blueapi.api.ripple.CustomizedBillingService.id]", - "required": [ - "id" - ] - }, - "customizedBillingService": { - "$ref": "#/definitions/rippleCustomizedBillingService", - "description": "Required. The updated customized billing service object." + "description": "The id." }, - "updateMask": { + "name": { "type": "string", - "description": "Required. Indicates which fields in the provided CustomizedBillingService to update. Must be\nspecified and non-empty.", - "required": [ - "updateMask" - ] + "description": "The name." + }, + "profit": { + "type": "number", + "format": "double", + "description": "The profit cost." } }, - "description": "Request message for the Billing.UpdateCustomizedBillingService rpc.", - "required": [ - "id", - "updateMask" - ] + "description": "ThirdProfitItemSection resource definition." }, - "v1UpdateDataAccessRequest": { + "v1TotalDetailSection": { "type": "object", "properties": { - "target": { - "type": "string", - "title": "Billing Id for GCP, Account Id for Azure" - }, - "vendor": { - "type": "string", - "title": "GCP or Azure" - }, - "gcpOptions": { - "$ref": "#/definitions/coverGcpOptions", - "title": "GCP Options" - }, - "azureOptions": { - "$ref": "#/definitions/apicoverAzureOptions", - "title": "Azure Options" + "TrueUnblended": { + "type": "number", + "format": "double", + "description": "The true unblended cost." }, - "awsOptions": { - "$ref": "#/definitions/apicoverAwsOptions", - "title": "AWS Options" + "sppDiscount": { + "type": "number", + "format": "double", + "description": "The spp discount cost." }, - "accountType": { - "type": "string", - "title": "Account Type" + "thirdProfitItem": { + "type": "number", + "format": "double", + "description": "The third profit item cost." } }, - "title": "Request message for UpdateDataAccess (GCP/Azure)" + "description": "TotalDetailSection resource definition." }, - "v1UpdateDiscountExpirationAlertRequest": { + "v1TotalSection": { "type": "object", "properties": { "id": { "type": "string", - "title": "required. Id" + "description": "The id. id:TotalSection." }, - "alertEnabled": { - "type": "boolean", - "description": "required." + "name": { + "type": "string", + "description": "The name. name:TotalSection." }, - "channels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "required. Notification Channel Ids." + "currency": { + "type": "string", + "description": "The currency." }, - "frequencies": { - "type": "array", - "items": { - "type": "string", - "format": "int64" - }, - "description": "required. Frequencies." + "yearMonth": { + "type": "string", + "title": "The year-month. format: yyyymm" }, - "costGroups": { + "invoiceCost": { + "type": "number", + "format": "double", + "description": "The invoice cost." + }, + "procurementCost": { + "type": "number", + "format": "double", + "description": "The procurement cost." + }, + "profitCost": { + "type": "number", + "format": "double", + "description": "The profit cost." + }, + "totalDeital": { + "$ref": "#/definitions/v1TotalDetailSection", + "description": "The total detail." + }, + "thirdProfitItem": { "type": "array", "items": { - "type": "string" + "type": "object", + "$ref": "#/definitions/v1ThirdProfitItemSection" }, - "title": "Required. Cost Group Ids" + "description": "The third profit item." }, - "name": { - "type": "string", - "title": "required. Name" + "awsSection": { + "$ref": "#/definitions/v1VendorTotalSection", + "description": "The aws section." + }, + "azureSection": { + "$ref": "#/definitions/v1VendorTotalSection", + "description": "The azure section." + }, + "gcpSection": { + "$ref": "#/definitions/v1VendorTotalSection", + "description": "The gcp section." } - } + }, + "description": "TotalSection resource definition." }, - "v1UpdateFeatureFlagsRequest": { + "v1TransferOrganizationResponse": { "type": "object", "properties": { - "id": { + "target": { "type": "string" - }, - "featureFlags": { - "$ref": "#/definitions/apiFeatureFlags" } - }, - "description": "Request message for the Iam.UpdateFeatureFlags rpc." + } }, - "v1UpdateInvoicePreviewsRequest": { + "v1UndoExecutedRecommendationRequest": { "type": "object", "properties": { - "date": { - "type": "string", - "description": "Required. Month to get invoice. Format: `yyyymm`." - }, - "allGroups": { - "type": "boolean", - "description": "Optional. You can set all billing groups.\n\nIf this parameter is not set, The list set to `groups` is used." - }, - "groups": { + "id": { "type": "array", "items": { "type": "string" - }, - "title": "Optional. You can set it to a list of billing internal group id" - }, - "enabled": { - "type": "boolean", - "description": "Required. You can set display or hiding.\n\nIf true, Hiding Invoice. If false, Display Invoice." + } + } + } + }, + "v1UndoExecutedRecommendationResponse": { + "type": "object" + }, + "v1UpdateAccountInvoiceServiceDiscountsResponse": { + "type": "object", + "properties": { + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1AccountServiceDiscounts" + } } }, - "description": "Request message for the UpdateInvoicePreviews rpc." + "description": "Response message for the UpdateAccountInvoiceServiceDiscounts rpc." }, - "v1UpdateInvoiceServiceDiscountsRequest": { + "v1UpdateAlertDetailsResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "Required. [blueapi.api.ripple.v1.InvoiceServiceDiscounts.id]", - "required": [ - "id" - ] - }, - "invoiceServiceDiscounts": { - "$ref": "#/definitions/apiripplev1InvoiceServiceDiscounts", - "description": "Required. The updated invoice service discounts object." - }, - "updateMask": { - "type": "string", - "description": "Required. Indicates which fields in the provided InvoiceServiceDiscounts to update. Must be\nspecified and non-empty.", - "required": [ - "updateMask" - ] + "alertData": { + "$ref": "#/definitions/coverAlertData" } }, - "description": "Request message for the Billing.UpdateInvoiceServiceDiscounts rpc.", - "required": [ - "id", - "updateMask" - ] + "title": "Response message for UpdateAlertDetails" }, - "v1UpdateMSPDefaultMetaRequest": { + "v1UpdateBudgetResponse": { "type": "object", "properties": { - "mspId": { - "type": "string" - }, - "defaultMeta": { - "type": "array", - "items": { - "type": "string" - } + "budgetData": { + "$ref": "#/definitions/coverBudgetData" } } }, - "v1UpdateMemberPermissionRequest": { + "v1UpdateChannelDetailsResponse": { "type": "object", "properties": { - "userId": { - "type": "string", - "description": "Required. UserId." - }, - "isAdmin": { - "type": "boolean", - "description": "Required. IsAdmin." + "channelData": { + "$ref": "#/definitions/coverChannelData" } }, - "title": "Request message for UpdateMemberPermission" + "title": "Response message for UpdateChannelDetails" }, - "v1UpdateMemberPermissionResponse": { + "v1UpdateCostFiltersResponse": { "type": "object", "properties": { - "userData": { - "$ref": "#/definitions/coverUserData" + "filterId": { + "type": "string", + "description": "Required. Filter Id." } }, - "title": "Response message for UpdateMemberPermission" + "description": "Response message for the UpdateCostFilters rpc." }, - "v1UpdateMetadataRequest": { + "v1UpdateCostGroupColorThemeResponse": { "type": "object", "properties": { - "key": { - "type": "string" - }, - "value": { + "colorTheme": { "type": "string" } }, - "description": "Request message for the Organization.UpdateMetadata rpc." + "title": "Response message for UpdateCostGroupColorTheme" }, - "v1UpdateNotificationChannelRequest": { + "v1UpdateCostGroupCombinationsResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Required. ID of the notification channel to update." - }, - "name": { - "type": "string", - "description": "Required. Name of the notification channel." - }, - "type": { - "type": "string", - "description": "Required. Valid values: `email`, `slack`, `msteams`." - }, - "email": { - "$ref": "#/definitions/apiEmailChannel", - "description": "Required if type = `email`." - }, - "slack": { - "$ref": "#/definitions/apiSlackChannel", - "description": "Required if type = `slack`." - }, - "msteams": { - "$ref": "#/definitions/apiMSTeamsChannel", - "description": "Required if type = `msteams`." - }, - "product": { - "type": "string", - "description": "Optional. For Octo use only: `octo`." + "combinations": { + "$ref": "#/definitions/coverCombinations" } }, - "description": "Request message for the Admin.UpdateNotificationChannel rpc." + "title": "Response message for UpdateCostGroupCombinations" }, - "v1UpdateNotificationRequest": { + "v1UpdateCostGroupCreationUIRequest": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "Required" - }, - "channels": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Required" - }, - "enabled": { - "type": "boolean", - "title": "Required" - }, - "notificationType": { - "type": "string", - "description": "Required\nValid values:\n`InvoiceCalculationStarted`,\n`InvoiceCalculationFinished`,\n`CurUpdatedAfterInvoice`.\n`AccountBudgetAlert`." - }, - "account": { - "$ref": "#/definitions/adminv1NotificationAccount", - "description": "Optional. only available Wave(Pro)." + "useNewCostGroupCreationUI": { + "type": "boolean" + } + } + }, + "v1UpdateCostGroupCreationUIResponse": { + "type": "object", + "properties": { + "userData": { + "$ref": "#/definitions/coverUserData" + } + } + }, + "v1UpdateCostGroupDescriptionResponse": { + "type": "object", + "properties": { + "description": { + "type": "string" } }, - "description": "Request message for the Admin.UpdateNotificationTypeChannels rpc." + "title": "Response message for UpdateCostGroupDescription" }, - "v1UpdatePasswordRequest": { + "v1UpdateCostGroupIconResponse": { "type": "object", "properties": { - "oldPassword": { - "type": "string" - }, - "newPassword": { + "icon": { "type": "string" } }, - "description": "Request message for the Organization.UpdatePassword rpc." + "title": "Response message for UpdateCostGroupIcon" }, - "v1UpdateResellerRequest": { + "v1UpdateCostGroupImageResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Required. reseller id.", - "required": [ - "id" - ] - }, - "email": { - "type": "string", - "description": "Optional." - }, - "password": { - "type": "string", - "description": "Optional.\n\nWe recommend a password length of 8~32 characters. If you send 0 characters, a password will be generated automatically." - }, - "waveConfig": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleResellerConfig" - }, - "description": "Set only the config to be changed.\nFor example, If you want to change only dashboardGraph, set `{\"waveConfig\": [{\"key\": \"dashboardGraph\",\"value\": true}]}` as a parameter", - "title": "Optional. wave feature config" - }, - "aquaConfig": { - "type": "array", - "items": { - "$ref": "#/definitions/rippleResellerConfig" - }, - "description": "Set only the config to be changed.\nFor example, If you want to change only aqRiManagement, set `{\"waveConfig\": [{\"key\": \"aqRiManagement\",\"value\": true}]}` as a parameter", - "title": "Optional. aqua feature config" - }, - "notification": { - "type": "boolean", - "description": "Optional.\n\nIf valid when email or password is updated, you will be notified via email address.\nIf only waveConfig or aquaConfig is changed, it is ignored." - }, - "updateMask": { - "type": "string", - "description": "Required.", - "required": [ - "updateMask" - ] + "image": { + "type": "string" } }, - "description": "Request message for the UpdateReseller rpc.", - "required": [ - "id", - "updateMask" - ] + "title": "Response message for UpdateCostGroupImage" }, - "v1UpdateRoleRequest": { + "v1UpdateCostGroupNameResponse": { "type": "object", "properties": { - "namespace": { - "type": "string", - "description": "Required. The new namespace." - }, "name": { - "type": "string", - "description": "Required. The role name to update." - }, - "newName": { - "type": "string", - "description": "Optional. If set, update the current name to this." - }, - "permissions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required. The list of permissions to attach to this role." + "type": "string" } }, - "description": "Request message for the Iam.UpdateRole rpc." + "title": "Response message for UpdateCostGroupName" }, - "v1UpdateSideMenuStateRequest": { + "v1UpdateMSPDefaultMetaRequest": { "type": "object", "properties": { - "viewId": { - "type": "string", - "description": "Required. View Id." + "mspId": { + "type": "string" }, - "sidemenustate": { + "defaultMeta": { "type": "array", "items": { - "$ref": "#/definitions/coverSideMenuState" + "type": "string" } } + } + }, + "v1UpdateMemberPermissionResponse": { + "type": "object", + "properties": { + "userData": { + "$ref": "#/definitions/coverUserData" + } }, - "title": "Request message for UpdateSideMenuState" + "title": "Response message for UpdateMemberPermission" }, - "v1UpdateSideMenuStateResponse": { + "v1UpdateMetadataRequest": { "type": "object", "properties": { - "viewId": { + "key": { + "type": "string" + }, + "value": { "type": "string" } }, - "title": "Response message for UpdateSideMenuState" + "description": "Request message for the Organization.UpdateMetadata rpc." }, - "v1UpdateTagsAddingSettingRequest": { + "v1UpdatePasswordRequest": { "type": "object", "properties": { - "vendor": { + "oldPassword": { "type": "string" }, - "groupId": { + "newPassword": { "type": "string" - }, - "items": { - "type": "array", - "items": { - "$ref": "#/definitions/v1TagsAddingSetting" - } } }, - "title": "BillingGroup tags adding setting" + "description": "Request message for the Organization.UpdatePassword rpc." }, - "v1UpdateUnitTypeRequest": { + "v1UpdateSideMenuStateResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "Required. Unit Type Id" - }, - "unitName": { - "type": "string", - "title": "Optional" - }, - "unitItems": { - "type": "array", - "items": { - "$ref": "#/definitions/coverUnitItem" - }, - "title": "Optional" - }, - "description": { - "type": "string", - "title": "Optional" + "viewId": { + "type": "string" } - } + }, + "title": "Response message for UpdateSideMenuState" }, "v1UpdateUnitTypeResponse": { "type": "object", @@ -30269,37 +30336,6 @@ }, "title": "Response message for UpdateUserName" }, - "v1UpdateUserProfileRequest": { - "type": "object", - "properties": { - "email": { - "type": "string", - "title": "required email" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "usage": { - "type": "string" - }, - "intention": { - "type": "string" - }, - "companyName": { - "type": "string" - }, - "linkSource": { - "type": "string" - }, - "hasSubscribedUpdates": { - "type": "boolean" - } - }, - "title": "Request message for UpdateUserProfile" - }, "v1UpdateUserProfileResponse": { "type": "object", "properties": { @@ -30339,6 +30375,7 @@ "roles": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/v1MapRole" }, "description": "Required. The roles to map to the user. Limited to 5 items. Setting `role` to empty will remove the mapping." @@ -30391,18 +30428,6 @@ }, "title": "Response message for UpdateUserTimezone" }, - "v1UpdateViewColorThemeRequest": { - "type": "object", - "properties": { - "viewId": { - "type": "string" - }, - "colorTheme": { - "type": "string" - } - }, - "title": "Request message for UpdateViewColorTheme" - }, "v1UpdateViewColorThemeResponse": { "type": "object", "properties": { @@ -30412,18 +30437,6 @@ }, "title": "Response message for UpdateViewColorTheme" }, - "v1UpdateViewCurrencyRequest": { - "type": "object", - "properties": { - "viewId": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "title": "Request message for UpdateViewCurrency" - }, "v1UpdateViewCurrencyResponse": { "type": "object", "properties": { @@ -30433,62 +30446,19 @@ }, "title": "Response message for UpdateViewCurrency" }, - "v1UpdateViewLayoutRequest": { - "type": "object", - "properties": { - "viewId": { - "type": "string", - "description": "Required. View Id." - }, - "layout": { - "type": "array", - "items": { - "$ref": "#/definitions/coverWidgetData" - } - } - }, - "title": "Request message for UpdateViewLayout" - }, "v1UpdateViewLayoutResponse": { "type": "object", "properties": { "layout": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/coverViewLayout" } } }, "title": "Response message for UpdateViewLayout" }, - "v1UpdateViewRequest": { - "type": "object", - "properties": { - "viewId": { - "type": "string", - "description": "Required. View Id." - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "isEditable": { - "type": "boolean" - }, - "colorTheme": { - "type": "string" - } - }, - "title": "Request message for UpdateView" - }, "v1UpdateViewResponse": { "type": "object", "properties": { @@ -30498,29 +30468,6 @@ }, "title": "Response message for UpdateView" }, - "v1UpdateViewWidgetRequest": { - "type": "object", - "properties": { - "viewId": { - "type": "string", - "description": "Required. View Id." - }, - "widgetId": { - "type": "string", - "description": "Required. Widget Id." - }, - "options": { - "type": "object" - }, - "requests": { - "type": "array", - "items": { - "$ref": "#/definitions/coverLayoutRequests" - } - } - }, - "title": "Request message for UpdateViewWidget" - }, "v1UpdateViewWidgetResponse": { "type": "object", "properties": { @@ -30542,6 +30489,7 @@ "featureSetting": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/v1FeatureSetting" } } @@ -30552,15 +30500,18 @@ "properties": { "name": { "type": "string", + "description": "file name", "title": "Required. File name" }, "type": { "type": "string", + "description": "file type", "title": "Required. File type" }, "file": { "type": "string", "format": "byte", + "description": "file in bytes", "title": "Required. Convert file into bytes to transfer file" } }, @@ -30718,6 +30669,7 @@ "thirdProfitItem": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/v1ThirdProfitItemSection" }, "description": "The yhird profit item." @@ -30766,6 +30718,7 @@ "children": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/v1WaveFeature" } }