openapi: 3.1.0
info:
description: '### Welcome to the Archera.ai API documentation.
Archera.ai empowers organizations to optimize cloud costs and automate cloud financial operations. Our API enables seamless integration with your internal tools, workflows, and reporting systems. With this API, you can programmatically access commitment plans, metrics, and more, unlocking the full potential of your cloud data.
Whether you''re building custom dashboards, automating cost management, or integrating with third-party platforms, the Archera.ai API provides secure and reliable endpoints to help you achieve your goals.
If you have questions or need support, please contact our team at support@archera.ai.
## API Key Access
To use this API, you need an API key.
### How to Create an API Key
1. Log in to the Archera.ai web application.
2. Navigate to **User Settings > API Access**.
Open Settings
3. Click **Create New API Key**.
4. Copy and securely store your new API key.
### How to Use Your API Key
Use the `x-api-key` header:
```bash
curl -H ''x-api-key: YOUR_API_KEY'' https://api.archera.ai/v1/org/{org_id}/metrics?provider=aws
```
Keep your API key secure. If you believe your key has been compromised, deactivate it in the web application and generate a new one.
### How to find your Organization ID
1. Log in to the Archera.ai web application.
2. Navigate to **User Settings > Organization**.
3. Your Organization ID is displayed at the top of the page. You can also find it in the URL when visiting the Archera app `&orgId=`
'
title: Archera.ai Commitment Plans API
version: v1.0.0
tags:
- name: Commitment Plans
description: API for managing commitment plans
paths:
/v1/org/{org_id}/commitment-plans/{plan_id}:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
get:
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CommitmentPlan'
'404':
description: Not Found
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'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'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}
description: Retrieves detailed information about a specific commitment plan, including costs, savings projections, and commitment coverage.
/v1/org/{org_id}/commitment-plans/{plan_id}/apply:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
post:
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CommitmentPlan'
'404':
description: Not Found
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'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'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}/apply
description: Executes a commitment purchase plan, initiating the commitment purchase process. This action will mark the plan as edited and record the user who initiated the purchase. The plan will then be processed for actual commitment purchases according to the plan specifications.
/v1/org/{org_id}/commitment-plans/default:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: provider
description: Cloud provider to get default plans for
schema:
type: string
enum:
- aws
- azure
- gcp
example: aws
required: true
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CommitmentPlan'
example:
- id: 11111111-1111-1111-1111-111111111111
name: Recommended
description: string
org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b
created_at: '2025-06-01T08:00:00Z'
is_calculating: false
status: active
max_term: string
covered_ondemand_cost_hourly: 3.21
before_ondemand_cost_hourly: 4.56
before_reserved_cost_hourly: 0.0
amortized_cost_hourly: 2.98
recurring_cost_hourly: 0.23
upfront_cost_hourly: 0.0
before_cost_hourly: 4.56
after_cost_hourly: 3.21
total_cost_hourly: 3.44
savings_hourly: 1.12
fee_hourly: 0.1
commitment_coverage: 0.7
minimum_commitment_cost: 1200
breakeven_hours: 300
total_savings: 980
monthly_savings: 82
total_monthly_before_cost: 330
- id: 22222222-2222-2222-2222-222222222222
name: Balanced
description: string
org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b
created_at: '2025-06-01T08:00:00Z'
is_calculating: false
status: active
max_term: string
covered_ondemand_cost_hourly: 4.85
before_ondemand_cost_hourly: 6.5
before_reserved_cost_hourly: 0.0
amortized_cost_hourly: 3.75
recurring_cost_hourly: 0.54
upfront_cost_hourly: 0.0
before_cost_hourly: 6.5
after_cost_hourly: 4.29
total_cost_hourly: 4.83
savings_hourly: 1.67
fee_hourly: 0.15
commitment_coverage: 0.85
minimum_commitment_cost: 2000
breakeven_hours: 450
total_savings: 1460
monthly_savings: 122
total_monthly_before_cost: 440
- id: 33333333-3333-3333-3333-333333333333
name: High Savings
description: string
org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b
created_at: '2025-06-01T08:00:00Z'
is_calculating: false
status: active
max_term: string
covered_ondemand_cost_hourly: 7.25
before_ondemand_cost_hourly: 8.9
before_reserved_cost_hourly: 0.0
amortized_cost_hourly: 5.1
recurring_cost_hourly: 0.85
upfront_cost_hourly: 0.0
before_cost_hourly: 8.9
after_cost_hourly: 5.95
total_cost_hourly: 6.8
savings_hourly: 2.1
fee_hourly: 0.25
commitment_coverage: 0.95
minimum_commitment_cost: 3500
breakeven_hours: 620
total_savings: 2540
monthly_savings: 220
total_monthly_before_cost: 650
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'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'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/default
description: Retrieves the three default Archera commitment plans (High Savings, Balanced, Recommended) for the specified cloud provider. These plans are automatically generated based on the organization's usage patterns. Each plan offers different trade-offs between cost savings and flexibility.
/v1/org/{org_id}/commitment-plans/recommended:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: provider
description: Cloud provider to get the recommended plan for
schema:
type: string
enum:
- aws
- azure
- gcp
example: aws
required: true
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CommitmentPlan'
'204':
description: No Content
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'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'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/recommended
description: Retrieves only the recommended Archera commitment plan for the specified cloud provider. This is the optimal plan automatically selected based on the organization's usage patterns, balancing cost savings with flexibility. Returns a 204 No Content response if no recommended plan is available for the specified provider.
/v1/org/{org_id}/commitment-plans/{plan_id}/line-items:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: order_by
description: Field to order results by
schema:
type:
- string
- 'null'
default: id
enum:
- id
- plan_id
- offer_id
- account_id
- amortized_cost
- upfront_cost
- recurring_cost
- total_cost
- savings
- fee
- covered_ondemand_cost
- before_ondemand_cost
- before_reserved_cost
- covered_units
- before_cost
- monthly_savings
- breakeven_hours
- discount_rate
- monthly_cost
- selected_quantity
- null
- offer.type
- offer.duration_seconds
example: created_at
required: false
- in: query
name: desc
description: Sort in descending order if true
schema:
type:
- boolean
- 'null'
default: null
example: 'true'
required: false
- in: query
name: segment_id
description: Filter line items by segment ID
schema:
type: string
example: 550e8400-e29b-41d4-a716-446655440000
required: false
- in: query
name: resource_match_ids
description: Filter line items by specific resource match IDs
schema:
type: array
example:
- 550e8400-e29b-41d4-a716-446655440000
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8
items:
type: string
format: uuid
required: false
explode: true
style: form
- in: query
name: page
schema:
type: integer
default: 1
minimum: 1
required: false
- in: query
name: page_size
schema:
type: integer
default: 20
minimum: 1
maximum: 100
required: false
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CommitmentPlanLineItem_Exclude_CoveredServices'
headers:
X-Pagination:
$ref: '#/components/headers/PAGINATION'
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'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'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}/line-items
description: Retrieves line items for a specific commitment plan, including offer details, costs, and savings information. Line items represent individual commitment purchases within the plan.
/v1/org/{org_id}/commitment-plans/{plan_id}/resource-matches:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: order_by
description: Field to order results by
schema:
type:
- string
- 'null'
default: covered_ondemand_cost
enum:
- id
- unmatched_units
- total_units
- ondemand_price
- reserved_cost
- explanation_unmatched
- coverage
- ondemand_cost
- covered_ondemand_cost
- before_cost
- after_cost
- covered_units
- average_savings
- average_monthly_savings
- monthly_after_cost
- null
required: false
- in: query
name: desc
description: Sort in descending order if true
schema:
type: boolean
default: true
required: false
- in: query
name: start_date
description: Start date for resource usage data
schema:
type: string
format: date
example: '2024-01-01'
required: true
- in: query
name: end_date
description: End date for resource usage data
schema:
type: string
format: date
example: '2024-01-31'
required: true
- in: query
name: line_item_ids
description: Filter by specific line item IDs
schema:
type: array
example:
- 550e8400-e29b-41d4-a716-446655440000
items:
type: string
format: uuid
required: false
explode: true
style: form
- in: query
name: page
schema:
type: integer
default: 1
minimum: 1
required: false
- in: query
name: page_size
schema:
type: integer
default: 20
minimum: 1
maximum: 100
required: false
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CommitmentPlanResourceMatch'
headers:
X-Pagination:
$ref: '#/components/headers/PAGINATION'
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'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'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}/resource-matches
description: Retrieves resource matches for a specific commitment plan, showing how resources map to commitment purchases with cost and usage details.
/v1/org/{org_id}/commitment-plans/{plan_id}/comparison:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: line_item_ids
description: Optional subset of line items to compare. If omitted, defaults to all selected line items in the plan.
schema:
type:
- array
- 'null'
default: null
items:
type: string
format: uuid
required: false
explode: true
style: form
- in: query
name: contract_terms
description: Optional list of target terms to roll up. If omitted, the response includes a hypothetical for every distinct contract_term that appears in any line item's candidates after the payment-option filter.
schema:
type:
- array
- 'null'
default: null
items:
type: string
enum:
- one_year_gris
- thirty_day_gris
- two_month_gris
- three_month_gris
- four_month_gris
- five_month_gris
- six_month_gris
- seven_month_gris
- eight_month_gris
- nine_month_gris
- ten_month_gris
- eleven_month_gris
- twelve_month_gris
- thirteen_month_gris
- fourteen_month_gris
- fifteen_month_gris
- sixteen_month_gris
- seventeen_month_gris
- eighteen_month_gris
- nineteen_month_gris
- twenty_month_gris
- twenty_one_month_gris
- twenty_two_month_gris
- twenty_three_month_gris
- twenty_four_month_gris
- twenty_five_month_gris
- twenty_six_month_gris
- twenty_seven_month_gris
- twenty_eight_month_gris
- twenty_nine_month_gris
- thirty_month_gris
- thirty_one_month_gris
- thirty_two_month_gris
- thirty_three_month_gris
- thirty_four_month_gris
- thirty_five_month_gris
- one_year
- two_year
- three_year
- five_year
- zero_day
- thirty_day
- two_month
- three_month
- four_month
- five_month
- six_month
- seven_month
- eight_month
- nine_month
- ten_month
- eleven_month
- thirteen_month
- fourteen_month
- fifteen_month
- sixteen_month
- seventeen_month
- eighteen_month
- nineteen_month
- twenty_month
- twenty_one_month
- twenty_two_month
- twenty_three_month
- twenty_five_month
- twenty_six_month
- twenty_seven_month
- twenty_eight_month
- twenty_nine_month
- thirty_month
- thirty_one_month
- thirty_two_month
- thirty_three_month
- thirty_four_month
- thirty_five_month
required: false
explode: true
style: form
- in: query
name: payment_options
description: Payment options to include. Defaults to no_upfront only — most users are uncomfortable with cash at signing, so this matches the default framing for plan comparisons. Pass partial_upfront / all_upfront explicitly to surface those.
schema:
type: array
items:
type: string
enum:
- no_upfront
- partial_upfront
- all_upfront
required: false
explode: true
style: form
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LineItemOfferComparisonResponse'
'400':
description: Bad Request
'404':
description: Not Found
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}/comparison
description: 'Returns per-line-item offer alternatives plus plan-wide rollups for each (contract_term, payment_option) hypothetical. Designed to answer ''what would the plan look like at 3-year'' in a single call: hypothetical_totals carries the rolled-up financials and delta_vs_current, with per-line-item resolution exposed for transparency. Each line item lands at the target term when available, else the longest available term <= target with the same payment option (GRI preferred within tier), else its current term. Defaults: line_item_ids=all selected, contract_terms=all distinct in candidates, payment_options=[no_upfront].'
components:
schemas:
ApiErrorResponse:
type: object
properties:
message:
type: string
detail: {}
code:
type:
- string
- 'null'
url:
type:
- string
- 'null'
timestamp:
type: string
type:
type: string
required:
- message
- timestamp
- type
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
OfferComparisonEntry:
type: object
properties:
is_current:
type: boolean
description: True if this entry matches the line item's current offer + lease. Exactly one entry per response has this set; its `delta_vs_current` values are all zero.
offer_id:
type: string
format: uuid
description: Pass to PUT as `offer_id` to switch the line item to this offer.
offer:
description: Full offer details (type, region, instance, payment_option, etc).
$ref: '#/components/schemas/CommitmentOffer'
lease_menu_item_id:
type:
- string
- 'null'
format: uuid
description: Lease attached to this candidate, or null for none. Pass to PUT as `lease_menu_item_id`.
selected_amount:
type: number
description: Commitment amount this candidate would be sized to — unit count for RIs / unit-based CUDs, dollar-per-hour rate for Savings Plans / spend-based CUDs. Pass to PUT as `selected_amount`; the server routes it to the right underlying column based on offer type.
contract_term:
description: Effective commitment term — derived from the lease lockin hours when `lease_menu_item_id` is set (e.g. '1_year_gris'), else from the offer's own duration (e.g. 'one_year', 'three_year'). This is the real lock-in period, not the offer's raw duration — a Compute Savings Plan offer with a 3-year duration paired with a 1-year lease yields `one_year_gris`, not `three_year`. Prefer this field over `offer.duration_seconds` when describing term length.
type:
- string
- 'null'
enum:
- one_year_gris
- thirty_day_gris
- two_month_gris
- three_month_gris
- four_month_gris
- five_month_gris
- six_month_gris
- seven_month_gris
- eight_month_gris
- nine_month_gris
- ten_month_gris
- eleven_month_gris
- twelve_month_gris
- thirteen_month_gris
- fourteen_month_gris
- fifteen_month_gris
- sixteen_month_gris
- seventeen_month_gris
- eighteen_month_gris
- nineteen_month_gris
- twenty_month_gris
- twenty_one_month_gris
- twenty_two_month_gris
- twenty_three_month_gris
- twenty_four_month_gris
- twenty_five_month_gris
- twenty_six_month_gris
- twenty_seven_month_gris
- twenty_eight_month_gris
- twenty_nine_month_gris
- thirty_month_gris
- thirty_one_month_gris
- thirty_two_month_gris
- thirty_three_month_gris
- thirty_four_month_gris
- thirty_five_month_gris
- one_year
- two_year
- three_year
- five_year
- zero_day
- thirty_day
- two_month
- three_month
- four_month
- five_month
- six_month
- seven_month
- eight_month
- nine_month
- ten_month
- eleven_month
- thirteen_month
- fourteen_month
- fifteen_month
- sixteen_month
- seventeen_month
- eighteen_month
- nineteen_month
- twenty_month
- twenty_one_month
- twenty_two_month
- twenty_three_month
- twenty_five_month
- twenty_six_month
- twenty_seven_month
- twenty_eight_month
- twenty_nine_month
- thirty_month
- thirty_one_month
- thirty_two_month
- thirty_three_month
- thirty_four_month
- thirty_five_month
- null
discount_rate:
type: number
description: Discount rate vs on-demand (0-1) for this candidate.
breakeven_days:
type:
- number
- 'null'
description: Days until this candidate pays for itself. Null if breakeven is undefined (no net savings + no amortized cost).
commitment_upfront_cost:
type: number
description: One-time dollars required at signing for this candidate. NOT a rate — do not sum with monthly-rate fields.
commitment_financials_monthly_rate:
description: Projected economics as 730-hour monthly rates, same shape as on line items and plans.
$ref: '#/components/schemas/CommitmentFinancialsNoRebate'
delta_vs_current:
description: Axis-by-axis difference vs the current offer. All zeros on the `is_current=true` entry.
$ref: '#/components/schemas/OfferComparisonDelta'
required:
- breakeven_days
- commitment_financials_monthly_rate
- commitment_upfront_cost
- contract_term
- delta_vs_current
- discount_rate
- is_current
- lease_menu_item_id
- offer
- offer_id
- selected_amount
additionalProperties: false
LineItemOfferComparisonResponse:
type: object
properties:
current_totals:
description: Plan-wide totals for the line items currently in scope (defaults to all selected, narrowed by line_item_ids if provided). Use this as the baseline when interpreting hypothetical deltas.
$ref: '#/components/schemas/LineItemOfferComparisonTotals'
hypothetical_totals:
type: array
description: One entry per (contract_term, payment_option) combination requested (or per distinct term present in candidates if contract_terms was omitted). Each entry's totals + delta_vs_current answer 'what's the plan-wide impact of this term?' in one place — no client-side summing across line items required.
items:
$ref: '#/components/schemas/HypotheticalTotal'
data:
type: array
description: Per-line-item detail. Use when the user wants to drill into 'why does RDS not have a 3-year candidate' or to assemble an update payload.
items:
$ref: '#/components/schemas/LineItemOfferComparisonRow'
required:
- current_totals
- data
- hypothetical_totals
additionalProperties: false
CommitmentPlanLineItem_Exclude_CoveredServices:
type: object
properties:
id:
type: string
format: uuid
plan_id:
type: string
format: uuid
offer_id:
type: string
format: uuid
lease_menu_item_id:
type:
- string
- 'null'
format: uuid
account_id:
type:
- string
- 'null'
recommended_quantity:
type: integer
description: Recommended number of units to purchase
selected_quantity:
type: integer
description: Selected number of units to purchase
recommended_commitment:
type: number
description: Recommended hourly commitment amount ($/hour for Savings Plans, 0 for instance RIs)
selected_commitment:
type: number
description: Selected hourly commitment amount ($/hour for Savings Plans, 0 for instance RIs)
is_selected:
type: boolean
description: Whether this line item is selected for purchase
after_amortized_cost:
type: number
description: Hourly amortized cost of the commitment (upfront + recurring)
upfront_cost:
type: number
description: Total upfront payment required (not hourly rate)
recurring_cost:
type: number
description: Hourly recurring cost
before_cost:
type: number
description: Total hourly cost before this commitment (ondemand + existing reservations)
before_ondemand_cost:
type: number
description: Hourly ondemand cost before this commitment
before_reserved_cost:
type: number
description: Hourly reserved cost from existing commitments
covered_ondemand_cost:
type: number
description: Hourly ondemand cost that will be covered by this commitment
after_covered_units:
type: number
description: Units that will be covered after the plan is applied
total_cost:
type: number
description: Total cost of this commitment over its full term
monthly_cost:
type: number
description: Monthly cost of this commitment
savings:
type: number
description: Hourly savings compared to ondemand pricing
monthly_savings:
type: number
description: Average monthly savings compared to ondemand pricing
total_savings:
type: number
description: Total savings over the commitment term
fee:
type: number
description: Estimated Archera premium (hourly) based on quoted maximum savings. See https://www.archera.ai/pricing for details.
discount_rate:
type: number
description: Discount percentage vs ondemand
breakeven_hours:
type: number
description: Hours of usage needed until the achieved savings is greater than the remaining commitment for this line item
contract_term:
description: Commitment term (e.g., 'one_year_gris', 'thirty_day_gris')
type: string
enum:
- one_year_gris
- thirty_day_gris
- two_month_gris
- three_month_gris
- four_month_gris
- five_month_gris
- six_month_gris
- seven_month_gris
- eight_month_gris
- nine_month_gris
- ten_month_gris
- eleven_month_gris
- twelve_month_gris
- thirteen_month_gris
- fourteen_month_gris
- fifteen_month_gris
- sixteen_month_gris
- seventeen_month_gris
- eighteen_month_gris
- nineteen_month_gris
- twenty_month_gris
- twenty_one_month_gris
- twenty_two_month_gris
- twenty_three_month_gris
- twenty_four_month_gris
- twenty_five_month_gris
- twenty_six_month_gris
- twenty_seven_month_gris
- twenty_eight_month_gris
- twenty_nine_month_gris
- thirty_month_gris
- thirty_one_month_gris
- thirty_two_month_gris
- thirty_three_month_gris
- thirty_four_month_gris
- thirty_five_month_gris
- one_year
- two_year
- three_year
- five_year
- zero_day
- thirty_day
- two_month
- three_month
- four_month
- five_month
- six_month
- seven_month
- eight_month
- nine_month
- ten_month
- eleven_month
- thirteen_month
- fourteen_month
- fifteen_month
- sixteen_month
- seventeen_month
- eighteen_month
- nineteen_month
- twenty_month
- twenty_one_month
- twenty_two_month
- twenty_three_month
- twenty_five_month
- twenty_six_month
- twenty_seven_month
- twenty_eight_month
- twenty_nine_month
- thirty_month
- thirty_one_month
- thirty_two_month
- thirty_three_month
- thirty_four_month
- thirty_five_month
payment_option:
description: Payment structure (No Upfront, Partial Upfront, All Upfront)
enum:
- No Upfront
- Partial Upfront
- All Upfront
contract_spec:
description: Detailed contract specifications including commitment type and properties
$ref: '#/components/schemas/PurchasePlanContractSpec'
offer:
description: Detailed information about the commitment offer
$ref: '#/components/schemas/PublicCommitmentOffer'
required:
- account_id
- after_amortized_cost
- after_covered_units
- before_cost
- before_ondemand_cost
- before_reserved_cost
- breakeven_hours
- contract_spec
- contract_term
- covered_ondemand_cost
- discount_rate
- fee
- id
- is_selected
- lease_menu_item_id
- monthly_cost
- monthly_savings
- offer
- offer_id
- payment_option
- plan_id
- recommended_commitment
- recommended_quantity
- recurring_cost
- savings
- selected_commitment
- selected_quantity
- total_cost
- total_savings
- upfront_cost
additionalProperties: false
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
HypotheticalDelta:
type: object
properties:
monthly_net_savings:
type: number
description: Hypothetical's monthly net savings minus current_totals'. Positive means switching saves more than the plan does today.
monthly_commitment_cost:
type: number
description: Hypothetical's monthly commitment cost minus current_totals'. Positive means more dollars committed monthly.
upfront_cost:
type: number
description: Hypothetical's one-time upfront cost minus current_totals'. NOT a rate.
required:
- monthly_commitment_cost
- monthly_net_savings
- upfront_cost
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).
$ref: '#/components/schemas/CloudProviderCostBreakdown'
additionalProperties: false
PurchasePlanContractSpec:
type: object
properties:
commitment_type:
type: string
properties:
type: object
default: {}
additionalProperties: {}
term:
default: null
type:
- string
- 'null'
enum:
- one_year_gris
- thirty_day_gris
- two_month_gris
- three_month_gris
- four_month_gris
- five_month_gris
- six_month_gris
- seven_month_gris
- eight_month_gris
- nine_month_gris
- ten_month_gris
- eleven_month_gris
- twelve_month_gris
- thirteen_month_gris
- fourteen_month_gris
- fifteen_month_gris
- sixteen_month_gris
- seventeen_month_gris
- eighteen_month_gris
- nineteen_month_gris
- twenty_month_gris
- twenty_one_month_gris
- twenty_two_month_gris
- twenty_three_month_gris
- twenty_four_month_gris
- twenty_five_month_gris
- twenty_six_month_gris
- twenty_seven_month_gris
- twenty_eight_month_gris
- twenty_nine_month_gris
- thirty_month_gris
- thirty_one_month_gris
- thirty_two_month_gris
- thirty_three_month_gris
- thirty_four_month_gris
- thirty_five_month_gris
- one_year
- two_year
- three_year
- five_year
- zero_day
- thirty_day
- two_month
- three_month
- four_month
- five_month
- six_month
- seven_month
- eight_month
- nine_month
- ten_month
- eleven_month
- thirteen_month
- fourteen_month
- fifteen_month
- sixteen_month
- seventeen_month
- eighteen_month
- nineteen_month
- twenty_month
- twenty_one_month
- twenty_two_month
- twenty_three_month
- twenty_five_month
- twenty_six_month
- twenty_seven_month
- twenty_eight_month
- twenty_nine_month
- thirty_month
- thirty_one_month
- thirty_two_month
- thirty_three_month
- thirty_four_month
- thirty_five_month
- null
payment_option:
default: null
type:
- string
- 'null'
enum:
- no_upfront
- partial_upfront
- all_upfront
- null
required:
- commitment_type
additionalProperties: false
CommitmentPlanResourceMatch:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the resource match
total_units:
type: number
description: Total resource usage units
before_uncovered_units:
type: number
description: Units not covered at the moment (before this plan)
after_covered_units:
type: number
description: Units that will be covered after the plan is applied
after_uncovered_units:
type: number
description: Units that will remain uncovered after the plan to avoid overcommit
ondemand_price:
type: number
description: Ondemand cost per unit-hour
if_all_ondemand_cost:
type: number
description: Hourly cost if paying all the units with ondemand price
before_ondemand_cost:
type: number
description: Current hourly ondemand cost for units not covered by existing commitments
after_ondemand_cost:
type: number
description: Hourly ondemand cost remaining after applying this plan
covered_ondemand_cost:
type: number
description: Hourly ondemand cost for units that will be covered by this plan
before_reserved_cost:
type: number
description: Hourly cost from current/existing reservations for this resource
after_reserved_cost:
type: number
description: Hourly commitment/reserved cost after applying this plan
before_cost:
type: number
description: Total hourly cost before applying this plan (ondemand + reserved costs)
after_cost:
type: number
description: Total hourly cost after applying this plan
monthly_before_cost:
type: number
description: Total monthly cost before applying this plan
monthly_after_cost:
type: number
description: Total monthly cost after applying this plan
monthly_after_reserved_cost:
type: number
description: Monthly reserved/commitment cost portion after applying this plan
monthly_after_ondemand_cost:
type: number
description: Monthly ondemand cost portion after applying this plan
average_savings:
type: number
description: Average hourly savings from this plan
average_monthly_savings:
type: number
description: Average monthly savings from this plan
usage_type:
description: Type of resource usage
type: string
enum:
- running
- resource
- requests
- gb_seconds
- gb_hours
- cpu_hours
- cpu_utilization
- os_hours
- units_per_month
- gb_per_month
- provisioned_concurrency_gb_seconds
- provisioned_duration_gb_seconds
- unknown
coverage:
type: number
description: Percentage of total units that will be covered by commitments (0-1)
resource:
description: Detailed resource information including provider, service, and instance details etc
anyOf:
- $ref: '#/components/schemas/ResourceSKU'
- type: 'null'
required:
- after_cost
- after_covered_units
- after_ondemand_cost
- after_reserved_cost
- after_uncovered_units
- average_monthly_savings
- average_savings
- before_cost
- before_ondemand_cost
- before_reserved_cost
- before_uncovered_units
- coverage
- covered_ondemand_cost
- id
- if_all_ondemand_cost
- monthly_after_cost
- monthly_after_ondemand_cost
- monthly_after_reserved_cost
- monthly_before_cost
- ondemand_price
- resource
- total_units
- usage_type
additionalProperties: false
OfferComparisonDelta:
type: object
properties:
monthly_net_savings:
type: number
description: Candidate's monthly net savings minus the current line item's.
upfront_cost:
type: number
description: Candidate's one-time upfront cost minus the current line item's. NOT a rate. Negative is less cash required at signing.
discount_rate:
type: number
description: Candidate's discount rate minus the current line item's (0-1 basis).
breakeven_days:
type:
- number
- 'null'
description: Candidate's breakeven_days minus the current line item's. Null if either side has no finite breakeven.
required:
- discount_rate
- monthly_net_savings
- upfront_cost
additionalProperties: false
HypotheticalTotal:
type: object
properties:
contract_term:
description: Target contract term for this hypothetical.
type:
- string
- 'null'
enum:
- one_year_gris
- thirty_day_gris
- two_month_gris
- three_month_gris
- four_month_gris
- five_month_gris
- six_month_gris
- seven_month_gris
- eight_month_gris
- nine_month_gris
- ten_month_gris
- eleven_month_gris
- twelve_month_gris
- thirteen_month_gris
- fourteen_month_gris
- fifteen_month_gris
- sixteen_month_gris
- seventeen_month_gris
- eighteen_month_gris
- nineteen_month_gris
- twenty_month_gris
- twenty_one_month_gris
- twenty_two_month_gris
- twenty_three_month_gris
- twenty_four_month_gris
- twenty_five_month_gris
- twenty_six_month_gris
- twenty_seven_month_gris
- twenty_eight_month_gris
- twenty_nine_month_gris
- thirty_month_gris
- thirty_one_month_gris
- thirty_two_month_gris
- thirty_three_month_gris
- thirty_four_month_gris
- thirty_five_month_gris
- one_year
- two_year
- three_year
- five_year
- zero_day
- thirty_day
- two_month
- three_month
- four_month
- five_month
- six_month
- seven_month
- eight_month
- nine_month
- ten_month
- eleven_month
- thirteen_month
- fourteen_month
- fifteen_month
- sixteen_month
- seventeen_month
- eighteen_month
- nineteen_month
- twenty_month
- twenty_one_month
- twenty_two_month
- twenty_three_month
- twenty_five_month
- twenty_six_month
- twenty_seven_month
- twenty_eight_month
- twenty_nine_month
- thirty_month
- thirty_one_month
- thirty_two_month
- thirty_three_month
- thirty_four_month
- thirty_five_month
- null
payment_option:
description: Target payment option for this hypothetical.
type: string
enum:
- no_upfront
- partial_upfront
- all_upfront
commitment_financials_monthly_rate:
description: Rolled-up monthly-rate financials assuming each line item adopts its candidate per the fallback rule. Same shape as on plans / line items.
$ref: '#/components/schemas/CommitmentFinancialsNoRebate'
commitment_upfront_cost:
type: number
description: Sum of one-time upfront dollars across the line items under this hypothetical. NOT a rate.
delta_vs_current:
description: Axis-by-axis difference vs current_totals. The headline 'should I do this' answer is delta_vs_current.monthly_net_savings.
$ref: '#/components/schemas/HypotheticalDelta'
line_items:
type: array
description: Per-line-item resolution for this hypothetical. Use to call out fallbacks ('14 of 20 line items would land at 3-year; 5 would fall back to 1-year GRI; 1 has no shorter alternative and stays at current').
items:
$ref: '#/components/schemas/HypotheticalLineItem'
required:
- commitment_financials_monthly_rate
- commitment_upfront_cost
- contract_term
- delta_vs_current
- line_items
- payment_option
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
HypotheticalLineItem:
type: object
properties:
line_item_id:
type: string
format: uuid
description: Line item ID.
actual_term:
description: The contract term this line item actually contributes to the rollup at. Equals the target term when an exact match exists; otherwise the longest available term <= target with the same payment option, or the line item's current term as a last resort.
type:
- string
- 'null'
enum:
- one_year_gris
- thirty_day_gris
- two_month_gris
- three_month_gris
- four_month_gris
- five_month_gris
- six_month_gris
- seven_month_gris
- eight_month_gris
- nine_month_gris
- ten_month_gris
- eleven_month_gris
- twelve_month_gris
- thirteen_month_gris
- fourteen_month_gris
- fifteen_month_gris
- sixteen_month_gris
- seventeen_month_gris
- eighteen_month_gris
- nineteen_month_gris
- twenty_month_gris
- twenty_one_month_gris
- twenty_two_month_gris
- twenty_three_month_gris
- twenty_four_month_gris
- twenty_five_month_gris
- twenty_six_month_gris
- twenty_seven_month_gris
- twenty_eight_month_gris
- twenty_nine_month_gris
- thirty_month_gris
- thirty_one_month_gris
- thirty_two_month_gris
- thirty_three_month_gris
- thirty_four_month_gris
- thirty_five_month_gris
- one_year
- two_year
- three_year
- five_year
- zero_day
- thirty_day
- two_month
- three_month
- four_month
- five_month
- six_month
- seven_month
- eight_month
- nine_month
- ten_month
- eleven_month
- thirteen_month
- fourteen_month
- fifteen_month
- sixteen_month
- seventeen_month
- eighteen_month
- nineteen_month
- twenty_month
- twenty_one_month
- twenty_two_month
- twenty_three_month
- twenty_five_month
- twenty_six_month
- twenty_seven_month
- twenty_eight_month
- twenty_nine_month
- thirty_month
- thirty_one_month
- thirty_two_month
- thirty_three_month
- thirty_four_month
- thirty_five_month
- null
actual_payment_option:
description: Payment option of the candidate this line item contributes. Equals the target payment option except when actual_term_reason='no_alternative' (falls back to current, which may have a different payment option).
type:
- string
- 'null'
enum:
- no_upfront
- partial_upfront
- all_upfront
- null
actual_term_reason:
type: string
enum:
- exact_match
- fallback_closest_shorter
- no_alternative
description: Why this line item landed at actual_term. exact_match = target available; fallback_closest_shorter = used the longest available term <= target with same payment option; no_alternative = nothing qualified, kept at current.
required:
- actual_payment_option
- actual_term
- actual_term_reason
- line_item_id
additionalProperties: false
LineItemOfferComparisonRow:
type: object
properties:
line_item_id:
type: string
format: uuid
description: Line item ID.
current:
description: The line item's current offer + lease, in the same shape as OfferComparisonEntrySchema. Its delta_vs_current is all zeros.
$ref: '#/components/schemas/OfferComparisonEntry'
candidates:
type: array
description: Alternative (offer, lease) pairs for this line item, filtered to the requested contract_terms and payment_options. Each entry carries its own contract_term and payment_option (on offer); fields offer_id, lease_menu_item_id, and selected_amount can be copied verbatim into POST /commitment-plans/{plan_id}/line-items/update (in the `updates` list) to swap the line item to that candidate.
items:
$ref: '#/components/schemas/OfferComparisonEntry'
required:
- candidates
- current
- line_item_id
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
CommitmentPlan:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
description:
type:
- string
- 'null'
org_id:
type: string
format: uuid
created_at:
type: string
format: date-time
is_calculating:
type: boolean
status:
enum:
- new
- reviewed
- scheduled
- completed
- draft
- needs_review
- in_progress
max_term:
type:
- string
- 'null'
covered_ondemand_cost_hourly:
type: number
before_ondemand_cost_hourly:
type: number
before_reserved_cost_hourly:
type: number
amortized_cost_hourly:
type: number
recurring_cost_hourly:
type: number
upfront_cost_hourly:
type: number
before_cost_hourly:
type: number
after_cost_hourly:
type: number
total_cost_hourly:
type: number
savings_hourly:
type: number
fee_hourly:
type: number
commitment_coverage:
type: number
minimum_commitment_cost:
type: number
breakeven_hours:
type: number
total_savings:
type: number
monthly_savings:
type: number
total_monthly_before_cost:
type: number
required:
- after_cost_hourly
- amortized_cost_hourly
- before_cost_hourly
- before_ondemand_cost_hourly
- before_reserved_cost_hourly
- breakeven_hours
- commitment_coverage
- covered_ondemand_cost_hourly
- created_at
- fee_hourly
- id
- is_calculating
- max_term
- minimum_commitment_cost
- monthly_savings
- name
- org_id
- recurring_cost_hourly
- savings_hourly
- status
- total_cost_hourly
- total_monthly_before_cost
- total_savings
- upfront_cost_hourly
additionalProperties: false
LineItemOfferComparisonTotals:
type: object
properties:
commitment_financials_monthly_rate:
description: 730-hour monthly rate financials summed across the line items in scope. Same shape as on plans / line items.
$ref: '#/components/schemas/CommitmentFinancialsNoRebate'
commitment_upfront_cost:
type: number
description: Sum of one-time upfront dollars at signing across the line items in scope. NOT a rate — do not sum with monthly-rate fields.
required:
- commitment_financials_monthly_rate
- commitment_upfront_cost
additionalProperties: false
PublicCommitmentOffer:
type: object
properties:
id:
type: string
format: uuid
provider:
type: string
enum:
- aws
- azure
- gcp
provider_offering_id:
type: string
type:
type: string
display_name:
type:
- string
- 'null'
leased_display_name:
type:
- string
- 'null'
region:
type:
- string
- 'null'
duration_seconds:
type: number
upfront_cost:
type: number
recurring_cost:
type: number
offering_class:
enum:
- standard
- convertible
- null
payment_option:
enum:
- No Upfront
- Partial Upfront
- All Upfront
- null
offering_id:
type:
- string
- 'null'
product_description:
type:
- string
- 'null'
instance_family:
type:
- string
- 'null'
instance_type:
type:
- string
- 'null'
tenancy:
type:
- string
- 'null'
az:
type:
- string
- 'null'
is_multi_az:
type:
- boolean
- 'null'
is_flexible:
type:
- boolean
- 'null'
plan_type:
type:
- string
- 'null'
required:
- az
- display_name
- duration_seconds
- id
- instance_family
- instance_type
- is_flexible
- is_multi_az
- leased_display_name
- offering_id
- plan_type
- product_description
- provider
- provider_offering_id
- recurring_cost
- region
- tenancy
- type
- upfront_cost
additionalProperties: false
CommitmentOffer:
type: object
properties:
id:
type: string
format: uuid
description: Offer identifier
provider:
description: Cloud provider (aws, azure, gcp)
type: string
enum:
- aws
- azure
- gcp
type:
type: string
description: Commitment type (e.g. 'ri', 'savings_plan', 'cud')
region:
type:
- string
- 'null'
description: Cloud region (e.g. 'us-east-1')
duration_seconds:
type: integer
description: Total commitment duration in seconds
instance_type:
type:
- string
- 'null'
description: Instance type (e.g. 'm5.xlarge'), null for Savings Plans
instance_family:
type:
- string
- 'null'
description: Instance family (e.g. 'm5'), null for some commitment types
offering_class:
description: Offering class (e.g. 'standard', 'convertible')
type:
- string
- 'null'
enum:
- standard
- convertible
- null
payment_option:
description: Payment option (e.g. 'no_upfront', 'partial_upfront', 'all_upfront')
type:
- string
- 'null'
enum:
- no_upfront
- partial_upfront
- all_upfront
- null
plan_type:
type:
- string
- 'null'
description: Plan type (e.g. 'Compute', 'EC2Instance')
product_description:
type:
- string
- 'null'
description: Product description (e.g. 'Linux/UNIX')
display_name:
type:
- string
- 'null'
description: Human-readable offer name
guaranteed_display_name:
type:
- string
- 'null'
description: Offer name when purchased as an Archera Guaranteed Commitment
is_flexible:
type:
- boolean
- 'null'
description: Whether the commitment has instance size flexibility
additionalProperties: false
ResourceSKU:
type: object
properties:
id:
type: string
resource_id:
type: string
format: uuid
description: Unique identifier for the underlying resource
provider:
type: string
enum:
- aws
- azure
- gcp
provider_resource_id:
type: string
description: Provider's unique identifier (e.g., ARN for AWS)
example: arn:aws:ec2:us-west-2:123456789012:instance/i-1234567890abcdef0
is_spot:
type: boolean
description: Whether this is a spot instance (a way to utilize unused instances)
name:
type:
- string
- 'null'
resource_group:
type:
- string
- 'null'
description: Azure resource group
usage_end:
type: string
format: date
description: Last date this resource had usage
usage_start:
type: string
format: date
description: First date this resource had usage
tags:
type: object
additionalProperties:
type: string
created_at:
type: string
format: date
updated_at:
type: string
format: date
instance_id:
readOnly: true
type: string
billing_account_id:
type: string
description: Management account ID (AWS) or billing account ID (Azure/GCP)
sub_account_id:
type: string
description: Account ID where the resource is running
management_account_id:
readOnly: true
description: Management account ID (AWS) or billing account ID (Azure/GCP)
deprecated: true
type: string
owner_account_id:
readOnly: true
description: Account ID where the resource is running
deprecated: true
type: string
sku_title:
readOnly: true
type: string
sku_name:
type:
- string
- 'null'
availability_zone:
type:
- string
- 'null'
cache_engine:
type:
- string
- 'null'
description: Cache engine type (e.g., Redis, Memcached)
database_engine:
type:
- string
- 'null'
description: Database engine type (e.g., MySQL, PostgreSQL)
description:
type:
- string
- 'null'
family:
type:
- string
- 'null'
description: Service or product family (e.g., 'Compute', 'Storage')
full_region_name:
type:
- string
- 'null'
has_ondemand_terms:
type:
- boolean
- 'null'
description: Whether on-demand pricing is available for this SKU
instance_type:
type:
- string
- 'null'
description: Instance type (e.g., 'm5.large', 'Standard_D4s_v3')
instance_type_family:
type:
- string
- 'null'
description: Instance family (e.g., 'm5', 'Standard_D')
is_reservable:
type:
- boolean
- 'null'
description: Whether this resource type supports reservations/commitments
license_model:
type:
- string
- 'null'
location_type:
type:
- string
- 'null'
normalization_size_factor:
type:
- string
- 'null'
operating_system:
type:
- string
- 'null'
pre_installed_sw:
type:
- string
- 'null'
price_currency:
type:
- string
- 'null'
provider_service:
type:
- string
- 'null'
provider_sku_id:
type:
- string
- 'null'
publication_date:
type:
- string
- 'null'
region:
type:
- string
- 'null'
service:
type:
- string
- 'null'
description: Service name (e.g., 'Amazon Elastic Compute Cloud')
tenancy:
type:
- string
- 'null'
usage_type:
type:
- string
- 'null'
version:
type:
- string
- 'null'
vpc_networking_support:
type:
- boolean
- 'null'
ondemand_usage_unit:
type:
- string
- 'null'
required:
- billing_account_id
- created_at
- id
- is_spot
- management_account_id
- owner_account_id
- provider
- provider_resource_id
- resource_id
- sub_account_id
- tags
- updated_at
- usage_end
- usage_start
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
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
PaginationMetadata:
type: object
properties:
total:
type: integer
description: Total number of items.
total_pages:
type: integer
description: Total number of pages.
first_page:
type: integer
description: First available page number.
last_page:
type: integer
description: Last available page number.
page:
type: integer
description: Current page number.
previous_page:
type: integer
description: Previous page number.
next_page:
type: integer
description: Next page number.
additionalProperties: false
responses:
DEFAULT_ERROR:
description: Default error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
UNPROCESSABLE_CONTENT:
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
PAGINATION:
description: Pagination metadata
schema:
$ref: '#/components/schemas/PaginationMetadata'