metrics beta.md

Metrics (Beta)

Organization-level metrics and overview

Get organization overview

Returns a high-level overview of the organization's commitment performance including savings, coverage, utilization, missed savings opportunities, automation status, and prioritized recommended actions.

{"openapi":"3.0.2","info":{"title":"Archera.ai Beta API","version":"v1.0.0"},"tags":[{"name":"Metrics (Beta)","description":"Organization-level metrics and overview"}],"paths":{"/beta/v1/org/{org_id}/metrics/overview":{"get":{"parameters":[{"in":"query","name":"provider","description":"Cloud provider (aws, azure, gcp)","schema":{"type":"string","enum":["aws","azure","gcp"]},"required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Overview"}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"405":{"description":"Method not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"422":{"$ref":"#/components/responses/UNPROCESSABLE_CONTENT"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"default":{"$ref":"#/components/responses/DEFAULT_ERROR"}},"tags":["Metrics (Beta)"],"summary":"Get organization overview","description":"Returns a high-level overview of the organization's commitment performance including savings, coverage, utilization, missed savings opportunities, automation status, and prioritized recommended actions."}}},"components":{"schemas":{"Overview":{"type":"object","properties":{"monthly_net_savings":{"type":"number","description":"Current monthly net savings rate from active commitments"},"expiring_monthly_savings":{"type":"number","description":"Monthly savings at risk from commitments expiring in the next 30 days"},"coverage":{"type":"number","description":"Overall spend-based commitment coverage ratio (0-1): share of reservable on-demand-equivalent spend covered, not the share of hours or usage units.","nullable":true},"utilization":{"type":"number","description":"Overall commitment utilization ratio (0-1)","nullable":true},"purchase_missed_savings":{"type":"number","description":"Monthly savings available by applying the recommended commitment plan. 0 if a plan has already been applied."},"buyback_missed_savings":{"type":"number","description":"Monthly savings available from pending buyback opportunities"},"purchase_automation_enabled":{"type":"boolean","description":"Whether automatic commitment purchasing is enabled"},"buyback_automation_enabled":{"type":"boolean","description":"Whether automatic buyback/sellback is enabled"},"has_actioned_plan":{"type":"boolean","description":"Whether the organization has ever applied a commitment plan"},"data_available_since":{"type":"string","format":"date","description":"Earliest date cost data is available for this provider (null if no data)","nullable":true},"recommended_actions":{"type":"array","description":"Prioritized list of recommended actions to improve savings","items":{"$ref":"#/components/schemas/RecommendedAction"}}},"additionalProperties":false},"RecommendedAction":{"type":"object","properties":{"action":{"type":"string","description":"Action identifier (e.g. 'apply_recommended_plan')"},"description":{"type":"string","description":"Human-readable description of the recommended action"},"monthly_impact":{"type":"number","description":"Estimated monthly savings impact if action is taken","nullable":true},"priority":{"type":"string","description":"Priority level: 'high', 'medium', or 'low'"}},"additionalProperties":false},"ApiErrorResponse":{"type":"object","properties":{"message":{"type":"string"},"detail":{"nullable":true},"code":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"timestamp":{"type":"string"},"type":{"type":"string"}},"required":["message","timestamp","type"]},"Error":{"type":"object","properties":{"code":{"type":"integer","description":"Error code"},"status":{"type":"string","description":"Error name"},"message":{"type":"string","description":"Error message"},"errors":{"type":"object","description":"Errors","additionalProperties":{}}},"additionalProperties":false}}},"responses":{"UNPROCESSABLE_CONTENT":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"DEFAULT_ERROR":{"description":"Default error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}

Get daily coverage

Returns spend-based commitment coverage over the requested date range, weighted by each day's reservable on-demand-equivalent spend, plus per-day values for trend analysis. Coverage is not weighted by hours or usage units.

{"openapi":"3.0.2","info":{"title":"Archera.ai Beta API","version":"v1.0.0"},"tags":[{"name":"Metrics (Beta)","description":"Organization-level metrics and overview"}],"paths":{"/beta/v1/org/{org_id}/metrics/daily-coverage":{"get":{"parameters":[{"in":"query","name":"provider","description":"Cloud provider (aws, azure, gcp)","schema":{"type":"string","enum":["aws","azure","gcp"]},"required":true},{"in":"query","name":"segment_id","description":"Optional segment ID to scope results. Defaults to the provider resources segment if not specified.","schema":{"type":"string","format":"uuid","default":null,"nullable":true},"required":false},{"in":"query","name":"start_date","description":"Start date (YYYY-MM-DD)","schema":{"type":"string","format":"date"},"required":true},{"in":"query","name":"end_date","description":"End date (YYYY-MM-DD, exclusive)","schema":{"type":"string","format":"date"},"required":true},{"in":"query","name":"group_by","description":"Dimension to group daily metrics by: 'service', 'account', or 'region'. If omitted, `groups` is null and the top-level response is the overall total.","schema":{"default":null,"type":"string","enum":["service","account","region",null],"nullable":true},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailyCoverageResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"405":{"description":"Method not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"$ref":"#/components/responses/UNPROCESSABLE_CONTENT"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"default":{"$ref":"#/components/responses/DEFAULT_ERROR"}},"tags":["Metrics (Beta)"],"summary":"Get daily coverage","description":"Returns spend-based commitment coverage over the requested date range, weighted by each day's reservable on-demand-equivalent spend, plus per-day values for trend analysis. Coverage is not weighted by hours or usage units."}}},"components":{"schemas":{"DailyCoverageResponse":{"type":"object","properties":{"period_start":{"type":"string","description":"Effective start date of the returned data (YYYY-MM-DD). May be later than the requested start_date if the range was clamped to available data."},"period_end":{"type":"string","description":"Effective end date of the returned data, exclusive (YYYY-MM-DD). May be earlier than the requested end_date if the range was clamped to available data (e.g. cloud-provider cost-data lag)."},"coverage":{"type":"number","description":"Spend-based commitment coverage across the effective date range (0-1): the share of reservable on-demand-equivalent spend covered by commitments, weighted by each day's spend rather than hours or usage units.","nullable":true},"daily":{"type":"array","description":"Per-day data points for trend analysis.","items":{"$ref":"#/components/schemas/DailyCoveragePoint"}},"groups":{"type":"array","description":"Grouped coverage series. Null when group_by is omitted; otherwise one entry per service, account, or region. Empty when group_by is set but no groups match.","items":{"$ref":"#/components/schemas/DailyCoverageGroup"},"nullable":true}},"additionalProperties":false},"DailyCoveragePoint":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Date of data point"},"coverage":{"type":"number","description":"Spend-based commitment coverage for this day (0-1)."}},"additionalProperties":false},"DailyCoverageGroup":{"type":"object","properties":{"name":{"type":"string","description":"Group name (service name, account ID, or region)."},"coverage":{"type":"number","description":"Spend-based commitment coverage for this group across the range (0-1), weighted by each day's reservable on-demand-equivalent spend.","nullable":true},"daily":{"type":"array","description":"Per-day coverage values for this group.","items":{"$ref":"#/components/schemas/DailyCoveragePoint"}}},"additionalProperties":false},"ApiErrorResponse":{"type":"object","properties":{"message":{"type":"string"},"detail":{"nullable":true},"code":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"timestamp":{"type":"string"},"type":{"type":"string"}},"required":["message","timestamp","type"]},"Error":{"type":"object","properties":{"code":{"type":"integer","description":"Error code"},"status":{"type":"string","description":"Error name"},"message":{"type":"string","description":"Error message"},"errors":{"type":"object","description":"Errors","additionalProperties":{}}},"additionalProperties":false}}},"responses":{"UNPROCESSABLE_CONTENT":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"DEFAULT_ERROR":{"description":"Default error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}

Get daily savings

Returns daily commitment savings with cost and savings grouped, plus period-level totals.

{"openapi":"3.0.2","info":{"title":"Archera.ai Beta API","version":"v1.0.0"},"tags":[{"name":"Metrics (Beta)","description":"Organization-level metrics and overview"}],"paths":{"/beta/v1/org/{org_id}/metrics/daily-savings":{"get":{"parameters":[{"in":"query","name":"provider","description":"Cloud provider (aws, azure, gcp)","schema":{"type":"string","enum":["aws","azure","gcp"]},"required":true},{"in":"query","name":"segment_id","description":"Optional segment ID to scope results. Defaults to the provider resources segment if not specified.","schema":{"type":"string","format":"uuid","default":null,"nullable":true},"required":false},{"in":"query","name":"start_date","description":"Start date (YYYY-MM-DD)","schema":{"type":"string","format":"date"},"required":true},{"in":"query","name":"end_date","description":"End date (YYYY-MM-DD, exclusive)","schema":{"type":"string","format":"date"},"required":true},{"in":"query","name":"group_by","description":"Dimension to group daily metrics by: 'service', 'account', or 'region'. If omitted, `groups` is null and the top-level response is the overall total.","schema":{"default":null,"type":"string","enum":["service","account","region",null],"nullable":true},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailySavingsResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"405":{"description":"Method not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"$ref":"#/components/responses/UNPROCESSABLE_CONTENT"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"default":{"$ref":"#/components/responses/DEFAULT_ERROR"}},"tags":["Metrics (Beta)"],"summary":"Get daily savings","description":"Returns daily commitment savings with cost and savings grouped, plus period-level totals."}}},"components":{"schemas":{"DailySavingsResponse":{"type":"object","properties":{"period_start":{"type":"string","description":"Effective start date of the returned data (YYYY-MM-DD). May be later than the requested start_date if the range was clamped to available data."},"period_end":{"type":"string","description":"Effective end date of the returned data, exclusive (YYYY-MM-DD). May be earlier than the requested end_date if the range was clamped to available data (e.g. cloud-provider cost-data lag)."},"commitment_financials_period_total":{"description":"Sum of commitment economics across the effective date range.","allOf":[{"$ref":"#/components/schemas/CommitmentFinancialsNoRebate"}]},"daily":{"type":"array","description":"Per-day data points for trend analysis.","items":{"$ref":"#/components/schemas/DailySavingsPoint"}},"groups":{"type":"array","description":"Grouped savings series. Null when group_by is omitted; otherwise one entry per service, account, or region. Empty when group_by is set but no groups match.","items":{"$ref":"#/components/schemas/DailySavingsGroup"},"nullable":true}},"additionalProperties":false},"CommitmentFinancialsNoRebate":{"type":"object","properties":{"commitment_cost":{"$ref":"#/components/schemas/CommitmentCost"},"commitment_savings":{"$ref":"#/components/schemas/CommitmentSavings_Exclude_Rebate"},"covered_ondemand_cost":{"type":"number","description":"On-demand cost of usage covered by commitments — baseline for savings. NOT a cost paid by the user. Equals commitment_cost.breakdown.cloud_provider_cost.total + commitment_savings.gross."}},"additionalProperties":false},"CommitmentCost":{"type":"object","properties":{"total":{"type":"number","description":"Total paid (cloud_provider_cost.total + archera_premium). Headline 'cost'."},"breakdown":{"$ref":"#/components/schemas/CommitmentCostBreakdown"}},"additionalProperties":false},"CommitmentCostBreakdown":{"type":"object","properties":{"cloud_provider_cost":{"$ref":"#/components/schemas/CloudProviderCost"},"archera_premium":{"type":"number","description":"Archera premium — paid to Archera, equal to a portion of the savings Archera generates for this commitment (fee_rate * gross savings, only charged when gross > 0). Already included in commitment_cost.total (don't add on top). Because premium is only a fraction of gross, whenever archera_premium > 0 the commitment is net-positive after the fee. Native (non-Archera) commitments have premium = 0 and offer no such guarantee; an underutilized guaranteed commitment pre-lockin can also show net < 0 (the rebate that covers this kicks in post-lockin)."}},"additionalProperties":false},"CloudProviderCost":{"type":"object","properties":{"total":{"type":"number","description":"Amortized cost paid to the cloud provider. Sums with archera_premium to reach cost.total."},"breakdown":{"description":"Optional. Additive payment-cadence decomposition of total (recurring + amortized_upfront). Present only when purchase-term structure is known (individual commitment or plan).","allOf":[{"$ref":"#/components/schemas/CloudProviderCostBreakdown"}]}},"additionalProperties":false},"CloudProviderCostBreakdown":{"type":"object","properties":{"recurring":{"type":"number","description":"Recurring monthly payment to the cloud provider."},"amortized_upfront":{"type":"number","description":"Monthly share of the upfront payment, amortized over the term."}},"additionalProperties":false},"CommitmentSavings_Exclude_Rebate":{"type":"object","properties":{"net":{"type":"number","description":"Net savings after Archera premium, including any rebate. Actual bill reduction. Headline 'savings'."},"gross":{"type":"number","description":"Savings before Archera premium. Equals covered_ondemand_cost - commitment_cost.breakdown.cloud_provider_cost.total."}},"additionalProperties":false},"DailySavingsPoint":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Date of data point"},"commitment_financials_daily_total":{"description":"Sum of commitment economics for this single day.","allOf":[{"$ref":"#/components/schemas/CommitmentFinancialsNoRebate"}]}},"additionalProperties":false},"DailySavingsGroup":{"type":"object","properties":{"name":{"type":"string","description":"Group name (service name, account ID, or region)."},"commitment_financials_period_total":{"description":"Sum of commitment economics for this group over the range.","allOf":[{"$ref":"#/components/schemas/CommitmentFinancialsNoRebate"}]},"daily":{"type":"array","description":"Per-day savings values for this group.","items":{"$ref":"#/components/schemas/DailySavingsPoint"}}},"additionalProperties":false},"ApiErrorResponse":{"type":"object","properties":{"message":{"type":"string"},"detail":{"nullable":true},"code":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"timestamp":{"type":"string"},"type":{"type":"string"}},"required":["message","timestamp","type"]},"Error":{"type":"object","properties":{"code":{"type":"integer","description":"Error code"},"status":{"type":"string","description":"Error name"},"message":{"type":"string","description":"Error message"},"errors":{"type":"object","description":"Errors","additionalProperties":{}}},"additionalProperties":false}}},"responses":{"UNPROCESSABLE_CONTENT":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$Ref":"#/components/schemas/Error"}}}},"DEFAULT_ERROR":{"description":"Default error response","content":{"application/json":{"schema":{"$Ref":"#/components/schemas/Error"}}}}}}}

Get daily reservable cost breakdown

Returns daily cost for reservable services over the date range, split by pricing type (uncovered, commitment-covered). The commitment bucket is further split into cloud_provider_cost + archera_premium. Includes period-level totals and total savings vs on-demand baseline.

{"openapi":"3.0.2","info":{"title":"Archera.ai Beta API","version":"v1.0.0"},"tags":[{"name":"Metrics (Beta)","description":"Organization-level metrics and overview"}],"paths":{"/beta/v1/org/{org_id}/metrics/daily-reservable-cost":{"get":{"parameters":[{"in":"query","name":"provider","description":"Cloud provider (aws, azure, gcp)","schema":{"type":"string","enum":["aws","azure","gcp"]},"required":true},{"in":"query","name":"segment_id","description":"Optional segment ID to scope results. Defaults to the provider resources segment if not specified.","schema":{"type":"string","format":"uuid","default":null,"nullable":true},"required":false},{"in":"query","name":"start_date","description":"Start date (YYYY-MM-DD)","schema":{"type":"string","format":"date"},"required":true},{"in":"query","name":"end_date","description":"End date (YYYY-MM-DD, exclusive)","schema":{"type":"string","format":"date"},"required":true},{"in":"query","name":"group_by","description":"Dimension to group daily metrics by: 'service', 'account', or 'region'. If omitted, `groups` is null and the top-level response is the overall total.","schema":{"default":null,"type":"string","enum":["service","account","region",null],"nullable":true},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailyReservableCostResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"405":{"description":"Method not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"$ref":"#/components/responses/UNPROCESSABLE_CONTENT"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"default":{"$ref":"#/components/responses/DEFAULT_ERROR"}},"tags":["Metrics (Beta)"],"summary":"Get daily reservable cost breakdown","description":"Returns daily cost for reservable services over the date range, split by pricing type (uncovered, commitment-covered). The commitment bucket is further split into cloud_provider_cost + archera_premium. Includes period-level totals and total savings vs on-demand baseline."}}},"components":{"schemas":{"DailyReservableCostResponse":{"type":"object","properties":{"period_start":{"type":"string","description":"Effective start date of the returned data (YYYY-MM-DD). May be later than the requested start_date if the range was clamped to available data."},"period_end":{"type":"string","description":"Effective end date of the returned data, exclusive (YYYY-MM-DD). May be earlier than the requested end_date if the range was clamped to available data (e.g. cloud-provider cost-data lag)."},"total_cost":{"type":"number","description":"Total paid for reservable services over the effective date range."},"if_all_ondemand_cost":{"type":"number","description":"On-demand baseline: what the range would cost at on-demand prices."},"total_savings":{"type":"number","description":"Total savings across all discount types (if_all_ondemand_cost - total_cost)."},"by_pricing_type":{"$ref":"#/components/schemas/PricingTypeBreakdown"},"daily":{"type":"array","description":"Per-day data points for trend analysis.","items":{"$ref":"#/components/schemas/DailyReservableCostPoint"}},"groups":{"type":"array","description":"Grouped reservable-cost series. Null when group_by is omitted; otherwise one entry per service, account, or region. Empty when group_by is set but no groups match.","items":{"$ref":"#/components/schemas/DailyReservableCostGroup"},"nullable":true}},"additionalProperties":false},"PricingTypeBreakdown":{"type":"object","properties":{"ondemand_cost":{"type":"number","description":"Cost from uncovered usage."},"commitment_cost":{"description":"Total cost from commitment-covered usage, with breakdown into cloud provider portion and Archera premium.","allOf":[{"$ref":"#/components/schemas/CommitmentCost"}]}},"additionalProperties":false},"CommitmentCost":{"type":"object","properties":{"total":{"type":"number","description":"Total paid (cloud_provider_cost.total + archera_premium). Headline 'cost'."},"breakdown":{"$ref":"#/components/schemas/CommitmentCostBreakdown"}},"additionalProperties":false},"CommitmentCostBreakdown":{"type":"object","properties":{"cloud_provider_cost":{"$ref":"#/components/schemas/CloudProviderCost"},"archera_premium":{"type":"number","description":"Archera premium — paid to Archera, equal to a portion of the savings Archera generates for this commitment (fee_rate * gross savings, only charged when gross > 0). Already included in commitment_cost.total (don't add on top). Because premium is only a fraction of gross, whenever archera_premium > 0 the commitment is net-positive after the fee. Native (non-Archera) commitments have premium = 0 and offer no such guarantee; an underutilized guaranteed commitment pre-lockin can also show net < 0 (the rebate that covers this kicks in post-lockin)."}},"additionalProperties":false},"CloudProviderCost":{"type":"object","properties":{"total":{"type":"number","description":"Amortized cost paid to the cloud provider. Sums with archera_premium to reach cost.total."},"breakdown":{"description":"Optional. Additive payment-cadence decomposition of total (recurring + amortized_upfront). Present only when purchase-term structure is known (individual commitment or plan).","allOf":[{"$ref":"#/components/schemas/CloudProviderCostBreakdown"}]}},"additionalProperties":false},"CloudProviderCostBreakdown":{"type":"object","properties":{"recurring":{"type":"number","description":"Recurring monthly payment to the cloud provider."},"amortized_upfront":{"type":"number","description":"Monthly share of the upfront payment, amortized over the term."}},"additionalProperties":false},"DailyReservableCostPoint":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Date of data point"},"total_cost":{"type":"number","description":"Total paid for reservable services this day across uncovered and commitment-covered pricing (ondemand_cost + commitment_cost.total). Headline 'cost'."},"if_all_ondemand_cost":{"type":"number","description":"What total_cost would be if all reservable usage ran at on-demand prices. Baseline for total savings across all discount types."},"by_pricing_type":{"$ref":"#/components/schemas/PricingTypeBreakdown"}},"additionalProperties":false},"DailyReservableCostGroup":{"type":"object","properties":{"name":{"type":"string","description":"Group name (service name, account ID, or region)."},"total_cost":{"type":"number","description":"Total paid for reservable services in this group."},"if_all_ondemand_cost":{"type":"number","description":"On-demand baseline for this group's reservable services."},"total_savings":{"type":"number","description":"Total savings for this group across all discount types (if_all_ondemand_cost - total_cost)."},"by_pricing_type":{"$ref":"#/components/schemas/PricingTypeBreakdown"},"daily":{"type":"array","description":"Per-day cost values for this group.","items":{"$ref":"#/components/schemas/DailyReservableCostPoint"}}},"additionalProperties":false},"ApiErrorResponse":{"type":"object","properties":{"message":{"type":"string"},"detail":{"nullable":true},"code":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"timestamp":{"type":"string"},"type":{"type":"string"}},"required":["message","timestamp","type"]},"Error":{"type":"object","properties":{"code":{"type":"integer","description":"Error code"},"status":{"type":"string","description":"Error name"},"message":{"type":"string","description":"Error message"},"errors":{"type":"object","description":"Errors","additionalProperties":{}}},"additionalProperties":false}}},"responses":{"UNPROCESSABLE_CONTENT":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"DEFAULT_ERROR":{"description":"Default error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}